📄 u_order.pas
字号:
unit U_Order;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, U_Bill_Base, DB, ADODB, WinSkinData, Grids, DBGridEh, DBCtrls,
Buttons, ExtCtrls, StdCtrls, Mask, DBGrids, DBSumLst;
type
TF_Order = class(TF_Bill_Base)
ADO_DetailProductTm: TStringField;
ADO_DetailItemNO: TStringField;
ADO_DetailOrderCount: TIntegerField;
ADO_DetailhandCount: TIntegerField;
ADO_DetailPerhandcount: TIntegerField;
ADO_DetailOrderMoney: TBCDField;
ADO_masterOrderNo: TStringField;
ADO_masterCustno: TStringField;
ADO_masterCustname: TStringField;
ADO_masterFax: TStringField;
ADO_masterTel: TStringField;
ADO_masterDeliAddress: TStringField;
ADO_masterEmail: TStringField;
ADO_masterOrderDate: TDateTimeField;
ADO_masterDeliDate: TDateTimeField;
ADO_masterAllhandCount: TIntegerField;
ADO_masterAllcount: TFloatField;
ADO_masterAllmoney: TBCDField;
ADO_masterZkRate: TFloatField;
ADO_masterZkAllmoney: TBCDField;
Label1: TLabel;
ECustno: TDBEdit;
Label2: TLabel;
ECustname: TDBEdit;
Label3: TLabel;
Efax: TDBEdit;
Label4: TLabel;
ETel: TDBEdit;
Label5: TLabel;
EAdd: TDBEdit;
Label6: TLabel;
EOrderDate: TDBEdit;
Label7: TLabel;
EDelidate: TDBEdit;
ADO_DetailOrderNo: TStringField;
Label8: TLabel;
EOrderno: TDBEdit;
Label9: TLabel;
EOperateman: TEdit;
Label10: TLabel;
EZkrate: TDBEdit;
ADO_DetailOrderPrice: TFloatField;
ADO_DetailGroupname: TStringField;
ADO_DetailGroupNO: TStringField;
Ado_MasterOperateMan: TStringField;
Check: TCheckBox;
CheckBox1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure btn_saveClick(Sender: TObject);
procedure btn_deleteClick(Sender: TObject);
procedure ECustnoKeyPress(Sender: TObject; var Key: Char);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure DBGridEhColExit(Sender: TObject);
procedure ECustnoExit(Sender: TObject);
procedure btn_insertClick(Sender: TObject);
procedure ADO_DetailAfterInsert(DataSet: TDataSet);
procedure ADO_DetailBeforePost(DataSet: TDataSet);
procedure btn_editClick(Sender: TObject);
procedure Ado_MasterBeforePost(DataSet: TDataSet);
procedure btn_printClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_Order: TF_Order;
implementation
uses U_DM, U_Function, U_Report_Frame;
{$R *.dfm}
procedure TF_Order.FormCreate(Sender: TObject);
begin
inherited;
height := 470;
width := 649;
EOperateman.Text := Username;
end;
procedure TF_Order.btn_saveClick(Sender: TObject);
begin
inherited;
if MyTrim(ECustno.Text) = '' then
begin
Application.MessageBox('客户编号不能为空', '提示信息', MB_ICONInformation + MB_OK);
ECustno.SetFocus;
Exit;
end;
if MyTrim(EOrderDate.Text) = '' then
begin
Application.MessageBox('订货日期不能为空', '提示信息', MB_ICONInformation + MB_OK);
EOrderDate.SetFocus;
Exit;
end;
//Ado_master.FieldByName('AllhandCount').AsInteger:=dbgrideh.fi
//Ado_master.FieldByName('Allcount').AsInteger:=
//Ado_master.FieldByName('Allmoney').AsInteger:=
//Ado_master.FieldByName('ZkAllmoney').AsInteger:=
//Ado_master.FieldByName('AllhandCount').AsInteger:=
if Ado_Detail.State in [dsinsert, dsedit] then
begin
Ado_Detail.Post;
end;
Ado_Detail.UpdateBatch(Arall);
opensql(F_dm.Temp, 'Select orderno,Sum(Isnull(Handcount,0)) Allhandcount,Sum(isnull(OrderCount,0)) Allcount,'
+ ' sum(Ordermoney) Allmoney from OrderDetail where Orderno=''' + EOrderno.Text + ''' group by Orderno');
if F_Dm.Temp.RecordCount = 1 then
begin
Ado_Master.Edit;
Ado_Master.FieldByName('Allhandcount').AsInteger := F_Dm.Temp.fieldbyname('Allhandcount').AsInteger;
Ado_Master.FieldByName('Allcount').AsInteger := F_Dm.Temp.fieldbyname('Allcount').AsInteger;
Ado_Master.FieldByName('Allmoney').AsCurrency := F_Dm.Temp.fieldbyname('Allmoney').AsCurrency;
Ado_Master.FieldByName('zkAllmoney').AsCurrency := F_Dm.Temp.fieldbyname('Allmoney').AsCurrency * Thecustomer.Zkrate / 10;
Ado_Master.Post;
end;
Ado_Master.UpdateBatch(arall);
end;
procedure TF_Order.btn_deleteClick(Sender: TObject);
begin
inherited;
Execsql('Delete from OrderDetail where OrderNO=''' + EorderNo.Text + '''');
Ado_Master.Delete;
Ado_Detail.UpdateBatch(Arall);
end;
procedure TF_Order.ECustnoKeyPress(Sender: TObject; var Key: Char);
begin
inherited;
if key = #13 then
begin
Dbgrideh.SetFocus;
if CheckBox1.Checked then
Dbgrideh.SelectedIndex := 1
else
Dbgrideh.SelectedIndex := 0;
end;
end;
procedure TF_Order.FormKeyPress(Sender: TObject; var Key: Char);
begin
// inherited;
if Key = #13 then //vk_return
begin
// Key := #0;
if ActiveControl is TDbgrideh then
begin
if TDBGrideh(ActiveControl).SelectedIndex = dbgrideh.Columns.Count - 1 then
begin
if Checkbox1.Checked then
TDBGrideh(ActiveControl).SelectedIndex := 1
else
TDBGrideh(ActiveControl).SelectedIndex := 0;
Perform(CM_DialogKey, VK_TAB, 0);
end
else
begin
if (TDBGrideh(ActiveControl).SelectedIndex = 0) or (TDBGrideh(ActiveControl).SelectedIndex = 1) then //当是第一格时
begin
TDBGrideh(ActiveControl).SelectedIndex := TDBGrideh(ActiveControl).SelectedIndex + 3;
exit;
end
else
begin
if TDBGrideh(ActiveControl).SelectedIndex = 3 then //当是第4格时
begin
if TDBGRIDEH(ActiveControl).DataSource.DataSet.Fields[0].AsString = '' then
begin
if checkbox1.Checked then
TDBGrideh(ActiveControl).SelectedIndex := 1
else
TDBGrideh(ActiveControl).SelectedIndex := 0;
exit;
end
else
// if TDBGRIDEH(ActiveControl).Fields[3].AsInteger = 0 then
// begin
//// Application.MessageBox('手数不能为空,请输入手数!', '提示信息', MB_ICONinformation + MB_OK);
//// TDBGrideh(ActiveControl).SelectedIndex :=3;
// // exit;
// end;
begin
keybd_event(VK_TAB, KEYEVENTF_KEYUP, 0, 0);
if Checkbox1.Checked then
dbgrideh.SelectedIndex := 1
else
dbgrideh.SelectedIndex := 0;
// if Dbgrideh.DataSource.DataSet.Active then
// Begin
//// Dbgrideh.DataSource.DataSet.Append;
// Dbgrideh.SelectedIndex:=0;
Exit;
end;
end
else
begin
if Checkbox1.Checked then
TDBGrideh(ActiveControl).SelectedIndex := 1
else
TDBGrideh(ActiveControl).SelectedIndex := 0;
exit;
end;
end;
end;
end
else
//Perform(CM_DialogKey, VK_TAB, 0);
end;
end;
procedure TF_Order.DBGridEhColExit(Sender: TObject);
begin
inherited;
// if dbgrideh.Fields[dbgrideh.SelectedIndex].AsString='' then
// dbgrideh.SelectedIndex:=0;
if ado_Detail.ReadOnly then exit;
if dbgrideh.DataSource.DataSet.State in [dsEdit, dsInsert] then
begin
if dbgrideh.SelectedIndex = 0 then
begin
Getiteminfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, theitem);
Getgroupinfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, thegroup);
Dbgrideh.DataSource.DataSet.FieldByName('Groupname').AsString := Thegroup.Groupname;
Dbgrideh.DataSource.DataSet.FieldByName('Groupno').AsString := Thegroup.Groupno;
Dbgrideh.DataSource.DataSet.FieldByName('Itemno').AsString := TheItem.ITemNO;
Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger := TheItem.HandCount;
Dbgrideh.DataSource.DataSet.FieldByName('orderprice').AsFloat := TheItem.Price;
end;
// if dbgrideh.SelectedIndex = 1 then
// begin
// Getiteminfo(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, theitem);
// //GetgroupinfoA(dbgrideh.Fields[dbgrideh.SelectedIndex].AsString, thegroup);
// //Dbgrideh.DataSource.DataSet.FieldByName('Groupname').AsString := Thegroup.Groupname;
// //Dbgrideh.DataSource.DataSet.FieldByName('Groupno').AsString := Thegroup.Groupno;
// Dbgrideh.DataSource.DataSet.FieldByName('ItemNO').AsString := TheItem.ITemNO;
// Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger := TheItem.HandCount;
// Dbgrideh.DataSource.DataSet.FieldByName('orderprice').AsFloat := TheItem.Price;
// end;
end;
end;
procedure TF_Order.ECustnoExit(Sender: TObject);
begin
inherited;
if ECustno.Text <> '' then
if Ado_Master.State in [dsinsert, dsedit] then
begin
if getcustinfo('', TheCustomer, Ecustno.Text) then
begin
ECustname.Text := TheCustomer.Custname;
Eadd.Text := Thecustomer.Address;
EFax.Text := Thecustomer.Fax;
ETel.Text := Thecustomer.Tel;
EZkrate.Text := floattostr(Thecustomer.zkrate);
if Eorderno.Text = '' then
EOrderNo.text := CreateBillNo('order');
Ado_master.Post;
end
else
begin
Application.MessageBox('没有这个客户的资料!', '提示信息', MB_ICONinformation + MB_OK);
ECustno.SetFocus;
exit;
end;
end;
end;
procedure TF_Order.btn_insertClick(Sender: TObject);
begin
Ecustno.SetFocus;
inherited;
EORderdate.Text := FormatDatetime('YYYY-MM-DD', Date);
EDelidate.Text := FormatDatetime('YYYY-MM-DD', Date + 15);
end;
procedure TF_Order.ADO_DetailAfterInsert(DataSet: TDataSet);
begin
inherited;
if Dataset.State in [dsinsert, dsedit] then
begin
if Eorderno.Text = '' then
begin
Application.MessageBox('请先输入客户编号!', '提示信息', MB_ICONINFORMATION + MB_OK);
ECustno.SetFocus;
Exit
end
else
Dbgrideh.DataSource.DataSet.FieldByName('OrderNo').AsString := EOrderno.text;
Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger := 0;
Dbgrideh.DataSource.DataSet.FieldByName('OrderPrice').AsFloat := 0;
end;
end;
procedure TF_Order.ADO_DetailBeforePost(DataSet: TDataSet);
begin
inherited;
Dbgrideh.DataSource.DataSet.FieldByName('OrderNo').AsString := EOrderno.text;
Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger :=
Dbgrideh.DataSource.DataSet.FieldByName('Perhandcount').AsInteger *
Dbgrideh.DataSource.DataSet.FieldByName('Handcount').AsInteger;
Dbgrideh.DataSource.DataSet.FieldByName('Ordermoney').AsCurrency :=
Dbgrideh.DataSource.DataSet.FieldByName('OrderCount').AsInteger *
Dbgrideh.DataSource.DataSet.FieldByName('Orderprice').AsFloat;
end;
procedure TF_Order.btn_editClick(Sender: TObject);
begin
Ecustno.SetFocus;
inherited;
end;
procedure TF_Order.Ado_MasterBeforePost(DataSet: TDataSet);
begin
inherited;
dataset.FieldByName('OperateMan').AsString := EOperateman.Text;
dataset.FieldByName('Email').AsString := Thecustomer.Email;
end;
procedure TF_Order.btn_printClick(Sender: TObject);
//var F_Order_Report:TF_Order_Report;
begin
inherited;
if not Assigned(F_Order_Report) then
Application.CreateForm(TF_Order_Report, F_Order_Report);
// F_Order_Report:=tF_Order_Report.Create(self);
F_Order_Report.ISPrintRate := Check.Checked;
F_Order_Report.show;
F_Order_Report.Preview;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -