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

📄 peopledataunit.~pas

📁 很不错的软件请使用
💻 ~PAS
字号:
unit PeopledataUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ADODB, DB, XPMenu, Mask, ToolEdit, StdCtrls, RXCtrls, ExtCtrls,
  Buttons, DBCtrls, ComCtrls, Grids, DBGrids, ImgList, DBActns, ActnList;

type
  TPeopleData = class(TForm)
    Image2: TImage;
    Label1: TLabel;
    Label18: TLabel;
    XPMenu1: TXPMenu;
    ADOTable1: TADOTable;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    GroupBox2: TGroupBox;
    RxLabel1: TRxLabel;
    RxLabel2: TRxLabel;
    RxLabel3: TRxLabel;
    RxLabel4: TRxLabel;
    RxLabel5: TRxLabel;
    RxLabel6: TRxLabel;
    RxLabel7: TRxLabel;
    RxLabel8: TRxLabel;
    RxLabel9: TRxLabel;
    RxLabel10: TRxLabel;
    RxLabel11: TRxLabel;
    RxLabel12: TRxLabel;
    RxLabel13: TRxLabel;
    DBEdit1: TDBEdit;
    DBComboBox1: TDBComboBox;
    DBComboBox2: TDBComboBox;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit8: TDBEdit;
    DBEdit9: TDBEdit;
    DBEdit10: TDBEdit;
    DBEdit11: TDBEdit;
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    BitBtn7: TBitBtn;
    Panel2: TPanel;
    ActionList1: TActionList;
    DataSetFirst1: TDataSetFirst;
    DataSetPrior1: TDataSetPrior;
    DataSetNext1: TDataSetNext;
    DataSetLast1: TDataSetLast;
    DataSetInsert1: TDataSetInsert;
    DataSetDelete1: TDataSetDelete;
    DataSetPost1: TDataSetPost;
    DataSetCancel1: TDataSetCancel;
    DataSetRefresh1: TDataSetRefresh;
    ImageList1: TImageList;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    GroupBox1: TGroupBox;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn8: TBitBtn;
    BitBtn9: TBitBtn;
    BitBtn10: TBitBtn;
    DataSource1: TDataSource;
    RxLabel14: TRxLabel;
    DBEdit12: TDBEdit;
    ADOQuery1: TADOQuery;
    ADOQuery2: TADOQuery;
    Label2: TLabel;
    lb_RecNo: TLabel;
    lb_RecCount: TLabel;
    lb_Modal: TLabel;
    lb_Date: TLabel;
    Label3: TLabel;
    Panel3: TPanel;
    BitBtnClose: TBitBtn;
    BitBtn11: TBitBtn;
    ModiCount: TADOQuery;
    GetTitle: TADOTable;
    procedure FormCreate(Sender: TObject);
    procedure BitBtnCloseClick(Sender: TObject);
    procedure onclose(Sender: TObject; var Action: TCloseAction);
    procedure onshow(Sender: TObject);
    procedure dataset1statecange(Sender: TObject);
    procedure dataset1datasetchange(Sender: TObject; Field: TField);
    procedure beforedelete(DataSet: TDataSet);
    procedure beforepost(DataSet: TDataSet);
    procedure BitBtn11Click(Sender: TObject);
    procedure formkeypress(Sender: TObject; var Key: Char);
    procedure onrecordchangecomplete(DataSet: TCustomADODataSet;
      const Reason: TEventReason; const RecordCount: Integer;
      const Error: Error; var EventStatus: TEventStatus);
    procedure BitBtn7Click(Sender: TObject);
  private
    MaxNo:integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  PeopleData: TPeopleData;
  icount:string;
  FieldsValues1,FieldsValues2:integer;
  FieldsLimit:boolean;
implementation

uses MainDataModule, MainFormUnit;

{$R *.dfm}

function Max(const A, B: integer): integer;
begin
  if A > B then
    Result := A
  else
    Result := B;
end;

