⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udbfuncpub.pas

📁 一个小程序
💻 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 + -