📄 peopledataunit.~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 + -