📄 dmcommon.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 + -