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;