📄 partorder.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 + -