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

📄 f_rdb.pas

📁 用Delphi 开发的一个 户籍管理系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    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 + -