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

📄 partorder.pas

📁 主要是介绍DELPHI三层应用以及分布式数据库的应用
💻 PAS
字号:
unit partorder;

interface

uses
  Windows, Messages, Classes, SysUtils, Graphics, Controls, StdCtrls, Forms,
  Dialogs, DBCtrls, DB, Mask, ComCtrls, DBTables, Grids, DBGrids, ExtCtrls,
  ADODB;

type
   TForm_partorder = class(TForm)
    DataSource1: TDataSource;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    ScrollBox: TScrollBox;
    DBGrid1: TDBGrid;
    ADOQuery1: TADOQuery;
    StringGrid1: TStringGrid;
    Panel1: TPanel;
    btn_first: TButton;
    btn_prev: TButton;
    btn_next: TButton;
    btn_last: TButton;
    btn_addnew: TButton;
    btn_edit: TButton;
    btn_save: TButton;
    btn_cancel: TButton;
    btn_delete: TButton;
    GroupBox1: TGroupBox;
    Label6: TLabel;
    EditDBEdit6: TDBEdit;
    EditDBEdit7: TDBEdit;
    Label7: TLabel;
    Label1: TLabel;
    DBEdit1: TDBEdit;
    GroupBox2: TGroupBox;
    Label2: TLabel;
    DBComboBox1: TDBComboBox;
    Label3: TLabel;
    EditDBEdit3: TDBEdit;
    Label4: TLabel;
    EditDBEdit4: TDBEdit;
    GroupBox3: TGroupBox;
    Label5: TLabel;
    EditDBEdit5: TDBEdit;
    Label8: TLabel;
    EditDBEdit8: TDBEdit;
    Label9: TLabel;
    DBMemo1: TDBMemo;
    Panel2: TPanel;
    Label22: TLabel;
    Label23: TLabel;
    Label24: TLabel;
    btn_filterfield: TButton;
    btn_filterrecord: TButton;
    Button2: TButton;
    Label10: TLabel;
    dbedit2: TDBComboBox;
    procedure FormCreate(Sender: TObject);
    procedure btn_firstClick(Sender: TObject);
    procedure btn_prevClick(Sender: TObject);
    procedure btn_nextClick(Sender: TObject);
    procedure btn_lastClick(Sender: TObject);
    procedure btn_addnewClick(Sender: TObject);
    procedure btn_editClick(Sender: TObject);
    procedure btn_saveClick(Sender: TObject);
    procedure btn_cancelClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btn_filterfieldClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit1Enter(Sender: TObject);
    procedure EditDBEdit6Enter(Sender: TObject);
    procedure ADOQuery1AfterOpen(DataSet: TDataSet);
    procedure Button2Click(Sender: TObject);
    procedure DBComboBox1Exit(Sender: TObject);
    procedure btn_filterrecordClick(Sender: TObject);
    procedure btn_deleteClick(Sender: TObject);
    procedure dbedit2Exit(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure dbedit2Click(Sender: TObject);
    procedure DBComboBox1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
  private
    { private declarations }
    procedure DisableBtn;
    //定义过程,用来使某些按钮失效
    procedure EnableBtn;
    //定义过程,用来使某些按钮有效
    procedure AddPartNum ;
  public
    { public declarations }
  end;

var
  Form_partorder: TForm_partorder;
  j:integer;
  myIndex:array[1..10] of integer;
  myValue:array[1..10] of single;
  NotFirst:boolean;

implementation

uses wxp_dm, search, Unit_wxp, rp_order;

{$R *.DFM}

procedure TForm_partorder.FormCreate(Sender: TObject);
begin
  ADOQuery1.Open;
  NotFirst:=false;
  AddPartNum;
  if self.ADOQuery1.Recordset.RecordCount =0 then
       begin
          btn_delete.Enabled :=false;
          btn_edit.Enabled :=false;
       end;
end;


procedure Tform_partorder.DisableBtn ;
begin
    btn_first.Enabled :=false;
    btn_prev.Enabled :=false;
    btn_next.Enabled :=false;
    btn_last.Enabled :=false;

    btn_addnew.Enabled :=false;
    btn_edit.Enabled :=false;

end;


procedure Tform_partorder.EnableBtn ;
begin
    btn_first.Enabled :=true;
    btn_prev.Enabled :=true;
    btn_next.Enabled :=true;
    btn_last.Enabled :=true;

    btn_addnew.Enabled :=true;
    btn_edit.Enabled :=true;

end;









procedure TForm_partorder.btn_firstClick(Sender: TObject);
begin
     ADOQuery1.First ;
end;

procedure TForm_partorder.btn_prevClick(Sender: TObject);
begin
     if not ADOQuery1.Bof then
        ADOQuery1.Prior ;
end;

procedure TForm_partorder.btn_nextClick(Sender: TObject);
begin
     if not ADOQuery1.Eof then
        ADOQuery1.Next ;
end;

procedure TForm_partorder.btn_lastClick(Sender: TObject);
begin
     ADOQuery1.Last ;
end;

procedure TForm_partorder.btn_addnewClick(Sender: TObject);
begin
     DisableBtn;
     btn_delete.Enabled :=false;
     groupbox1.Enabled :=true;
     groupbox2.Enabled :=true;
     groupbox3.Enabled :=true;

     ADOQuery1.Insert;
//     self.DBEdit1.Text :=unit_wxp.SellStyle ;
     btn_save.Enabled :=true;
     btn_cancel.Enabled :=true;
     EditDBedit6.Text :=unit_wxp.myOffice ;
     dbedit1.Text :=datetostr(date) ;
     editdbedit8.SetFocus ;
     editdbedit8.Text :=  datetostr(date);
     dbcombobox1.SetFocus ;
     
end;

procedure TForm_partorder.btn_editClick(Sender: TObject);
begin
     DisableBtn;
     groupbox1.Enabled :=true;
     groupbox2.Enabled :=true;
     groupbox3.Enabled :=true;     
     ADOQuery1.Edit ;
     btn_save.Enabled :=true;
     btn_cancel.Enabled :=true;
     btn_delete.Enabled :=false;
end;

procedure TForm_partorder.btn_saveClick(Sender: TObject);
begin
        if (dbcombobox1.Text ='') and (dbedit2.Text ='') then
        begin
          showmessage('  零件编号和名称不能为空,请填写!');
          exit;
        end;
        ADOQuery1.Post    ;
        btn_save.Enabled :=false;
        btn_cancel.Enabled :=false;
        groupbox1.Enabled :=false;
        groupbox2.Enabled :=false;
        groupbox3.Enabled :=false;
        //锁住所有文本框
        //LockEdit;
        //使按钮有效
        EnableBtn ;
        btn_delete.Enabled :=true;
        label23.Caption :=inttostr(self.ADOQuery1.Recordset.RecordCount);
end;

procedure TForm_partorder.btn_cancelClick(Sender: TObject);
begin
        ADOQuery1.Cancel ;
        EnableBtn;
        //LockEdit;
        btn_cancel.Enabled :=false;
        btn_save.Enabled :=false;
     groupbox1.Enabled :=false;
     groupbox2.Enabled :=false;
     groupbox3.Enabled :=false;
     btn_edit.Enabled :=false;
     if  ADOQuery1.Recordset.RecordCount <>0 then
        begin
          btn_delete.Enabled :=true;
          btn_edit.Enabled :=true;
        end;
end;

procedure TForm_partorder.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
     action:=cafree;
end;

procedure TForm_partorder.btn_filterfieldClick(Sender: TObject);
begin
        Application.CreateForm(TForm_search, Form_search);
        form_search.TransADO  :=self.ADOQuery1 ;
        unit_wxp.WhichForm:=2;
        //showmessage(inttostr(adoquery1.FieldCount));
        //adoquery1.FieldCount

        form_search.Showmodal ;
end;

procedure TForm_partorder.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if Key = #13 then
    begin
      Key := #0;
      Perform(WM_NEXTDLGCTL, 0, 0);
    end;
end;

procedure TForm_partorder.DBEdit1Enter(Sender: TObject);
begin
     dbedit1.Text :=datetostr(date) ;
end;

procedure TForm_partorder.EditDBEdit6Enter(Sender: TObject);
begin
     editdbedit6.Text :=unit_wxp.myOffice  ;
end;

procedure TForm_partorder.ADOQuery1AfterOpen(DataSet: TDataSet);
var
i:integer;
tempName:string;
begin
     Label23.Caption :=inttostr(ADOQuery1.Recordset.RecordCount) ;
     if NotFirst=false then
     begin
        StringGrid1.Cells [0,1]:='合计';
        StringGrid1.Cells [0,0]:='统计数据';
        j:=0;
        for i:=0 to self.ADOQuery1.FieldList.Count-1  do
        begin
                //list_fields.Items.Add  (TransADO.Fields[i].FieldName  );
                //将每个字段的字段类型放在数组中
                unit_wxp.FieldType[i]:= self.ADOQuery1.Fields[i].DataType;
                tempName:= self.ADOQuery1.Fields[i].FieldName;
                if (tempName<>'已付款') and (tempName<>'单价')  and (tempName<>'序号') then
                begin

                if (unit_wxp.GetFieldType(i)='number') or  (unit_wxp.GetFieldType(i)='money') then
                begin
                   j:=j+1;
                   StringGrid1.Cells [j,0]:=  self.ADOQuery1 .Fields[i].FieldName ;
                   stringgrid1.ColCount := stringgrid1.ColCount +1;
                   myIndex[j]:=i;

                end;
                end;
        end;
        NotFirst:=true;
     end;

     while not ADOQuery1.Eof do
     begin
          for  i:=1 to j do
          begin
               myValue[i]:=myValue[i]+ADOQuery1.Fields.Fields[myIndex[i]].AsFloat ;

          end;
          ADOQuery1.Next ;

     end;
     for i:=1 to j do
     begin
         stringgrid1.Cells[i,1]:=floattostr(myValue[i]);
         myValue[i]:=0;
     end;
end;

procedure TForm_partorder.Button2Click(Sender: TObject);
begin
     self.ADOQuery1.Active :=false;
     self.ADOQuery1.SQL.Clear ;
     self.ADOQuery1.SQL.Add('select * from pub_z_partorder ');
     self.ADOQuery1.Active :=true;
     unit_wxp.FinalSql := 'select * from pub_z_partorder ';
end;


procedure  TForm_partorder.AddPartNum();
begin
     dm_wxp.ADOQuery1.Close ;
     dm_wxp.ADOQuery1.SQL.Clear ;
     dm_wxp.ADOQuery1.SQL.Add('select 编号,名称 from pub_z_part' );

     dm_wxp.ADOQuery1.Active :=true ;

      while not  dm_wxp.ADOQuery1.Eof    do
      begin
         DBComboBox1.Items.Add(dm_wxp.ADOQuery1.Fields.Fields[0].asstring) ;
         dbedit2.Items.Add(dm_wxp.ADOQuery1.Fields.Fields[1].asstring);
         dm_wxp.ADOQuery1.Next ;
      end;
      dm_wxp.ADOQuery1.Active :=false ;


end;

procedure TForm_partorder.DBComboBox1Exit(Sender: TObject);
begin
     if dbcombobox1.Text <>'' then
     begin
     dm_wxp.ADOQuery1.Active :=false;
     dm_wxp.ADOQuery1.SQL.Clear ;
     //showmessage('select 名称,机型,型号 from pub_z_part where 编号='''
     //+self.EditDBEdit2.Text +'''');
     dm_wxp.ADOQuery1.SQL.Add('select 机型,型号,名称 from pub_z_part where 编号='''
     +trim(self.DBComboBox1.Text) +'''');

     dm_wxp.ADOQuery1.Active :=true;
     //showmessage(inttostr(dm_wxp.ADOQuery1.RecordCount ));

     //dm_wxp.ADOQuery1.First ;
     if   dm_wxp.ADOQuery1.eof then

     begin
         showmessage('该零件不存在');
         //dm_wxp.ADOQuery1.Cancel ;
         //DBComboBox1.setfocus;


     end;
     end ;
end;

procedure TForm_partorder.btn_filterrecordClick(Sender: TObject);
begin
     Application.CreateForm(TQReport_order, QReport_order);
     QReport_order.adoquery1.Active :=false;
     QReport_order.adoquery1.SQL.Clear ;
     QReport_order.adoquery1.SQL.Add(unit_wxp.FinalSql );
     QReport_order.adoquery1.Active :=true;
     QReport_order.QRLabel9.Caption:=unit_wxp.myOffice ;
     QReport_order.Preview ;
     QReport_order.Free ;
end;

procedure TForm_partorder.btn_deleteClick(Sender: TObject);
begin
if application.MessageBox(pchar('确信要删除这条记录嘛?'),
        pchar('注意'),MB_OKCANCEL)=IDOK then
        self.ADOQuery1.Delete ;
if self.ADOQuery1.Recordset.RecordCount =0 then
        begin
          btn_delete.Enabled :=false;
          btn_edit.Enabled :=false;
        end;
label23.Caption :=inttostr(self.ADOQuery1.Recordset.RecordCount);
end;

procedure TForm_partorder.dbedit2Exit(Sender: TObject);
begin
     if dbedit2.Text <>'' then
     begin
     dm_wxp.ADOQuery1.Active :=false;
     dm_wxp.ADOQuery1.SQL.Clear ;
     //showmessage('select 名称,机型,型号 from pub_z_part where 编号='''
     //+self.EditDBEdit2.Text +'''');
     dm_wxp.ADOQuery1.SQL.Add('select 机型,型号,编号 from pub_z_part where 名称='''
     +trim(self.dbedit2.Text) +'''');

     dm_wxp.ADOQuery1.Active :=true;
     //showmessage(inttostr(dm_wxp.ADOQuery1.RecordCount ));

     //dm_wxp.ADOQuery1.First ;
     if   dm_wxp.ADOQuery1.eof then

     begin
         showmessage('该零件不存在');
         //dm_wxp.ADOQuery1.Cancel ;
         //DBComboBox1.setfocus;


     end;
     end;
end;

procedure TForm_partorder.FormDestroy(Sender: TObject);
begin
  Form_partorder:=nil;
end;

procedure TForm_partorder.dbedit2Click(Sender: TObject);
begin
dm_wxp.ADOQuery1.Active :=false;
     dm_wxp.ADOQuery1.SQL.Clear ;
     //showmessage('select 名称,机型,型号 from pub_z_part where 编号='''
     //+self.EditDBEdit2.Text +'''');
     dm_wxp.ADOQuery1.SQL.Add('select 机型,型号,编号 from pub_z_part where 名称='''
     +trim(self.dbedit2.Text) +'''');

     dm_wxp.ADOQuery1.Active :=true;
     //showmessage(inttostr(dm_wxp.ADOQuery1.RecordCount ));

     //dm_wxp.ADOQuery1.First ;
     if  not dm_wxp.ADOQuery1.eof then
     begin
          self.EditDBEdit4.Text :=dm_wxp.ADOQuery1.Fields.Fields[0].AsString ;
          self.EditDBEdit3.Text :=dm_wxp.ADOQuery1.Fields.Fields[1].AsString ;
          self.ADOQuery1.FieldValues['编号']:=dm_wxp.ADOQuery1.Fields.Fields[2].AsString ;
          //self.DBComboBox1.Text :=dm_wxp.ADOQuery1.Fields.Fields[2].AsString ;
     end
     else
     begin
         showmessage('该零件不存在');
         //dm_wxp.ADOQuery1.Cancel ;
         //DBComboBox1.setfocus;


     end;
end;

procedure TForm_partorder.DBComboBox1Click(Sender: TObject);
begin
dm_wxp.ADOQuery1.Active :=false;
     dm_wxp.ADOQuery1.SQL.Clear ;
     //showmessage('select 名称,机型,型号 from pub_z_part where 编号='''
     //+self.EditDBEdit2.Text +'''');
     dm_wxp.ADOQuery1.SQL.Add('select 机型,型号,名称 from pub_z_part where 编号='''
     +trim(self.DBComboBox1.Text) +'''');

     dm_wxp.ADOQuery1.Active :=true;
     //showmessage(inttostr(dm_wxp.ADOQuery1.RecordCount ));

     //dm_wxp.ADOQuery1.First ;
     if  not dm_wxp.ADOQuery1.eof then
     begin
          self.EditDBEdit4.Text :=dm_wxp.ADOQuery1.Fields.Fields[0].AsString ;
          self.ADOQuery1.FieldValues['名称']:=dm_wxp.ADOQuery1.Fields.Fields[2].AsString ;
          self.EditDBEdit3.Text :=dm_wxp.ADOQuery1.Fields.Fields[1].AsString ;
          //self.DBEdit2.Text :=dm_wxp.ADOQuery1.Fields.Fields[2].AsString ;
     end
     else
     begin
         showmessage('该零件不存在');
         //dm_wxp.ADOQuery1.Cancel ;
         //DBComboBox1.setfocus;


     end;
end;

procedure TForm_partorder.PageControl1Change(Sender: TObject);
begin
     if pagecontrol1.TabIndex =0 then
     begin
       panel1.Enabled :=true;
     end
     else
     begin
       panel1.Enabled :=false;
     end;
end;

end.

⌨️ 快捷键说明

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