internal static string GetLayer(TableResolver resolver, DbTreeDefinition tree, string parentId) { TkDbContext context = resolver.Context; IFieldInfo layerField = resolver.GetFieldInfo(tree.LayerField); IParamBuilder fixBuilder = resolver.CreateFixCondition(); string execRootId = tree.ExecuteRootId; if (execRootId == parentId) { string subStringSql = context.ContextConfig.GetFunction("SubString", layerField.FieldName, 1, 3); string sql = string.Format(ObjectUtil.SysCulture, "SELECT MAX({0}) FROM {1}", subStringSql, resolver.TableName); string value = (fixBuilder == null ? DbUtil.ExecuteScalar(sql, context) : DbUtil.ExecuteScalar(sql, context, fixBuilder)).ToString(); if (string.IsNullOrEmpty(value)) { return("000"); } else { return(AddLayer(value)); } } else { try { string sql = string.Format(ObjectUtil.SysCulture, "SELECT {0} FROM {1}", layerField.FieldName, resolver.TableName); IParamBuilder builder = ParamBuilder.CreateParamBuilder(fixBuilder, SqlParamBuilder.CreateEqualSql(context, resolver.GetFieldInfo(tree.IdField), parentId)); string topLayer = DbUtil.ExecuteScalar(sql, context, builder).ToString(); string subStringSql = context.ContextConfig.GetFunction("SubString", layerField.FieldName, topLayer.Length + 1, 3); builder = CreateLayerParamBuilder(context, layerField, topLayer); builder = SqlParamBuilder.CreateParamBuilder(fixBuilder, builder); sql = string.Format(ObjectUtil.SysCulture, "SELECT MAX({0}) FROM {1}", subStringSql, resolver.TableName); string value = DbUtil.ExecuteScalar(sql, context, builder).ToString().Trim(); if (string.IsNullOrEmpty(value)) { DataRow parentRow = resolver.SelectRowWithParam(tree.IdField, parentId); parentRow[tree.LeafField] = 0; resolver.SetCommands(AdapterCommand.Update); return(topLayer + "000"); } else { return(topLayer + AddLayer(value.Substring(value.Length - 3))); } } catch { return(string.Empty); } } }
private static IParamBuilder CreateLayerParamBuilder(TkDbContext context, IFieldInfo layer, string topLayer) { string fieldName = layer.FieldName; IParamBuilder builder = SqlParamBuilder.CreateParamBuilder( SqlParamBuilder.CreateSingleSql(context, layer, "!=", fieldName + "0", topLayer), SqlParamBuilder.CreateSingleSql(context, layer, "LIKE", fieldName + "1", topLayer + "%")); return(builder); }
public override IParamBuilder GetCondition(IFieldInfo fieldName, string fieldValue) { try { DateTime date = DateTime.Parse(fieldValue, ObjectUtil.SysCulture); IParamBuilder builder1 = SqlParamBuilder.CreateSingleSql(Context, fieldName, ">=", fieldName.FieldName, date); IParamBuilder builder2 = SqlParamBuilder.CreateSingleSql(Context, fieldName, "<", fieldName.FieldName + "END", date.AddDays(1)); return(SqlParamBuilder.CreateParamBuilder(builder1, builder2)); } catch { return(SqlParamBuilder.NoResult); } }
private IEnumerable <ITreeNode> SelectChildNode(string parentId, int level) { string value = fProvider.GetSqlLikeValue(fDefinition, level, parentId); IFieldInfo fieldInfo = fSelector.GetFieldInfo(fDefinition.IdField); IParamBuilder builder = SqlParamBuilder.CreateSingleSql(fSelector.Context, fieldInfo, "LIKE", value); if (!string.IsNullOrEmpty(parentId)) { builder = SqlParamBuilder.CreateParamBuilder(builder, SqlParamBuilder.CreateSingleSql(fSelector.Context, fieldInfo, "<>", fDefinition.IdField + 1, parentId)); } return(TreeUtil.SelectData(fSelector, this, () => fSelector.Select(builder), null).ToArray()); }
internal static void SetParentLeaf(TableResolver resolver, DbTreeDefinition fields, string parentId) { //DataTable table = resolver.HostTable; string sql = string.Format(ObjectUtil.SysCulture, "SELECT COUNT(*) FROM {0}", resolver.TableName); IParamBuilder builder = SqlParamBuilder.CreateEqualSql( resolver.Context, resolver.GetFieldInfo(fields.ParentIdField), parentId); builder = SqlParamBuilder.CreateParamBuilder(resolver.CreateFixCondition(), builder); int count = DbUtil.ExecuteScalar(sql, resolver.Context, builder).Value <int>(); if (count == 1) { DataRow row = resolver.TrySelectRowWithParam(fields.IdField, parentId); if (row != null) { row[fields.LeafField] = 1; } } }