有取得access表字段标题更好的办法吗? ( 积分: 50 )

  • 主题发起人 主题发起人 ganzqgy
  • 开始时间 开始时间
G

ganzqgy

Unregistered / Unconfirmed
GUEST, unregistred user!
uses
dao2000,dao97,comobj
var
Engine:DBEngine;
TestDB:Database;
TestTD:TableDef;
TestField:Field;
TestProperty:Property_;
i:integer;
s,name:String;
begin
name:='c:/db4.mdb';//是access2000数据库
Engine:=CreateComObject(dao2000.CLASS_DBEngine) as _DBEngine;
TestDB:=engine.OpenDatabase(name,dbDriverPrompt,false,'');
TestTD:=TestDB.TableDefs.Item['MarriageRegister'];//MarriageRegister'];

for i:=0 to TestTD.Fields.Count -1 do begin
TestField:=TestTD.Fields.Item;
s:=s+' '+TestField.Properties.Item['caption'].value;
showmessage(s);
end;


可以实现取到access2000中的标题,但只能独占使用,并且必须加dao97才行,不然 TestDB:=engine.OpenDatabase(name,dbDriverPrompt,false,'');通不过,有谁知道dao2000中该语句怎样写。
 
var
dbEngine, db, fd: OleVariant;
i, j : Integer;
sname, scaption : string;
begin
dbEngine := CreateOleObject('DAO.DBEngine.36');
db := dbEngine.OpenDatabase('e:/db1.mdb');
for i := 0 to db.TableDefs['t1'].Fields.Count - 1 do
begin
fd := db.TableDefs['t1'].Fields.Item;
for j := 0 to fd.Properties.Count - 1 do
if fd.Properties.Item[j].Name = 'Caption' then
begin
sname := fd.Name;
scaption := fd.Properties.Item['Caption'];
mem.Lines.Add(sname + '.Caption = ' + scaption);
break;
end;
end;
end;
 
不错,这种方法不错,我的那种必须每个字段的标题都有内容,否则出错,你的不会出错,好!但还是独占方式打开的,要是其它grid open时,能读出来就更好了。
50分给你
 
后退
顶部