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

📄 unitorderbill_edit.pas

📁 仓库出单管理系统,采用SQL数据库,功能并不强大,但在操作的方便性上花了一点功夫,对新手有一定的学习作用
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit UnitOrderBill_Edit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView,
  cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls,
  cxGridCustomView, cxGrid, StdCtrls, RzButton, pngimage, ExtCtrls,
  wwdblook, Mask, wwdbedit, wwdbdatetimepicker,ADODB, cxDBLookupComboBox,
  cxCalc, DBCtrls, cxContainer, cxTextEdit, cxMaskEdit, cxDropDownEdit,
  cxLookupEdit, cxDBLookupEdit, cxCurrencyEdit, Grids, Wwdbigrd, Wwdbgrid,
  DBGrids, RzDBGrid;

type
  TFrmOrderBill_Edit = class(TForm)
    Panel2: TPanel;
    Image1: TImage;
    BtnOK: TRzBitBtn;
    BtnNo: TRzBitBtn;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    cxGrid2: TcxGrid;
    cxGridDBTableView1: TcxGridDBTableView;
    cxGridLevel1: TcxGridLevel;
    wwDBEdit4: TwwDBEdit;
    Label5: TLabel;
    wwDBLookupCombo2: TwwDBLookupCombo;
    Label2: TLabel;
    cxGridDBTableView1ProductName: TcxGridDBColumn;
    cxGridDBTableView1Spec: TcxGridDBColumn;
    cxGridDBTableView1Amount: TcxGridDBColumn;
    cxGridDBTableView1TotalWeight: TcxGridDBColumn;
    cxGridDBTableView1TotalPrice: TcxGridDBColumn;
    Label154: TLabel;
    wwDBDateTimePicker1: TwwDBDateTimePicker;
    Label1: TLabel;
    wwDBLookupCombo1: TwwDBLookupCombo;
    cxGridDBTableView1Column1: TcxGridDBColumn;
    BtnAdd: TRzBitBtn;
    RzBitBtn213: TRzBitBtn;
    RzBitBtn121: TRzBitBtn;
    GroupBox3: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    wwDBEdit1: TwwDBEdit;
    wwDBEdit2: TwwDBEdit;
    DBGrid1: TDBGrid;
    RzDBGrid1: TRzDBGrid;
    procedure BtnNoClick(Sender: TObject);
    procedure BtnOKClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure cxGridDBTableView1ProductNamePropertiesCloseUp(
      Sender: TObject);
    procedure BtnAddClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure wwDBLookupCombo2CloseUp(Sender: TObject; LookupTable,
      FillTable: TDataSet; modified: Boolean);
    procedure RzBitBtn121Click(Sender: TObject);
    procedure RzBitBtn213Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure wwDBLookupCombo2Change(Sender: TObject);
    procedure wwDBLookupCombo2KeyPress(Sender: TObject; var Key: Char);
    procedure wwDBDateTimePicker1KeyPress(Sender: TObject; var Key: Char);
    procedure wwDBLookupCombo1KeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
    procedure RzDBGrid1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmOrderBill_Edit: TFrmOrderBill_Edit;

implementation

uses DMUnit, UnitOrderBill_Add, UnitOrderBill;

{$R *.dfm}

procedure TFrmOrderBill_Edit.BtnNoClick(Sender: TObject);
begin
  Close;
end;

procedure TFrmOrderBill_Edit.BtnOKClick(Sender: TObject);
Var
  i:Integer;
  TotalPrice:Currency;
  TotalWeight:double;
begin
  IF DM.ADOQueryOrderBill.State in [dsInsert,dsEdit] then
     DM.ADOQueryOrderBill.Post;
  IF DM.ADOTableBillDetail.State in [dsInsert,dsEdit] then
     DM.ADOTableBillDetail.Post;
   //===============更新总重量===========================
        TotalPrice:=0;
          TotalWeight:=0;
        DM.ADOTableBillDetail.First;
        For i:=1 to DM.ADOTableBillDetail.RecordCount do
        Begin
          TotalPrice:=TotalPrice+DM.ADOTableBillDetail.FieldByName('TotalPrice').AsCurrency;
          TotalWeight:=TotalWeight+DM.ADOTableBillDetail.FieldByName('TotalWeight').AsFloat;
          DM.ADOTableBillDetail.Next;
          Next;
        End;
        DM.ADOQueryOrderBill.Edit;
        DM.ADOQueryOrderBill.FieldByName('TotalPrice1').AsCurrency:=TotalPrice;
        DM.ADOQueryOrderBill.FieldByName('TotalWeight').AsFloat:=TotalWeight;
        DM.ADOQueryOrderBill.Post;

  //=============查询上一次的欠款情况,并打印出来===========
  DM.ADOQueryLackMoney.SQL.Clear;
  DM.ADOQueryLackMoney.SQL.Add(' Select * From ClientName where ClientName='''+DM.ADOQueryOrderBill.FieldByName('OrderClient').AsString+'''');
  DM.ADOQueryLackMoney.Active:=True;


  DM.RMGridReportBillDetail.LoadFromFile('Report/BillDetail.rls');
  DM.RMGridReportBillDetail.ShowReport;
  Close;
end;

procedure TFrmOrderBill_Edit.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  IF (DM.ADOQueryOrderBill.State in [dsInsert,dsEdit]) or  (DM.ADOTableBillDetail.State in [dsInsert,dsEdit]) then
  Begin
      if Messagebox(handle,'本信息已修改,您确定要放弃修改吗?','询问',MB_YESNO+MB_ICONQUESTION)=IDYES then
      Begin
         CanClose:=true;
         IF DM.ADOQueryOrderBill.State in [dsInsert,dsEdit] then  DM.ADOQueryOrderBill.Cancel;
         IF DM.ADOTableBillDetail.State in [dsInsert,dsEdit] then DM.ADOTableBillDetail.Cancel;
      end
      else
      CanClose:=false;
  End;
end;

procedure TFrmOrderBill_Edit.cxGridDBTableView1ProductNamePropertiesCloseUp(
  Sender: TObject);
begin
//ShowMessage(DM.ADOTableBillDetail.FieldValues['ProductName']);
//DM.ADOQueryClientPrice.Locate('ProductName',DM.ADOTableBillDetail.FieldByName('ProductName').AsString,[]);
//ShowMessage(DM.ADOQueryClientPrice.FieldValues['ProductName']);
 // DM.ADOTableBillDetail.FieldByName('Price').AsCurrency:=DM.ADOQueryClientPrice.FieldValues['ClientPrice'];

end;

procedure TFrmOrderBill_Edit.BtnAddClick(Sender: TObject);
begin
  if wwDBLookupCombo2.Text='' then
  Begin
      Application.MessageBox('客户名称不能为空,请选择后进行录入!','提醒',MB_IconInformation);
      wwDBLookupCombo2.SetFocus;
      Exit;
  End;
  DM.ADOQueryClientPrice.Filter:=' ClientName='''+wwDBLookupCombo2.Text+'''';
  DM.ADOQueryClientPrice.Filtered:=True;

  IF DM.ADOQueryOrderBill.State in [dsInsert,dsEdit] then
     DM.ADOQueryOrderBill.Post;
  
  DM.ADOTableBillDetail.Append;
  DM.ADOTableBillDetail.FieldByName('OrderBill_ID').AsString:=DM.ADOQueryOrderBill.FieldValues['id'];

  FrmOrderBill_Add.showModal;
end;

procedure TFrmOrderBill_Edit.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
    if DM.ADOTableBillDetail.RecordCount=0 then DM.ADOQueryOrderBill.Delete;
end;

procedure TFrmOrderBill_Edit.wwDBLookupCombo2CloseUp(Sender: TObject;
  LookupTable, FillTable: TDataSet; modified: Boolean);
begin
    if DM.ADOTableBillDetail.RecordCount>0 then
    Begin
     Application.MessageBox('已有明细记录,不能修改客户名称;请删除后再进行修改客户名称!','提醒',MB_IconInformation);
     DM.ADOQueryOrderBill.Cancel;
    End;
end;

procedure TFrmOrderBill_Edit.RzBitBtn121Click(Sender: TObject);
begin
  if DM.ADOTableBillDetail.RecordCount>0 then
  Begin
    DM.ADOQueryClientPrice.Filter:=' ClientName='''+wwDBLookupCombo2.Text+'''';
    DM.ADOQueryClientPrice.Filtered:=True;

    IF DM.ADOQueryOrderBill.State in [dsInsert,dsEdit] then
      DM.ADOQueryOrderBill.Post;
    FrmOrderBill_Add.showModal;
  End;
end;

procedure TFrmOrderBill_Edit.RzBitBtn213Click(Sender: TObject);
Var
  i:Integer;
  TotalPrice:Currency;
  TotalWeight:double;
begin
  if DM.ADOTableBillDetail.RecordCount>0 then
      if Messagebox(handle,'您确认要删除本条信息吗?','询问',MB_YESNO+MB_ICONQUESTION)=IDYES then
      Begin
        DM.ADOTableBillDetail.Delete;

⌨️ 快捷键说明

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