mdb Utils (Access)[1]

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

本文简介:选择自 luckyjan 的 blog

unit mdbutils;

interface
uses windows,classes,sysutils,dao2000,dao97, comobj,adodb{$ifdef ver140},variants{$endif},dialogs;

type
  tfieldrec=record
    fieldname:string;
    fieldtype,fieldsize:integer;
    required:boolean;
    defaultvalue:olevariant;
    foreignname:string;
  end;
  tfieldrecarray=array of tfieldrec;

  trelationrec=record
    name,table,foreigntable:string;
    attributes:integer;
    fields:tfieldrecarray;
  end;
  trelationarray=array of trelationrec;


  tindexrec=record
    name:string;
    primary,unique,required:boolean;
    fields:tfieldrecarray;
  end;
  tindexrecarray=array of tindexrec;


  tparamrec=record
    value :olevariant;
    type_:smallint;
    direction:smallint;
    name : widestring;
  end;
  tparamrecarray=array of tparamrec;

  tquerydef=record
    name:string;
    sql:string;
  end;
  tquerydefarray=array of tquerydef;


function getwintempfile:string;
procedure compactmdbdatabase(srcdbname,dstdbname,oldpwd,newpwd:string;baccess97:boolean=true);
procedure compactmdbdatabasex(dbname:string);
procedure changemdbpwd(dbname,oldpwd,newpwd:string;baccess97:boolean=true);
procedure clearlinktables(dbname,pwd:string);
procedure connectx(srcname, srcpwd, dstname, dstpwd,suffix: string);
function getmdbpassword(filename:string):string;
function connectado(adoconnection:tadoconnection;dbname,pwd:string):boolean;
function createmdb(dbname,pwd:string):boolean;
function isaccess97(dbname:string):boolean;
function opendatabase(dbname,pwd:string):database;
//relations
function getrelations(dbname,pwd:string):trelationarray;
procedure clearrelations(dbname,pwd:string);
procedure createrelations(dbname,pwd:string;rs:trelationarray);
//recordset
function createmdbtable(db:database;tbname:string;fldarray:tfieldrecarray;idxarray:tindexrecarray):tabledef;
procedure altermdbtable(db:database;tbname:string;fldarray:tfieldrecarray;idxarray:tindexrecarray);
//function comparemdbtable(srcdb,dstdb:database;tbname:string;var outstr:string):boolean;
procedure renamemdbtable(db:database;srctbname,dsttbname:string);
procedure copymdbtable(db:database;srctdf,dsttdf:tabledef);
procedure dropmdbtable(db:database;tbname:string);

//querydefs
function getquerydefs(dbname,pwd:string):tquerydefarray;
function clearquerydefs(db:database):boolean;
function createquerydef(db:database;qdf:tquerydef):querydef;
function createquerydefs(db:database;qa:tquerydefarray):boolean;
implementation

function createquerydefs(db:database;qa:tquerydefarray):boolean;
var i:integer;
begin
  result := false;
  for i:=0 to high(qa) do
  begin
    db.createquerydef(qa[i].name,qa[i].sql);
  end;
  result := true;
end;
function createquerydef(db:database;qdf:tquerydef):querydef;
var i:integer;
begin
  result := nil;
  result := db.createquerydef(qdf.name,qdf.sql);
end;

function clearquerydefs(db:database):boolean;
var i:integer;
begin
  for i:= db.querydefs.count -1 downto 0 do
  begin
    db.querydefs.delete(db.querydefs[i].name);
  end;
  db.querydefs.refresh;
end;


function getquerydefs(dbname,pwd:string):tquerydefarray;
var db:database;
    i,j:integer;
begin
  db := opendatabase(dbname,pwd);
  setlength(result,db.querydefs.count);
  for i:=0 to db.querydefs.count-1 do
  begin
    result[i].name := db.querydefs[i].name;
    result[i].sql := db.querydefs[i].sql;
  end;
end;

procedure dropmdbtable(db:database;tbname:string);
begin
  db.tabledefs.delete(tbname);
  db.tabledefs.refresh;
end;

procedure copymdbtable(db:database;srctdf,dsttdf:tabledef);
const
  sqlstr='insert into %s select %s from %s';
var s:string;
    i:integer;
begin
  s := '';
  for i:=0 to dsttdf.fields.count -1 do
  begin

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

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

go top