コード例 #1
0
ファイル: EditControl.cs プロジェクト: cool8868/H5Nball
        private void SetFieldList()
        {
            StringBuilder builder = new StringBuilder();

            builder.Append("SELECT");
            builder.Append(" FieldName=C.name,");
            builder.Append(" FieldDescn=ISNULL(PFD.[value],C.name),");
            builder.Append(" FieldType=T.name,");
            builder.Append(" FieldLen=C.max_length,");
            builder.Append(" DefaultValue=D.definition");
            builder.Append(" FROM sys.columns C");
            builder.Append(" INNER JOIN sys.objects O");
            builder.Append(" ON C.[object_id]=O.[object_id]");
            builder.Append(" AND O.type='U'");
            builder.Append(" AND O.is_ms_shipped=0");
            builder.Append(" INNER JOIN sys.types T");
            builder.Append(" ON C.user_type_id=T.user_type_id");
            builder.Append(" LEFT JOIN sys.default_constraints D");
            builder.Append(" ON C.[object_id]=D.parent_object_id");
            builder.Append(" AND C.column_id=D.parent_column_id");
            builder.Append(" AND C.default_object_id=D.[object_id]");
            builder.Append(" LEFT JOIN sys.extended_properties PFD");
            builder.Append(" ON PFD.class=1 ");
            builder.Append(" AND C.[object_id]=PFD.major_id");
            builder.Append(" AND C.column_id=PFD.minor_id");
            builder.Append(" LEFT JOIN sys.extended_properties PTB");
            builder.Append(" ON PTB.class=1");
            builder.Append(" AND PTB.minor_id=0 ");
            builder.Append(" AND C.[object_id]=PTB.major_id");
            builder.Append(" LEFT JOIN ");
            builder.Append(" (");
            builder.Append(" SELECT ");
            builder.Append(" IDXC.[object_id],");
            builder.Append(" IDXC.column_id,");
            builder.Append(
                " Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')");
            builder.Append(" WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,");
            builder.Append(" PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'1'ELSE N'0' END,");
            builder.Append(" IndexName=IDX.Name");
            builder.Append(" FROM sys.indexes IDX");
            builder.Append(" INNER JOIN sys.index_columns IDXC");
            builder.Append(" ON IDX.[object_id]=IDXC.[object_id]");
            builder.Append(" AND IDX.index_id=IDXC.index_id");
            builder.Append(" LEFT JOIN sys.key_constraints KC");
            builder.Append(" ON IDX.[object_id]=KC.[parent_object_id]");
            builder.Append(" AND IDX.index_id=KC.unique_index_id");
            builder.Append(" INNER JOIN");
            builder.Append(" (");
            builder.Append(" SELECT [object_id], Column_id, index_id=MIN(index_id)");
            builder.Append(" FROM sys.index_columns");
            builder.Append(" GROUP BY [object_id], Column_id");
            builder.Append(" ) IDXCUQ");
            builder.Append(" ON IDXC.[object_id]=IDXCUQ.[object_id]");
            builder.Append(" AND IDXC.Column_id=IDXCUQ.Column_id");
            builder.Append(" AND IDXC.index_id=IDXCUQ.index_id");
            builder.Append(" ) IDX");
            builder.Append(" ON C.[object_id]=IDX.[object_id]");
            builder.Append(" AND C.column_id=IDX.column_id ");
            builder.Append(" WHERE O.name='" + this.TableName + "' ");
            builder.Append(" ORDER BY O.name,C.column_id");
            DataTable table = null;

            try
            {
                table =
                    MyControl_SqlHelper.ExecuteDataset(this.DevConnStr, CommandType.Text, builder.ToString(), new SqlParameter[0])
                    .Tables[0];
                if ((table != null) && (table.Rows.Count > 0))
                {
                    foreach (DataRow row in table.Rows)
                    {
                        EditFieldParam item = new EditFieldParam();
                        item.FieldName  = row[0].ToString();
                        item.FieldDescN = row[1].ToString().Trim();
                        item.FieldType  = this.GetFieldType(row[2].ToString().ToLower());
                        item.FieldLen   = MyControl_FilterHelper.GetIntZero(row[3]);
                        this.fieldList.Add(item);
                    }
                }
            }
            catch
            {
            }
        }