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

📄 clientlist.pas

📁 一个源码客户信息管理系统
💻 PAS
字号:
unit ClientList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzTabs, ExtCtrls, ComCtrls, ToolWin,
  Menus, StdCtrls, DBCtrls, ADODB, DB, Shellapi,
  cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, cxDBData, cxTextEdit, cxGridCustomTableView, cxGridTableView,
  cxGridDBTableView, cxControls, cxGridCustomView, cxClasses, cxGridLevel,
  cxGrid, RzDBEdit;

type
  TClientListForm = class(TForm)
    RzPageControl1: TRzPageControl;
    Splitter1: TSplitter;
    RzPageControl2: TRzPageControl;
    TabSheet1: TRzTabSheet;
    TabSheet2: TRzTabSheet;
    TabSheet3: TRzTabSheet;
    TabSheet4: TRzTabSheet;
    TabSheet5: TRzTabSheet;
    PopupMenu1: TPopupMenu;
    TabSheet6: TRzTabSheet;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    PopupMenu2: TPopupMenu;
    MenuItem1: TMenuItem;
    MenuItem2: TMenuItem;
    MenuItem3: TMenuItem;
    MenuItem4: TMenuItem;
    MenuItem5: TMenuItem;
    PopupMenu3: TPopupMenu;
    MenuItem6: TMenuItem;
    MenuItem7: TMenuItem;
    MenuItem8: TMenuItem;
    MenuItem9: TMenuItem;
    MenuItem10: TMenuItem;
    PopupMenu4: TPopupMenu;
    MenuItem11: TMenuItem;
    MenuItem12: TMenuItem;
    MenuItem13: TMenuItem;
    MenuItem14: TMenuItem;
    MenuItem15: TMenuItem;
    PopupMenu5: TPopupMenu;
    MenuItem16: TMenuItem;
    MenuItem17: TMenuItem;
    MenuItem18: TMenuItem;
    MenuItem19: TMenuItem;
    MenuItem20: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    RzDBMemo1: TRzDBMemo;
    cxGrid1: TcxGrid;
    cxGrid1Level1: TcxGridLevel;
    cxGrid1DBTableView1: TcxGridDBTableView;
    cxGrid1DBTableView1DBColumn: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn1: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn2: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn3: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn4: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn5: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn6: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn7: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn8: TcxGridDBColumn;
    cxGrid1DBTableView1EMAIL: TcxGridDBColumn;
    cxGrid1DBTableView1DBColumn9: TcxGridDBColumn;
    cxGrid2: TcxGrid;
    cxGrid2Level1: TcxGridLevel;
    cxGrid2DBTableView1: TcxGridDBTableView;
    cxGrid2DBTableView1ID: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn1: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn2: TcxGridDBColumn;
    cxGrid2DBTableView1EMail: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn3: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn4: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn5: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn6: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn7: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn8: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn9: TcxGridDBColumn;
    cxGrid3: TcxGrid;
    cxGrid3Level1: TcxGridLevel;
    cxGrid3DBTableView1: TcxGridDBTableView;
    cxGrid3DBTableView1DBColumn: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn1: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn2: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn3: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn4: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn5: TcxGridDBColumn;
    cxGrid3DBTableView1DBColumn6: TcxGridDBColumn;
    cxGrid4: TcxGrid;
    cxGrid4Level1: TcxGridLevel;
    cxGrid4DBTableView1: TcxGridDBTableView;
    cxGrid4DBTableView1DBColumn: TcxGridDBColumn;
    cxGrid4DBTableView1DBColumn1: TcxGridDBColumn;
    cxGrid4DBTableView1DBColumn2: TcxGridDBColumn;
    cxGrid4DBTableView1DBColumn3: TcxGridDBColumn;
    cxGrid5: TcxGrid;
    cxGrid5Level1: TcxGridLevel;
    cxGrid5DBTableView1: TcxGridDBTableView;
    cxGrid5DBTableView1DBColumn: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn1: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn2: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn3: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn4: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn5: TcxGridDBColumn;
    cxGrid5DBTableView1DBColumn6: TcxGridDBColumn;
    cxGrid2DBTableView1DBColumn10: TcxGridDBColumn;
    N21: TMenuItem;
    N23: TMenuItem;
    N24: TMenuItem;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    //编辑客户信息内容
    procedure EditClient(ID:integer);
    //清除数据表的内容
    procedure ClearData(TableName,CoName,Co : String);
    //删除一条记录
    procedure DeleteData(DataSet, UpDateDataSet :TADODataSet);
    procedure N1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure N8Click(Sender: TObject);
    //发E-MAIL或上WEB
    procedure SendEMailorWeb(ID : Integer);
    procedure cxGrid1DBTableView1DblClick(Sender: TObject);
    procedure cxGrid2DBTableView1DblClick(Sender: TObject);
    procedure cxGrid3DBTableView1DblClick(Sender: TObject);
    procedure cxGrid4DBTableView1DblClick(Sender: TObject);
    procedure cxGrid5DBTableView1DblClick(Sender: TObject);
    procedure N13Click(Sender: TObject);
    //自动生成订单号
    procedure AutoOrderFormID;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  ClientListForm: TClientListForm;

implementation

uses DM, EditClient, EditLinkmanForm1, MAIN, CallatForm1, Editsell,
  EditBespeak;

{$R *.dfm}

procedure TClientListForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
   Action:=caFree;
end;

procedure TClientListForm.EditClient(ID: integer);
var
   Cos : String;
begin
//编辑客户信息内容
Cos:= DM1.ADODataSet1.FieldByName('CoName').AsString;
   case ID of
      1  :  DM1.ADODataSet1.Append;
      3  :  begin
               if Messagebox(handle,'删除该客户记录将会使与该客户相关的所有基本资料都被删除,您确定要删除这些记录吗?删除后不可恢复!','警告',MB_YESNO+MB_ICONWARNING+MB_DEFBUTTON2)=IDYES then begin
                  if DM1.ADODataSet1.RecordCount>0 then begin
                     ClearData('LinkMan','ClientName', Cos);
                     DM1.ADODataSet2.Requery;
                     ClearData('ClientVisit','ClientName',Cos);
                     DM1.ADODataSet4.Requery;
                     ClearData('ProductSell','ClientName',Cos);
                     DM1.ADODataSet6.Requery;
                     ClearData('ClientBespeak','ClientName',Cos);
                     DM1.ADODataSet8.Requery;
                     ClearData('SellDetail','ClientName',Cos);
                     DM1.ADODataSet7.Requery;
                     DM1.ADODataSet1.Delete;
                  end else Messagebox(handle,'没有发现可删除的记录','错误',MB_OK+MB_ICONWARNING);
               end;
            end;
      4  :  DM1.ADODataSet1.Requery;
      32 :  begin
            with DM1.ADODataSet1 do try
               Close;
               CommandText:='Select * from ClientData';
               Open;
            except
            end;
            end;

      //**************************************
      5  :  DM1.ADODataSet2.Append;
      //6  :  DM1.ADODataSet2.Edit;
      7  :  DeleteData(DM1.ADODataSet2,DM1.LinkManList);
      8  :  DM1.ADODataSet2.Requery;
      //*********************************
      9  :  DM1.ADODataSet4.Append;
      11 :  DeleteData(DM1.ADODataSet4, DM1.ADODataSet10);
      12 :  DM1.ADODataSet4.Requery;
      //*********************************
      13 :  AutoOrderFormID;
      14 :  begin
              if DM1.ADODataSet6.RecordCount=0 then begin
                 Messagebox(handle,'没有任何可编辑的销售记录,请增加记录!','提示',MB_OK+MB_ICONINFORMATION);
                 Exit;
              end else begin
                 EditSellForm.IsInsert:=false;
                 DM1.ADODataSet6.Edit;
              end;
            end;
      15 :  begin
              if Messagebox(handle,'删除本条销售记录将会使与之相关的具体销售信息被删除,您确定要这么做吗?','询问',MB_YESNO+MB_ICONWARNING)=IDYES then begin
                 if DM1.ADODataSet6.RecordCount>0 then begin
                    ClearData('SellDetail','ClientName',Cos);
                    DM1.ADODataSet6.Delete;
                    MainForm.StatProductSell;
                    DM1.SellList.Requery();
                 end else Messagebox(handle,'没有发现可删除的记录','错误',MB_OK+MB_ICONWARNING);
              end;
            end;  
      16 :  DM1.ADODataSet6.Requery;
      //**********************************
      17 :  DM1.ADODataSet8.Append;
      19 :  begin
               DeleteData(DM1.ADODataSet8, DM1.ADODataSet9);
               MainForm.ShowCalendar;
            end;   
      20 :  DM1.ADODataSet8.Requery;

   end;

   case ID of
      1,2 : EditClientForm.ShowModal;  //客户编辑窗口
      5,6 : EditLinkmanForm.ShowModal; //联系人编辑窗口
      9,10: CallatForm.ShowModal;      //会面记录
        14: EditSellForm.ShowModal;   //销售窗口
     17,18: EditBespeakForm.ShowModal;//预约窗口
   end;

end;

procedure TClientListForm.N1Click(Sender: TObject);
begin
   EditClient(TPopupMenu(sender).Tag);
end;

procedure TClientListForm.FormResize(Sender: TObject);
begin
   //调整窗口
   RzPageControl2.Height:=(ClientListForm.Height div 2)-30;
end;

