📄 f_rdb.pas
字号:
dtmfld__info_LowEnsureenddate: TDateTimeField;
fltfld__info_LowEnsureEnsureSum: TFloatField;
mfld__info_LowEnsureremark: TMemoField;
dst_info_oldpeople: TADODataSet;
strngfld__info_oldpeoplecode: TWideStringField;
strngfld__info_oldpeoplename: TWideStringField;
strngfld__info_oldpeopleDoorNumber: TWideStringField;
dtmfld__info_oldpeoplejobdate: TDateTimeField;
dtmfld__info_oldpeopleleftdate: TDateTimeField;
fltfld__info_oldpeopletxj: TFloatField;
strngfld__info_oldpeopleplace: TWideStringField;
strngfld__info_oldpeopletxdw: TWideStringField;
strngfld__info_oldpeoplepezk: TWideStringField;
strngfld__info_oldpeoplemqzk: TWideStringField;
strngfld__info_oldpeoplejjly: TWideStringField;
strngfld__info_oldpeopletsry: TWideStringField;
mfld__info_oldpeoplememo: TMemoField;
con_data: TADOConnection;
dst_postalcode: TADODataSet;
dst_idcard: TADODataSet;
dst_mobile: TADODataSet;
atncfld__postalcodeID: TAutoIncField;
strngfld__postalcodeDSDesigner: TWideStringField;
strngfld__postalcodeDSDesigner2: TWideStringField;
strngfld__postalcodeDSDesigner3: TWideStringField;
strngfld__postalcodeDSDesigner4: TWideStringField;
intgrfld__idcardBM: TIntegerField;
strngfld__idcardDQ: TWideStringField;
atncfld__mobileID: TAutoIncField;
intgrfld__mobileB: TIntegerField;
intgrfld__mobileE: TIntegerField;
strngfld__mobileDSDesigner: TWideStringField;
strngfld__mobileDSDesigner2: TWideStringField;
intgrfld__mobileDSDesigner3: TIntegerField;
strngfld__mobileDSDesigner4: TWideStringField;
blnfld__peopleisbmp: TBooleanField;
strngfld__info_prisonPeopleDoorNumber: TWideStringField;
intgrfld__info_ConciliationID: TIntegerField;
intgrfld__info_handicappedID: TIntegerField;
intgrfld__info_joblessid: TIntegerField;
intgrfld__info_prisonPeopleID: TIntegerField;
intgrfld__info_LowEnsureID: TIntegerField;
intgrfld__info_oldpeopleID: TIntegerField;
dst_Conciliation: TADODataSet;
intgrfld__ConciliationID: TIntegerField;
strngfld__ConciliationName: TWideStringField;
strngfld__ConciliationType: TWideStringField;
dst_WorkStatus: TADODataSet;
intgrfld__WorkStatusID: TIntegerField;
strngfld__WorkStatusName: TWideStringField;
strngfld__WorkStatusType: TWideStringField;
fld__info_ConciliationConciliation: TStringField;
fld__info_ConciliationWorkStatusName: TStringField;
dst_LowEnsure: TADODataSet;
IntegerField2: TIntegerField;
WideStringField3: TWideStringField;
WideStringField4: TWideStringField;
fld__info_LowEnsureLowEnsureCauseName: TStringField;
fld__info_joblessWorkStatusName: TStringField;
XPManifest1: TXPManifest;
procedure Timer1Timer(Sender: TObject);
procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject);
private
{ Private declarations }
isTrans: boolean; //是否正在执行事务
public
{ Public declarations }
only: integer;
regOK: Boolean;
function RunQuery(str: AnsiString; sqltmp: TADOQuery = nil): boolean;
function RunCommand(str: AnsiString): boolean;
function SetTrans(flag: integer): boolean;
function BetweenDate(admissionstart: TDateTime; admissionend: TDateTime):
Boolean;
function GetRegState(): boolean;
end;
var
RDB: TRDB;
const pwd='fluter';
const MD5MB ='liniocensus';
implementation
uses f_md5, f_IdeDisk;
{$R *.dfm}
function TRDB.BetweenDate(admissionstart: TDateTime; admissionend: TDateTime):
boolean;
begin
sql.Close;
sql.SQL.Text := 'select Count(getdate()) as Count where getdate() between '''
+ formatdatetime('yyyy-mm-dd', AdmissionStart) + ''' and ''' +
formatdatetime('yyyy-mm-dd', AdmissionEnd) + '''';
sql.Open;
if sql.FieldByName('Count').AsInteger > 0 then
BetweenDate := true
else
BetweenDate := false;
end;
function TRDB.RunQuery(str: AnsiString; sqltmp: TADOQuery): boolean;
var
mysql: TADOQuery;
begin
if (Copy(Trim(str), 1, 1) <> 'S') and (Copy(Trim(str), 1, 1) <> 's') then
begin
RunQuery := false;
exit;
end;
try
if con_ado.Connected = false then
con_ado.Open;
except
RunQuery := false;
exit;
end;
mysql := sqltmp;
if sqltmp = nil then
mysql := sql;
if mysql.Active then
mysql.Close;
mysql.Connection := con_ado;
try
mysql.sql.Clear;
mysql.sql.Text := str;
mysql.Open;
except
RunQuery := false;
exit;
end;
RunQuery := true;
end;
function TRDB.RunCommand(str: AnsiString): boolean;
begin
if (Copy(Trim(str), 1, 1) = 'S') or (Copy(Trim(str), 1, 1) = 's') then
begin
RunCommand := false;
exit;
end;
try
if con_ado.Connected = false then
con_ado.Open;
except
RunCommand := false;
exit;
end;
try
cmd.CommandText := str;
cmd.Execute;
except
RunCommand := false;
exit;
end;
RunCommand := true;
end;
function TRDB.SetTrans(flag: integer): boolean;
begin
//FLAG 0 开始新事务 1 提交事务 2 滚回事务
if (flag = 0) and (isTrans = false) then
begin
con_ado.BeginTrans;
isTrans := true;
end
else
SetTrans := false;
if (flag = 1) and (isTrans = true) then
begin
con_ado.CommitTrans;
isTrans := false;
end
else
SetTrans := false;
if (flag = 2) and (isTrans = true) then
begin
con_ado.RollbackTrans;
isTrans := false;
end
else
SetTrans := false;
if (flag < 0) or (flag > 2) then
SetTrans := false;
SetTrans := true;
end;
procedure TRDB.Timer1Timer(Sender: TObject);
begin
//定期检查连接,发现断开就进行连接
if con_ado.Connected = false then
try
con_ado.Open;
except
ShowMessage('数据库连接异常');
end;
end;
procedure TRDB.DataModuleCreate(Sender: TObject);
begin
regok := false;
//查找配置文件
con_ado.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
ExtractFilePath(Application.ExeName) +
'\Data\LinioDB.mdb;Persist Security Info=False;Jet OLEDB:Database Password='+Trim(pwd)+'';
GetRegState;
dst_FieldShow.Active := True;
end;
procedure TRDB.DataModuleDestroy(Sender: TObject);
begin
if sql.Active then
sql.Close;
if con_ado.Connected = true then
con_ado.Close;
end;
function TRDB.GetRegState: boolean;
var
ide, reg: string;
begin
Result := False;
ide := GetIdeDiskSerialNumber;
reg := MD5Print(MD5String(ide + Trim(MD5MB)));
reg := MD5Print(MD5String(reg + Trim(MD5MB)));
with RDB.dst_reg do
begin
if not Active then
Active := True;
First;
if FieldByName('regcode').AsString = reg then
begin
regok := True;
Result := True;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -