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

📄 dmcommon.pas

📁 作为服务
💻 PAS
字号:
unit DMCommon;

interface

uses
  SysUtils, Classes, DB, ADODB,forms,comobj,Graphics,OleCtrls,stdctrls,windows;
type
  TDM = class(TDataModule)
    ADOCon: TADOConnection;
    ADOQuery: TADOQuery;
    ADOQueryCMSLib: TADOQuery;
    DSCommon: TDataSource;
    ADOQryEvent: TADOQuery;
    ADOQueryVD: TADOQuery;
    ADOQueryWS: TADOQuery;
    ADOQueryTS: TADOQuery;
    procedure DataModuleCreate(Sender: TObject);
  private
    { Private declarations }
  public
    function ExeSqlReturn(ADOQry:TADOQuery;sqlstring:string):Boolean;
    function ExeSql(sqlstring:string):Boolean;

    function  getEventNewID():string;

    { Public declarations }
  end;

type
  TConnectThread = class(TThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  public
    { Public declarations }
end;
var
  DM: TDM;
  SQLConThread      :TConnectThread;
implementation


uses Common;
{$R *.dfm}

procedure TDM.DataModuleCreate(Sender: TObject);
begin
  SQLConThread := TConnectThread.Create(true) ;
  SQLConThread.FreeOnTerminate :=true;
  ADOCon.ConnectionString := CreateConnStr;  //con
  try
    ADOCon.Connected :=true;
  finally
    if not  ADOCon.Connected   then
    begin
      prompt('数据库连接失败!!');  
    end;
  end;
end;

{ TConnectThread }

procedure TConnectThread.Execute;
begin
  inherited;
  while true do
      begin
          if Terminated then Break ;
          //自动恢复网络数据库连接
          try
              Dm.ADOCon.Connected := false ;
              DM.ADOCon.ConnectionString := CreateConnStr;  //con
              Dm.ADOCon.Connected :=true; ;
              //线程挂起
              suspended := true ;
          except on EOleException do
              begin
                  sleep(100);
                  application.ProcessMessages ;
              end;
          end;
      end
end;


function TDM.ExeSql(sqlstring: string): Boolean;
var dbErrLog:string;
begin
  try
    ADOQuery.SQL.Text := sqlstring ;
    ADOQuery.ExecSQL;
    result :=true;
  except
    SQLConThread.Resume;
    result := false;
    SQLToFile(sqlstring);
  end;
end;

function TDM.ExeSqlReturn(ADOQry: TADOQuery; sqlstring: string): Boolean;
begin
  try
    ADOQry.Close;
    ADOQry.SQL.Clear;
    ADOQry.SQL.Add(SqlString);
    ADOQry.open;
    result :=true;
  except
    SQLConThread.Resume;
    result := false;
  end;
end;






function TDM.getEventNewID: string;
begin
  sqlstring := 'select evid from  jkevent where  EVID like '''+FormatDateTime('yyyymm',now)+'%''';
  if DM.ExeSqlReturn(DM.ADOQuery,SqlString) then
  begin
    if DM.ADOQuery.RecordCount =0 then result := FormatDateTime('yyyymm',now)+'0001'
    else result :=  FormatDateTime('yyyymm',now)+ copy(inttostr(10000+DM.ADOQuery.RecordCount+1),2,4);
  end;

end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -