unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, ADODB, ExtCtrls, DBCtrls, StdCtrls, Grids, DBGrids, Mask, Buttons; type TForm1 = class(TForm) btnQryByName: TSpeedButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; btnExit: TButton; edtQryByName: TLabeledEdit; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBGrid1: TDBGrid; dbcbSex: TDBComboBox; dbcbDep: TDBComboBox; DataSource1: TDataSource; adqDep: TADOQuery; adqUser: TADOQuery; btnUpdate: TBitBtn; procedure FormCreate(Sender: TObject); procedure btnQryByNameClick(Sender: TObject); procedure btnExitClick(Sender: TObject); procedure btnUpdateClick(Sender: TObject); private { Private declarations } public { Public declarations } end; const ADO_STRING='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=wz.mdb;Persist Security Info=False' ; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var i: Integer; tmpstrs: TStrings; begin tmpstrs:=TStringlist.Create; with adqDep do try ConnectionString:=ADO_STRING; sql.Clear; sql.add('select * from M_BMBM'); Open; for i:=1 to RecordCount do begin tmpstrs.Add(Fieldbyname('BMMC').AsString); Next; end; Close; finally Close; end; dbcbDep.Items:=tmpstrs; end; procedure TForm1.btnQryByNameClick(Sender: TObject); begin with adqUser do begin close; ConnectionString:=ADO_STRING; Parameters.ParamByName('name').value:='%'+edtQryByName.Text+'%'; open; end; btnUpdate.Enabled:=true; end; procedure TForm1.btnExitClick(Sender: TObject); begin close; end; procedure TForm1.btnUpdateClick(Sender: TObject); begin adqUser.Post; end; end.
unit ufrmUsers; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBClient, StdCtrls, DBCtrls, Grids, DBGrids, Mask, ExtCtrls, Buttons,uUserMaint; type TfrmUsers = class(TForm) btnExit: TButton; btnQryByName: TSpeedButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; edtQryByName: TLabeledEdit; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBGrid1: TDBGrid; dbcbSex: TDBComboBox; dbcbDep: TDBComboBox; DataSource1: TDataSource; cdsUserMaint: TClientDataSet; cdsUserMaintID: TWideStringField; cdsUserMaintNAME: TWideStringField; cdsUserMaintSEX: TWideStringField; cdsUserMaintJOB: TWideStringField; cdsUserMaintTEL: TWideStringField; cdsUserMaintCALL: TWideStringField; cdsUserMaintDEP: TWideStringField; cdsUserMaintGROUP_ID: TWideStringField; cdsUserMaintPASSWORD: TWideStringField; btnUpdate: TBitBtn; procedure btnUpdateClick(Sender: TObject); procedure btnQryByNameClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnExitClick(Sender: TObject); procedure FormDestroy(Sender: TObject); private objUsers:TUserMaint; public { Public declarations } end; const M_TITLE='操作提示';//所有提示对话框的标题 implementation {$R *.dfm} procedure TfrmUsers.btnUpdateClick(Sender: TObject); var nErr:integer; begin if cdsUserMaint.State=dsEdit then cdsUserMaint.Post; if (cdsUserMaint.ChangeCount > 0) then begin objUsers.UpdateUserData(cdsUserMaint.Delta,nErr); if nErr>0 then application.MessageBox('更新失败!',M_TITLE,MB_ICONWARNING) else begin application.MessageBox('更新成功!',M_TITLE,MB_ICONINFORMATION) ; btnQryByNameClick(nil); end; end; end; procedure TfrmUsers.btnQryByNameClick(Sender: TObject); begin btnUpdate.Enabled:=true; dbcbDep.Items.AddStrings(objUsers.GetDepList); cdsUserMaint.Active:=false; cdsUserMaint.Data:=objUsers.GetUserList(edtQryByName.Text); cdsUserMaint.Active:=True; end; procedure TfrmUsers.FormCreate(Sender: TObject); begin objUsers:=TUserMaint.Create; end; procedure TfrmUsers.btnExitClick(Sender: TObject); begin close; end; procedure TfrmUsers.FormDestroy(Sender: TObject); begin objUsers.Free; end; end.
unit uUserMaint; interface uses Windows, Messages, SysUtils, Variants, Classes,DBClient,udmUser; type TUserMaint = class (TObject) private UserDM:TUserDM; public function GetDepList: TStrings; function GetUserList(strName:String): OLEVariant; procedure UpdateUserData(UserData:OleVariant;out ErrCount: Integer); constructor create; destructor Destroy;override; end; implementation { ********************************** TUserMaint ********************************** } constructor TUserMaint.create; begin UserDM:=TUserDM.Create(nil); end; destructor TUserMaint.Destroy; begin freeandnil(UserDM); inherited; end; function TUserMaint.GetDepList: TStrings; var i: Integer; tmpstrs: TStrings; begin tmpstrs:=TStringlist.Create; with UserDM do try if not adcUser.Connected then adcUser.Connected:=True; adqTemp.sql.Clear; adqTemp.sql.add('select * from M_BMBM'); adqTemp.Open; for i:=1 to adqTemp.RecordCount do begin tmpstrs.Add(adqTemp.Fieldbyname('BMMC').AsString); adqTemp.Next; end; adqTemp.Close; result:=tmpstrs; finally adcUser.Connected:=False; end; end; function TUserMaint.GetUserList(strName:String): OLEVariant; begin with UserDM do try if not adcUser.Connected then adcUser.Connected:=True; with adqByName do begin close; Parameters.ParamByName('name').value:='%'+strName+'%'; open; result:=dspUser.Data; end; finally adcUser.Connected:=False; end; end; procedure TUserMaint.UpdateUserData(UserData:OleVariant;out ErrCount: Integer); begin UserDM.dspUser.ApplyUpdates(UserData,0,ErrCount); end; end.
unit udmUser; interface uses SysUtils, Classes, DBClient, Provider, DB, ADODB; type TUserDM = class(TDataModule) adcUser: TADOConnection; adqByName: TADOQuery; dspUser: TDataSetProvider; adqTemp: TADOQuery; procedure DataModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; const ADO_STRING='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=wz.mdb;Persist Security Info=False' ; implementation {$R *.dfm} procedure TUserDM.DataModuleCreate(Sender: TObject); begin adcUser.ConnectionString:=ADO_STRING; end; end.
unit uIUserMaint; interface uses Classes; type TIUserMaint = class (TObject) public function GetDepList: TStrings;virtual;abstract; function GetUserList(strName:String): OLEVariant;virtual;abstract; procedure UpdateUserData(UserData:OleVariant;out ErrCount: Integer);virtual;abstract; constructor create;virtual;abstract; end; TIUserMaintClass=class of TIUserMaint; implementation end.
TIUserMaint = class (TObject) public function GetDepList: TStrings;virtual;abstract; function GetUserList(strName:String): OLEVariant;virtual;abstract; procedure UpdateUserData(UserData:OleVariant;out ErrCount: Integer);virtual;abstract; constructor create;virtual;abstract; end;
unit ufrmUsers; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, DB, DBClient, StdCtrls, DBCtrls, Grids, DBGrids, Mask, ExtCtrls, Buttons,uIUserMaint; type TfrmUsers = class(TForm) btnExit: TButton; btnQryByName: TSpeedButton; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; edtQryByName: TLabeledEdit; DBEdit1: TDBEdit; DBEdit2: TDBEdit; DBEdit3: TDBEdit; DBEdit4: TDBEdit; DBGrid1: TDBGrid; dbcbSex: TDBComboBox; dbcbDep: TDBComboBox; DataSource1: TDataSource; cdsUserMaint: TClientDataSet; cdsUserMaintID: TWideStringField; cdsUserMaintNAME: TWideStringField; cdsUserMaintSEX: TWideStringField; cdsUserMaintJOB: TWideStringField; cdsUserMaintTEL: TWideStringField; cdsUserMaintCALL: TWideStringField; cdsUserMaintDEP: TWideStringField; cdsUserMaintGROUP_ID: TWideStringField; cdsUserMaintPASSWORD: TWideStringField; btnUpdate: TBitBtn; procedure btnUpdateClick(Sender: TObject); procedure btnQryByNameClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure btnExitClick(Sender: TObject); procedure FormDestroy(Sender: TObject); private objUsers:TIUserMaint; public { Public declarations } end; var frmUsers: TfrmUsers; const M_TITLE='操作提示';//所有提示对话框的标题 implementation {$R *.dfm} function TObjUsers:TIUserMaintClass; external 'UserSvr.dll'; procedure TfrmUsers.btnUpdateClick(Sender: TObject); var nErr:integer; begin if cdsUserMaint.State=dsEdit then cdsUserMaint.Post; if (cdsUserMaint.ChangeCount > 0) then begin objUsers.UpdateUserData(cdsUserMaint.Delta,nErr); if nErr>0 then application.MessageBox('更新失败!',M_TITLE,MB_ICONWARNING) else begin application.MessageBox('更新成功!',M_TITLE,MB_ICONINFORMATION) ; btnQryByNameClick(nil); end; end; end; procedure TfrmUsers.btnQryByNameClick(Sender: TObject); begin btnUpdate.Enabled:=true; dbcbDep.Items.AddStrings(objUsers.GetDepList); cdsUserMaint.Active:=false; cdsUserMaint.Data:=objUsers.GetUserList(edtQryByName.Text); cdsUserMaint.Active:=True; end; procedure TfrmUsers.FormCreate(Sender: TObject); begin objUsers:=TObjUsers.Create; end; procedure TfrmUsers.btnExitClick(Sender: TObject); begin close; end; procedure TfrmUsers.FormDestroy(Sender: TObject); begin objUsers.Free; end; end.