说明用下面的函数取,速度可能有点慢uses comobj;function GetFiledDescript(FieldName: string): string; var DbEng: variant; TblDef: variant; DAOFld: Variant; Db: variant; i, j, k: integer; begin result := ''; try DbEng := CreateOleObject('DAO.DBEngine.36'); TblDef := CreateOleObject('DAO.TableDef.36'); DAOFld := CreateOleObject('DAO.Field.36'); db := dbeng.OpenDatabase('db1.mdb'); // ACCESS文件 for i := 0 to db.TableDefs.Count - 1 do begin TblDef := db.TableDefs[i]; for j := 0 to TblDef.Fields.Count - 1 do begin DAOFld := TblDef.Fields[j]; if DAOFld.Name = FieldName then // 在这里还可以加上对表的判断等 for k := 0 to DAOFld.Properties.Count - 1 do if DAOFld.Properties[k].Name = 'Description' then begin result := DAOFld.Properties[k].Value; exit; end; end; end; finally DAOFld := unassigned; TblDef := unassigned; DbEng := Unassigned; end; end;
用TADODataset(dst_table),例如: dst_table.FieldCount; //---?字段数 for i := 0 to dst_table.FieldCount - 1 do begin fieldname[i] := DM.dst_table.FieldDefs[i].Name; //---?字段名 fieldtype[i] := dm.dst_table.FieldByName(fieldname[i]).DataType; //---?字段类型 end;说明用cuteant 说的试试。
var name: string; FieldType: TFieldType; i, size: integer; begin for i := 0 to ads.Fields.Count - 1 do begin name := ads.Fields[i].FieldName; //列名 FieldType := ads.Fields[i].DataType; //字段类型 size := ads.Fields[i].DataSize; //字段长度 end; end; 不知字段是否允许为空如何判断。ads是adotable
var
DbEng: variant;
TblDef: variant;
DAOFld: Variant;
Db: variant;
i, j, k: integer;
begin
result := '';
try
DbEng := CreateOleObject('DAO.DBEngine.36');
TblDef := CreateOleObject('DAO.TableDef.36');
DAOFld := CreateOleObject('DAO.Field.36'); db := dbeng.OpenDatabase('db1.mdb'); // ACCESS文件 for i := 0 to db.TableDefs.Count - 1 do
begin
TblDef := db.TableDefs[i];
for j := 0 to TblDef.Fields.Count - 1 do
begin
DAOFld := TblDef.Fields[j];
if DAOFld.Name = FieldName then // 在这里还可以加上对表的判断等
for k := 0 to DAOFld.Properties.Count - 1 do
if DAOFld.Properties[k].Name = 'Description' then
begin
result := DAOFld.Properties[k].Value;
exit;
end;
end;
end;
finally
DAOFld := unassigned;
TblDef := unassigned;
DbEng := Unassigned;
end;
end;
dst_table.FieldCount; //---?字段数
for i := 0 to dst_table.FieldCount - 1 do
begin
fieldname[i] := DM.dst_table.FieldDefs[i].Name; //---?字段名
fieldtype[i] := dm.dst_table.FieldByName(fieldname[i]).DataType; //---?字段类型
end;说明用cuteant 说的试试。
name: string;
FieldType: TFieldType;
i, size: integer;
begin
for i := 0 to ads.Fields.Count - 1 do
begin
name := ads.Fields[i].FieldName; //列名
FieldType := ads.Fields[i].DataType; //字段类型
size := ads.Fields[i].DataSize; //字段长度
end;
end;
不知字段是否允许为空如何判断。ads是adotable