mdb Utils (Access)[3]

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

本文简介:选择自 luckyjan 的 blog

end;

function getrelations(dbname,pwd:string):trelationarray;
var db:database;
    i,j:integer;
    r:relation;
    tdf:tabledef;
    fn:string;
    fld:field;
begin
  db := opendatabase(dbname,pwd);
  setlength(result,db.relations.count);
  for i:=0 to db.relations.count -1 do
  begin
    r :=db.relations[i];
    result[i].name := r.name;
    result[i].table := r.table;
    tdf := db.tabledefs[r.table];
    result[i].foreigntable := r.foreigntable;
    result[i].attributes := r.attributes;
    setlength(result[i].fields,r.fields.count);
    for j:=0 to r.fields.count -1 do
    begin
      result[i].fields[j].fieldname := r.fields[j].name;
      fn := r.fields[j].name;
      fld := tdf.fields[fn];
      result[i].fields[j].fieldsize := fld.size;
      result[i].fields[j].fieldtype := fld.type_;
      try
      result[i].fields[j].foreignname := r.fields[j].foreignname;
      except
        showmessage('error');
      end;
    end;
  end;
end;

function isaccess97(dbname:string):boolean;
var fi:file of byte;
    i:integer;
    by:byte;
begin
  assignfile(fi,dbname);
  reset(fi);
  result := false;
  // read file
  i := 0;
  repeat
    if not eof(fi) then
    begin
      read(fi,by);
      inc(i);
      if i=$15 then
      begin
        result := by<>1;
        break;
      end;
    end;
  until  eof(fi);
  closefile(fi);
end;
procedure clearrelations(dbname,pwd:string);
var db:database;
    dbengine:_dbengine;
    tempname:string;
    i:integer;
begin
  if pwd <>'' then
    pwd := ';pwd='+pwd;
  if isaccess97(dbname) then
  begin
    dbengine := createcomobject(dao97.class_dbengine) as _dbengine;
    db := dbengine.opendatabase(dbname,dbdrivernoprompt,false,pwd);
  end else
  begin
    dbengine := createcomobject(dao2000.class_dbengine) as _dbengine;
    db := dbengine.opendatabase(dbname,dbdrivernoprompt,false,pwd)
  end;
  for i:=db.relations.count -1 downto 0 do
    db.relations.delete(db.relations.item[i].name);
end;

function createmdb(dbname,pwd:string):boolean;
var dbengine:_dbengine;
begin
  result := true;
  try
  dbengine := createcomobject(class_dbengine) as _dbengine;
  dbengine.createdatabase(dbname,';pwd='+pwd,dbversion30);
  except
    result := false;
  end;
end;

function connectado(adoconnection:tadoconnection;dbname,pwd:string):boolean;
var s:string;
begin
  result := false;
  s:='provider=microsoft.jet.oledb.4.0;';
  s:=s+'user id=admin;';
  s:=s+'data source='+dbname+';';
  s:=s+'mode=share deny none;';
  s:=s+'jet oledb:database password="'+pwd+'";';
  try
  adoconnection.connected := false;
  adoconnection.connectionstring := s;
  adoconnection.connected := true;
  except
  end;
  result := adoconnection.connected;
end;

function getmdbpassword(filename:string):string;
const
   xorarr97 : array[0..12] of byte =
   ($86,$fb,$ec,$37,$5d,$44,$9c,$fa,$c6,$5e,$28,$e6,$13);
   xorarr2000: array[0..28] of byte =
   ($a2,$69,$ec,$37,$79,$d6,$9c,$fa,$e2,$cc,$28,$e6,$37,$24,$8a,$60,$70,$06,$7b,$36,$d1,$e0,$df,$b1,$53,$66,$13,$43,$eb);
var
   i                : integer;
   s1               : string;

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

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

go top