怎样动态获取数据表中得字段结构(50分)

  • 主题发起人 主题发起人 fhlong
  • 开始时间 开始时间
F

fhlong

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样动态获取数据表中得字段结构
 
是SQL Server吗?
sp_columns 存储过程
 
给你一段程序
with Table1 do begin
DisableControls;
Close;
DatabaseName := EditAlias.Text;
TableName := CbTable.Items[CbTable.ItemIndex];
IndexName := '';
Open;
EditRegistros.Text := IntToStr(RecordCount);
GetIndexNames(CbIndex.Items);

{To happen the characteristic of the fields to the grid}
with SGrid1 do begin
‘SGRID1为STRINGGRID
Cells[0,0] := 'Fields';
Cells[1,0] := 'Type';
Cells[2,0] := 'Size';
Cells[3,0] := 'Required';
RowCount := FieldCount + 1;
for K := 0 to FieldCount - 1 do begin
Cells[0,k+1] := FieldDefs.Items[k].Name;
Cells[1,k+1] := GetFieldType(FieldDefs.Items[k].DataType);

case FieldDefs.Items[k].DataType of
ftString, ftBCD, ftBytes, ftVarBytes, ftBlob,
ftMemo , ftGraphic : Cells[2,k+1] := IntToStr(Table1.FieldDefs.Items[K].Size);
else
Cells[2,k+1] := '';
end;
if FieldDefs.Items[K].Required then Cells[3,k+1] := 'True'
else Cells[3,k+1] := 'False';
end;
end;

Close;
EnableControls;
end;
 
我使用Sybase.
cqsssco:
谢谢,你的程序有效但系统不认识GetFieldType()此函数如何使用!请教
 
TQuery.Fields.Fields.DataType就可知道他的数据类型
DataType在Delphi中定义如下:
type TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger,
ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime,
ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo,
ftGraphic, ftFmtMemo, ftParadoxOle, ftDBaseOle, ftTypedBinary,
ftCursor, ftFixedChar, ftWideString, ftLargeint, ftADT, ftArray,
ftReference, ftDataSet);

 
运行时候的逻辑字段用TTable.Fields
物理字段用TTable.FieldDefs
 
多人接受答案了。
 
逻辑字段和物理字段有什么区别?
 
后退
顶部