procedure TPeopleData.FormCreate(Sender: TObject);
begin
 inherited;
 adotable1.active:=false;
 adotable1.TableName:='SystemParamTable';
 adotable1.Active:=true;
 FieldsValues1:=ADOTable1.Fieldbyname('首项目值一').asinteger;
 FieldsValues2:=ADOTable1.Fieldbyname('首项目值二').asinteger;
 FieldsLimit:=ADOTable1.Fieldbyname('首项目限值').asboolean;
 adotable1.Active:=false;
 adotable1.TableName:='FieldsNewName';
 adotable1.Active:=true;
 Rxlabel1.Caption:=ADOTable1.Fieldbyname('身份证号').asstring;
 Rxlabel2.Caption:=ADOTable1.Fieldbyname('姓名').asstring;
 Rxlabel4.Caption:=ADOTable1.Fieldbyname('民族').asstring;
 Rxlabel5.Caption:=ADOTable1.Fieldbyname('户籍地址').asstring;
 Rxlabel6.Caption:=ADOTable1.Fieldbyname('工作单位').asstring;
 Rxlabel7.Caption:=ADOTable1.Fieldbyname('暂住地址').asstring;
 Rxlabel8.Caption:=ADOTable1.Fieldbyname('暂住时间').asstring;
 Rxlabel9.Caption:=ADOTable1.Fieldbyname('电话').asstring;
 Rxlabel10.Caption:=ADOTable1.Fieldbyname('备注').asstring;
 Rxlabel11.Caption:=ADOTable1.Fieldbyname('婚否').asstring;
 Rxlabel12.Caption:=ADOTable1.Fieldbyname('附注').asstring;
 Rxlabel13.Caption:=ADOTable1.Fieldbyname('照片').asstring;
 Rxlabel14.Caption:=ADOTable1.Fieldbyname('编号').asstring;
 ADOtable1.Active:=false;
 //建立连接
 try
  with ADOQuery1 do
   begin
    close;
    sql.Clear;
    sql.Add('select');
    sql.add(ListFieldsSelect);
    sql.add('from MainDataTable');
    open;
  end;
 except
   messageBox(Handle,'连接数据库失败!','系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
   exit;
 end;
 //检查编号
 with ModiCount do
  begin
  close;
  sql.Clear;
  sql.Add('select 编号 from MainDataTable');
  open;
   while not Eof do
    begin
    MaxNo:=Max(MaxNo,Fields[0].Asinteger);
    Next;
    end;
  end;
  modicount.close;
end;

procedure TPeopleData.BitBtnCloseClick(Sender: TObject);
begin
inherited;
close;
end;

procedure TPeopleData.onclose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
adoquery1.Close;
end;

procedure TPeopleData.onshow(Sender: TObject);
var
TitleCount,i:integer;
TitleName:string;
ListFields:string;
begin
 i:=0;
 try
  ADOQuery2.Close;
  ADOQuery2.sql.clear;
  ADOQuery2.sql.add('select * from FieldsSelect');
  ADOQuery2.open;
 except
  messageBox(Handle,'数据库被破坏或占用,无法连接数据库!','系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
  application.Terminate;
 end;
  Rxlabel3.visible:=ADOQuery2.Fields[0].asboolean;
  dbcombobox1.Visible:=ADOQuery2.Fields[0].asboolean;
  if ADOQuery2.Fields[0].asboolean then dbcombobox1.DataField:='性别';

  Rxlabel4.Visible:=ADOQuery2.Fields[1].asboolean;
  dbedit3.Visible:=ADOQuery2.Fields[1].asboolean;
  if ADOQuery2.Fields[1].asboolean  then dbedit3.DataField:='民族';

  Rxlabel5.Visible:=ADOQuery2.Fields[2].asboolean;
  dbedit4.Visible:=ADOQuery2.Fields[2].asboolean;
  if ADOQuery2.Fields[2].asboolean then dbedit4.DataField:='户籍地址';

  Rxlabel6.Visible:=ADOQuery2.Fields[3].asboolean;
  dbedit5.Visible:=ADOQuery2.Fields[3].asboolean;
  if ADOQuery2.Fields[3].asboolean then dbedit5.DataField:='工作单位';

  Rxlabel11.visible:=ADOQuery2.Fields[4].asboolean;
  dbcombobox2.Visible:=ADOQuery2.Fields[4].asboolean;
  if ADOQuery2.Fields[4].asboolean then dbcombobox2.DataField:='婚否';

  Rxlabel7.Visible:=ADOQuery2.Fields[5].asboolean;
  dbedit6.Visible:=ADOQuery2.Fields[5].asboolean;
  if ADOQuery2.Fields[5].asboolean then dbedit6.DataField:='暂住地址';

  Rxlabel8.Visible:=ADOQuery2.Fields[6].asboolean;
  dbedit7.Visible:=ADOQuery2.Fields[6].asboolean;
  if ADOQuery2.Fields[6].asboolean then dbedit7.DataField:='暂住时间';

  Rxlabel9.Visible:=ADOQuery2.Fields[7].asboolean;
  dbedit8.Visible:=ADOQuery2.Fields[7].asboolean;
  if ADOQuery2.Fields[7].asboolean then dbedit8.DataField:='电话';

  Rxlabel10.Visible:=ADOQuery2.Fields[10].asboolean;
  dbedit9.Visible:=ADOQuery2.Fields[10].asboolean;
  if ADOQuery2.Fields[10].asboolean then dbedit9.DataField:='备注';

  Rxlabel12.Visible:=ADOQuery2.Fields[8].asboolean;
  dbedit10.Visible:=ADOQuery2.Fields[8].asboolean;
  if ADOQuery2.Fields[8].asboolean then dbedit10.DataField:='附注';

  Rxlabel13.Visible:=ADOQuery2.Fields[9].asboolean;
  dbedit11.Visible:=ADOQuery2.Fields[9].asboolean;
  if ADOQuery2.Fields[9].asboolean then dbedit11.DataField:='照片';

  ADOQuery2.sql.clear;
  adoquery2.Close;
  
  //取得DBGIRD的TITLE
  ListFields:=ListFieldsSelect+',';  //不改变原初始值
  GetTitle.Active:=false;
  Gettitle.TableName:='FieldsNewName';
  GetTitle.Active:=true;
  while pos(',',ListFields)>0 do
   begin
    TitleCount:=pos(',',ListFields);
    TitleName:=copy(ListFields,1,titlecount-1);
    TitleName:=GetTitle.Fieldbyname(Titlename).asstring;
    dbgrid1.Columns[i].Title.caption:=TitleName;
    i:=i+1;
    ListFields:=copy(ListFields,titlecount+1,length(listfields));
    end;
end;

procedure TPeopleData.dataset1statecange(Sender: TObject);
begin
  case DataSource1.State of
    dsBrowse:lb_Modal.Caption:='[浏览模式]';
    dsEdit:lb_Modal.Caption:='[修改模式]';
    dsInsert:lb_Modal.Caption:='[插入模式]';
  else lb_Modal.Caption:='[其他模式]';
  end;
end;

procedure TPeopleData.dataset1datasetchange(Sender: TObject;
  Field: TField);
begin
  lb_RecNo.Caption:='当前记录:'+IntToStr(DataSource1.DataSet.RecNo);
  lb_RecCount.Caption:='记录总数:'+IntToStr(DataSource1.DataSet.RecordCount);
  lb_Date.Caption:=DateToStr(Date);
end;

procedure TPeopleData.beforedelete(DataSet: TDataSet);
var
dstr:string;
begin
 dStr:=format('确定删除第%d条记录[%s]',[ADOquery1.RecNo,ADOquery1.Fields[1].AsString]);
 if MessageBox(Handle,PChar(dStr),'警告',MB_YESNO or MB_ICONWARNING)=IDno then abort;
end;

procedure TPeopleData.beforepost(DataSet: TDataSet);
begin
if (dbedit12.text='') or (dbedit1.text='') or (dbedit2.text='') then
 begin
  messageBox(Handle,PChar('〖'+Rxlabel14.caption+'〗、〖'+Rxlabel1.caption+'〗和〖'+Rxlabel2.Caption+'〗必须填写。'),'系统提示',MB_ok+MB_ICONWARNING);
  abort;
 end;
 if FieldsLimit then
  begin
   if (length(dbedit1.text)<>FieldsValues1) and (length(dbedit1.text)<>FieldsValues2) then
    begin
     messageBox(Handle,PChar(Format('请确认〖'+Rxlabel1.caption+'〗必须为%D或%D位',[FieldsValues1,FieldsValues2])),'系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
     abort;
    end;
  end;
  if DataSource1.State=dsInsert then
  begin
  //检查相重身份证号
   ADOQuery2.Close;
   ADOQuery2.sql.Clear;
   ADOQuery2.sql.Add('select 身份证号 from MainDataTable where 身份证号='''+dbedit1.text+'''');
   ADOQuery2.Open;
   if ADOQuery2.RecordCount>0 then
    begin
     messageBox(Handle,PChar('项目〖'+Rxlabel1.Caption+'〗的值〖'+dbedit1.text+'〗已经存在于数据库中!'),'系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
     abort;
    end;
   ADOQuery2.close;
   ADOQuery2.sql.Clear;
   ADOQuery2.sql.Add('select 编号 from MainDataTable where 编号 like'''+dbedit12.text+'''');
   ADOQuery2.Open;
   if ADOQuery2.RecordCount>0 then
    begin
     messageBox(Handle,PChar('项目〖'+Rxlabel14.Caption+'〗的值〖'+dbedit12.text+'〗已经存在于数据库中!'),'系统提示',MB_ok+MB_ICONWARNING+MB_DEFBUTTON1+MB_SYSTEMmodal);
     abort;
    end;
   adoquery2.close;
  end;
end;

procedure TPeopleData.BitBtn11Click(Sender: TObject);
begin
 ADOquery1.Append;
 DBEdit12.SetFocus;
 ADOquery1.Fields[0].Asinteger:=MaxNo+1;
end;

procedure TPeopleData.formkeypress(Sender: TObject; var Key: Char);
begin
  if (Key = #13)and not (ActiveControl is TBitBtn) then
  begin
    Key := #0;                                   { clear enter key }
    Perform(WM_NEXTDLGCTL, 0, 0);                { move to next control }
  end;
end;

procedure TPeopleData.onrecordchangecomplete(DataSet: TCustomADODataSet;
  const Reason: TEventReason; const RecordCount: Integer;
  const Error: Error; var EventStatus: TEventStatus);
begin
 with ModiCount do
  begin
  close;
  sql.Clear;
  sql.Add('select 编号 from MainDataTable');
  open;
   while not Eof do
    begin
    MaxNo:=Max(MaxNo,Fields[0].Asinteger);
    Next;
    end;
  end;
  modicount.Close;
end;

procedure TPeopleData.BitBtn7Click(Sender: TObject);
begin
mainform.GetHelpFileclick(sender);
end;

end.

⌨️ 快捷键说明

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