procedure TClientListForm.ClearData(TableName, CoName, Co: String);
begin
//清除数据表的内容
with DM1.ADOQuery1 do try
   Close;
   SQL.Clear;
   SQL.Add('Delete From '+TableName+' Where '+CoName+'='+''''+Co+'''');
   ExecSQL;
except
   Messagebox(handle,'内容删除失败!在此之前,可能记录已经被删除!','错误',MB_OK+MB_ICONERROR);
   Exit;
end;

end;

procedure TClientListForm.DeleteData(DataSet, UpDateDataSet: TADODataSet);
begin
//删除一条记录
try
  if Messagebox(handle,'您确定要删除这条记录吗?','询问',MB_YESNO+MB_ICONQUESTION)=IDYES then
     if DataSet.RecordCount>0 then begin
        DataSet.Delete;
        UpDateDataSet.Requery();
     end
     else Messagebox(handle,'没有发现可删除的记录','错误',MB_OK+MB_ICONWARNING);
except
   Messagebox(Handle,'记录删除失败,可能在此之前已经被删除或更改过,请刷新数据库。','警告',MB_OK+MB_ICONWARNING);
end;   
end;

procedure TClientListForm.N8Click(Sender: TObject);
begin
   SendEMailorWeb(TPopupMenu(sender).Tag);
end;

procedure TClientListForm.SendEMailorWeb(ID: Integer);
var
  Web, EMail, Email2 : String;
begin
//发送电子邮件或上该公司主页
Web := DM1.ADODataSet1.FieldByName('WEBs').AsString;
EMail := 'mailto:'+DM1.ADODataSet1.FieldByName('EMail').AsString;
Email2:= 'mailto:'+DM1.ADODataSet2.FieldByName('EMail').AsString;

  case ID of
     100 : begin
             if Web<>'' then
                ShellExecute(handle,nil,PChar(web),nil,nil,SW_SHOWNORMAL)
             else Messagebox(handle,'该公司没有主页信息!','提示',MB_OK+MB_ICONINFORMATION);
           end;
     101 : begin
             if (Email<>'mailto:')then
                ShellExecute(handle,nil,pchar(Email),nil,nil,SW_SHOWNORMAL)
             else Messagebox(handle,'没有该公司的电子邮件信息!','提示',MB_OK+MB_ICONINFORMATION);
           end;
     102 : begin
             if Email2<>'mailto:' then
                ShellExecute(handle,nil,pchar(EMail2),nil,nil,SW_SHOWNORMAL)
             else Messagebox(handle,'没有该联系人的电子邮件信息!','提示',MB_OK+MB_ICONINFORMATION);
           end;
  end;
end;

procedure TClientListForm.cxGrid1DBTableView1DblClick(Sender: TObject);
begin
   EditClient(2);
end;

procedure TClientListForm.cxGrid2DBTableView1DblClick(Sender: TObject);
begin
  EditClient(6);
end;

procedure TClientListForm.cxGrid3DBTableView1DblClick(Sender: TObject);
begin
  EditClient(10);
end;

procedure TClientListForm.cxGrid4DBTableView1DblClick(Sender: TObject);
begin
  EditClient(14);
end;

procedure TClientListForm.cxGrid5DBTableView1DblClick(Sender: TObject);
begin
  EditClient(18);
end;

procedure TClientListForm.N13Click(Sender: TObject);
begin
   MainForm.PrintReport(TMenuItem(sender).Tag);
end;

procedure TClientListForm.AutoOrderFormID;
var
   Order, OrderID,
   AddID          : String;
   GetID          : Word;
   Index          : Integer;
begin
//自动生成订单号
  with DM1.ADOQuery1 do try
     Close;
     SQL.Clear;
     //按NUM排序
     SQL.Add('Select * from ProductSell ORDER BY Num ASC');
     Open;
     Last;
     Order:=FieldByName('OrderFormID').AsString;
     Close;
  except
  end;

  //如果没有今天的销售编号
  GetID:=pos('XS'+FormatDateTime('yyyyMMdd',now),Order);
  if GetID=0 then begin
     OrDerID:='XS'+FormatDateTime('yyyyMMdd',now)+'001';
  end else begin
  //如果有,则提取最后三位数
     AddID:=Copy(Order,11,3);
     Index:=StrToInt(addid);
     Inc(index);
     OrderID:='XS'+FormatDateTime('yyyyMMdd',now)+FormatFloat('000',Index);
  end;
  if Length(OrderID)=13 then begin
     with DM1.ADODataSet6 do try
       Append;
       FieldByName('OrderFormID').AsString:=OrderID;
       post;
     except
     end;
     EditSellForm.IsInsert:=true;
     DM1.ADODataSet6.Edit;
     EditSellForm.ShowModal;
  end;


end;

end.

⌨️ 快捷键说明

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