mdb Utils (Access)[5]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 luckyjan 的 blog

  end;
end;

procedure clearlinktables(dbname,pwd:string);
var engine : _dbengine;
    dbs:database;
    i:integer;
    tdtest,tdfloop:tabledef;
    strtb,strconnect :string;
    tdflinked:tabledef;
begin
  engine := createcomobject(class_dbengine) as _dbengine;
  dbs := engine.opendatabase(dbname,dbdrivernoprompt,false,';name=dbs;pwd='+pwd);

  for i := dbs.tabledefs.count-1 downto 0 do
  begin
    tdfloop := dbs.tabledefs.item[i];
      if ((tdfloop.attributes and dbattachedtable) <> 0) or
            ((tdfloop.attributes and dbattachexclusive) <> 0) or
            ((tdfloop.attributes and dbattachsavepwd) <> 0) then
        dbs.tabledefs.delete(tdfloop.name)
  end;
end;

//link tables between databases
procedure connectx(srcname, srcpwd, dstname, dstpwd,suffix: string);
var engine : _dbengine;
    dbssrc, dbsdst:database;
    i,j:integer;
    tdtest,tdfloop:tabledef;
    strtb,strconnect :string;
    tdflinked:tabledef;
begin
  engine := createcomobject(class_dbengine) as _dbengine;
  dbssrc := engine.opendatabase(srcname,dbdrivernoprompt,false,';name=dbsrc;pwd='+srcpwd);
  dbsdst := engine.opendatabase(dstname,dbdrivernoprompt,false,';name=dbdst;pwd='+dstpwd);
  for i := dbsdst.tabledefs.count-1 downto 0 do
  begin
    tdfloop := dbsdst.tabledefs.item[i];
    if ((tdfloop.attributes and dbattachedtable) <> 0) or
          ((tdfloop.attributes and dbattachexclusive) <> 0) or
          ((tdfloop.attributes and dbattachsavepwd) <> 0) then
      dbsdst.tabledefs.delete(tdfloop.name)
  end;

  for i:=0 to dbssrc.tabledefs.count-1 do
  begin
    tdfloop := dbssrc.tabledefs[i];
    if (tdfloop.attributes and dbsystemobject) = 0 then
    begin
      strtb := tdfloop.name;
      for j:=0 to dbsdst.tabledefs.count-1 do
      begin
        tdtest := dbsdst.tabledefs.item[j];
        if tdtest.name = strtb then
        begin
          if not (
           ((tdtest.attributes and dbattachedtable) <> 0) or
           ((tdtest.attributes and dbattachexclusive) <> 0) or
           ((tdtest.attributes and dbattachsavepwd) <> 0)) then
              strtb := strtb + suffix
          else
          begin
            dbsdst.tabledefs.delete( strtb);
          end;
        end;
      end;
      strconnect := ';database='+ srcname + ';pwd=' + srcpwd;
      tdflinked := dbsdst.createtabledef(strtb,0,tdfloop.name, strconnect);
      dbsdst.tabledefs.append(tdflinked);
    end;
  end;
end;

end.

本文关键:mdb Utils (Access)
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top