📄 editclient.pas
字号:
unit EditClient;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, RzButton, DBCtrls, RzDBNav, StdCtrls, ComCtrls, RzDBEdit,
RzDBCmbo, Mask, RzEdit, ExtCtrls, RzPanel, RzCmboBx, DB;
type
TEditClientForm = class(TForm)
RzGroupBox1: TRzGroupBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
RzDBEdit1: TRzDBEdit;
RzDBEdit2: TRzDBEdit;
RzDBEdit3: TRzDBEdit;
RzDBEdit4: TRzDBEdit;
RzDBEdit5: TRzDBEdit;
RzDBEdit6: TRzDBEdit;
RzDBEdit7: TRzDBEdit;
RzDBEdit8: TRzDBEdit;
RzDBNavigator1: TRzDBNavigator;
RzBitBtn3: TRzBitBtn;
RzBitBtn1: TRzBitBtn;
RzBitBtn2: TRzBitBtn;
RzBitBtn4: TRzBitBtn;
RzBitBtn5: TRzBitBtn;
RzDBLookupComboBox2: TRzDBLookupComboBox;
DBComboBox2: TRzDBComboBox;
RzDBComboBox1: TRzDBComboBox;
RzDBComboBox2: TRzDBComboBox;
Label12: TLabel;
RzDBMemo1: TRzDBMemo;
procedure RzBitBtn1Click(Sender: TObject);
procedure RzBitBtn2Click(Sender: TObject);
procedure RzBitBtn3Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure RzBitBtn4Click(Sender: TObject);
procedure RzBitBtn5Click(Sender: TObject);
procedure DBComboBox2Exit(Sender: TObject);
procedure RzDBEdit1Exit(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
//更变客户名称
function ChangeClientName(Tablest,OClient,NClient:String):Boolean;
procedure RzDBComboBox1Exit(Sender: TObject);
//检测输入的类型是否和原来一致,如果不是,则写入
procedure TestDataType(InText,Field:String; Lists:TStrings);
private
{ Private declarations }
public
{ Public declarations }
end;
var
EditClientForm: TEditClientForm;
implementation
uses DM, EditLinkmanForm1, EditBespeak, CallatForm1;
{$R *.dfm}
procedure TEditClientForm.RzBitBtn1Click(Sender: TObject);
var
S : String;
begin
S:=RzDBEdit2.Text;
//如果只是增加数据
if DM1.ADODataSet1.State in[dsInsert] then
DM1.ADODataSet1.UpdateBatch
else if DM1.ADODataSet1.State in[dsEdit] then begin
//检测关键的公司名称是否产生了变动
if RzDBEdit2.Text=DM1.Co then
DM1.ADODataSet1.UpdateBatch
else begin
//如果产生了变动,则需要改变多处表中关于 公司名称
//********销售列表*********
if ChangeClientName('ProductSell',DM1.Co,S)then begin
DM1.ADODataSet6.Requery();
DM1.SellList.Requery();
end;
//******销售明细**********
if ChangeClientName('SellDetail',DM1.Co,S)then
DM1.ADODataSet6.Requery();
//***********联系人列表*****************
if ChangeClientName('LinkMan',DM1.Co,S)then begin
DM1.ADODataSet2.Requery();
DM1.LinkManList.Requery();
end;
//************客户拜访记录****************
if ChangeClientName('ClientVisit',DM1.Co,S)then begin
DM1.ADODataSet4.Requery();
DM1.ADODataSet10.Requery();
end;
//***********客户预约记录*****************
if ChangeClientName('ClientBespeak',DM1.Co,S)then begin
DM1.ADODataSet8.Requery();
DM1.ADODataSet9.Requery();
end;
DM1.ADODataSet1.UpdateBatch;
end;
end;
Close;
end;
procedure TEditClientForm.RzBitBtn2Click(Sender: TObject);
begin
Close;
end;
procedure TEditClientForm.RzBitBtn3Click(Sender: TObject);
begin
//添加联系人
DM1.ADODataSet2.Append;
EditLinkmanForm.ShowModal;
end;
procedure TEditClientForm.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
DM1.ADODataSet1.Cancel;
end;
procedure TEditClientForm.RzBitBtn4Click(Sender: TObject);
begin
//增加拜访记录
DM1.ADODataSet4.Append;
CallatForm.ShowModal;
end;
procedure TEditClientForm.RzBitBtn5Click(Sender: TObject);
begin
//增加预约记录
DM1.ADODataSet8.Append;
EditBespeakForm.ShowModal;
end;
procedure TEditClientForm.DBComboBox2Exit(Sender: TObject);
var
i:integer;
B:Boolean;
begin
//如果发现输入的名称与列表的不一致,则新增不一致名称到列表中
B:=false;
if DBComboBox2.Text=''then Exit;
for i:=0 to DM1.List.Count-1 do begin
if (DBComboBox2.Text<>DM1.List.Strings[i])and not(B=true) then
B:=false
else B:=true;
end;
if not B then begin
DM1.ADODataSet3.Append;
DM1.ADODataSet3.FieldByName('地区名称').AsString:=DBComboBox2.Text;
DM1.ADODataSet3.Post;
DM1.ADODataSet3.Requery();
DM1.UpdateAreaList;
end;
end;
procedure TEditClientForm.RzDBEdit1Exit(Sender: TObject);
begin
//检测客户编号是否重复
with DM1.ADOQuery1 do try
Close;
SQL.Clear;
SQL.Add('Select * from ClientData where ID=:PM');
Parameters.ParamByName('PM').Value:=RzDBEdit1.Text;
Open;
if ((DM1.ADODataSet1.State in[dsEdit])and(RecordCount=1)and(RzDBEdit1.Text<>DM1.ClientNo))or
((DM1.ADODataSet1.State in[dsInsert])and(RecordCount>0))then
begin
Messagebox(handle,'您输入的编号已存在,请重新输入!','错误',MB_OK+MB_ICONERROR);
RzDBEdit1.SetFocus;
RzDBEdit1.Undo;
end;
except
end;
end;
procedure TEditClientForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
if DM1.ADODataSet1.State in [dsEdit,dsInsert] then begin
if Messagebox(handle,'该客户资料已经修改过,您确定要放弃保存并退出吗?','询问',MB_YESNO+MB_ICONQUESTION)=IDYES then
Canclose:=true
else CanClose:=false;
end;
end;
Function TEditClientForm.ChangeClientName(Tablest, OClient, NClient: String):Boolean;
var I : Integer;
begin
//更变客户名称
Result:=FALSE;
with DM1.ADOQuery1 do try
Close;
SQL.Clear;
SQL.Add('Select * from '+Tablest+' where ClientName='+''''+OClient+'''');
Open;
if RecordCount>0 then begin
Result:=true;
First;
Edit;
for i:=0 to RecordCount-1 do begin
FieldByName('ClientName').AsString:=NClient;
Next;
Edit;
end;
post;
end;
except
end;
end;
procedure TEditClientForm.RzDBComboBox1Exit(Sender: TObject);
begin
TestDataType(RzDBComboBox1.Text,'客户类型',RzDBComboBox1.Items);
end;
procedure TEditClientForm.TestDataType(InText, Field: String;
Lists: TStrings);
begin
//检测输入的类型是否和原来一致,如果不是,则写入
if InText='' then Exit;
with DM1.ADOQuery1 do try
Close;
SQL.Clear;
SQL.Add('Select * from Sort where Sorts='+''''+Field+''''+' and Items='+''''+InText+'''');
Open;
if RecordCount<1 then begin
Edit;
FieldByName('Sorts').AsString:=Field;
FieldByName('Items').AsString:=InText;
Lists.Add(InText);
post;
end;
DM1.ADOSort.Requery();
except
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -