📄 udbfuncpub.pas
字号:
unit uDbFuncPub;
{***********************************************************************
名称:uDbFuncPub
说明:相对比较公用的数据库函数
平台:Windows 98/2000/xp/2003, Delphi 7
编程:张新民,2008.12.11
Copyright (c) 2009~2015 e-linksoft Computer, e-linksoft.
************************************************************************}
interface
uses
Windows,SysUtils,Classes,Forms,ADODB,Ora,ComObj;
const
lCst='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Jet OLEDB:Database Password=%s';
//==========================本地公用函数及过程==================================
//按照传递的语句open -1:查询失败 0:没有记录 n:记录个数
function AdoOpenQry(var vQry:TADOQuery;vSql:string):Integer;
//按照传递的语句Exec
function AdoExecQry(vSql:string):Boolean;
//==========================网络公用函数及过程==================================
//按照传递的语句open
function OraOpenQry(var vQry:TOraQuery;vSql:string):Integer;
//按照传递的语句Exec
function OraExecQry(vSql:string):Boolean;
//==============================================================================
//read读取本地信息 write写入本地信息
//创建mdb
function CreateAccess(vMdb:string;vPass:string=''):Boolean;
//压缩mdb
function CompressAccess(vMdb:string;vPass:string=''):Boolean;
//修复mdb
function RepairAccess(vMdb:string;vPass:string=''):Boolean;
//创建本地主表
procedure CreateElDb;
implementation
uses
uDm,uDefine,uDefinDb,uSysFunc;
//==========================本地公用函数及过程==================================
//按照传递的语句open -1:查询失败 0:没有记录 n:记录个数
function AdoOpenQry(var vQry:TADOQuery;vSql:string):Integer;
begin
Result:=0;
with vQry do
begin
Close;
SQL.Clear;
SQL.Add(vSql);
try
Open;
if not Eof then
Result:=RecordCount;
except
on e:Exception do
begin
Result:=-1;
ErrorMsgBox('执行语句出错!');
end;
end;
end;
end;
//按照传递的语句Exec
function AdoExecQry(vSql:string):Boolean;
begin
Result:=False;
with TADOQuery.Create(Application) do
try
Connection:=DmEl.Ado1;
Close;
SQL.Clear;
SQL.Add(vSql);
try
ExecSQL;
Result:=True;
except
on e:Exception do
begin
ErrorMsgBox('执行语句出错!');
end;
end;
finally
Free;
end;
end;
//==========================网络公用函数及过程==================================
//按照传递的语句open
function OraOpenQry(var vQry:TOraQuery;vSql:string):Integer;
begin
Result:=0;
with vQry do
begin
Close;
SQL.Clear;
SQL.Add(vSql);
try
Open;
if not Eof then
Result:=RecordCount;
except
on e:Exception do
begin
Result:=-1;
ErrorMsgBox('执行语句出错!');
end;
end;
end;
end;
//按照传递的语句Exec
function OraExecQry(vSql:string):Boolean;
begin
Result:=False;
with TOraQuery.Create(Application) do
begin
try
AutoCommit:=False;
FetchAll:=True;
Session:=DmEl.orsn1;
Close;
SQL.Clear;
SQL.Add(vSql);
try
ExecSQL;
Result:=True;
except
on e:Exception do
begin
ErrorMsgBox('执行语句出错!');
end;
end;
finally
Free;
end;
end;
end;
//==============================================================================
//创建本地主表 是不是把初始的数据字典也插进去
procedure CreateElDb;
var
lList:TStrings;
ltmp,lSql:string;
li:Integer;
begin
AdoExecQry(gdbset);
end;
//创建mdb
function CreateAccess(vMdb:string;vPass:string=''):Boolean;
var
lOle:OleVariant;
begin
try
lOle := CreateOleObject('ADOX.Catalog');
lOle.Create(Format(lCst, [vMdb,vPass]));
Result:=True;
except
Result:=False;
end;
end;
//压缩mdb 需要先断开数据库 然后再进行压缩操作
function CompressAccess(vMdb:string;vPass:string=''):Boolean;
var
lOle:OleVariant;
lTmp:string;
begin
lTmp:=gPath+'\tmp.mdb';
DeleteFile(lTmp);
try
lOle:=CreateOleObject('JRO.JetEngine');
lOle.CompactDatabase(format(lCst,[vMdb,vPass]),format(lCst,[lTmp,vPass]));
Result:=FileCopy(lTmp,vMdb);
DeleteFile(lTmp);
except
Result:=False;
end;
end;
//修复mdb
function RepairAccess(vMdb:string;vPass:string=''):Boolean;
var
lOle:OleVariant;
begin
try
lOle:=CreateOleObject('JRO.JetEngine');
lOle.RepairDatabase(format(lCst,[vMdb,vPass]));
Result:=True;
except
Result:=False;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -