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

📄 ubill_base.~pas

📁 相关的销售服务管理行业的一个软件
💻 ~PAS
📖 第 1 页 / 共 3 页
字号:
unit UBill_Base;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, Grids, DBGridEh, ExtCtrls, ComCtrls, Buttons,
  ToolWin, Db, ADODB, EHGrids,UDataVar ,dbgrids, ImgList;

type
  TfrmBill_Base = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label8: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Panel3: TPanel;
    Label7: TLabel;
    Label11: TLabel;
    DBEdit1: TDBEdit;
    DataSource1: TDataSource;
    DBEdit2: TDBEdit;
    DBEdit3: TDBEdit;
    DBEdit4: TDBEdit;
    DBEdit5: TDBEdit;
    DBEdit6: TDBEdit;
    DBEdit7: TDBEdit;
    DBEdit11: TDBEdit;
    Label26: TLabel;
    Label29: TLabel;
    DBEdit8: TDBEdit;
    DBEdit10: TDBEdit;
    Label22: TLabel;
    DBEdit9: TDBEdit;
    DBRichEdit1: TDBRichEdit;
    Label9: TLabel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Splitter1: TSplitter;
    Splitter2: TSplitter;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    DataSource2: TDataSource;
    LocalCon: TADOConnection;
    ADOProc1: TADOStoredProc;
    ADOProc2: TADOStoredProc;
    DBCheckBox1: TDBCheckBox;
    ADOProc3: TADOStoredProc;
    ToolBar1: TToolBar;
    Proc_NewBill: TADOStoredProc;
    DBComboBox1: TDBComboBox;
    DBComboBox2: TDBComboBox;
    Label10: TLabel;
    DBEdit12: TDBEdit;
    Edit5: TEdit;
    SpeedButton5: TSpeedButton;
    QryMaster: TADOQuery;
    QryLookUp: TADOQuery;
    QryLookUpName: TWideStringField;
    QryLookUpnGdGg: TWideStringField;
    QryLookUpbGdBatch: TBooleanField;
    QryLookUpnGdUnit: TWideStringField;
    QryLookUpnColor: TWideStringField;
    QryLookUpCode: TWideStringField;
    ProcCanChange: TADOStoredProc;
    BtnAdd: TToolButton;
    BtnChange: TToolButton;
    BtnExit: TToolButton;
    BtnCancel: TToolButton;
    BtnSave: TToolButton;
    BtnAuditing: TToolButton;
    BtnFirst: TToolButton;
    BtnPrevious: TToolButton;
    BtnNext: TToolButton;
    BtnLast: TToolButton;
    BitPrint: TToolButton;
    BtnPreview: TToolButton;
    BtnSet: TToolButton;
    BtnFiltrate: TToolButton;
    Separator1: TToolButton;
    Separator2: TToolButton;
    Separator3: TToolButton;
    btnDelete: TToolButton;
    Button1999: TButton;
    QryLoadField: TADOQuery;
    RepOrder: TStaticText;
    DBGridEh1: TDBGridEh;
    QryDetail: TADOQuery;
    QryDetailnId: TAutoIncField;
    QryDetailnBillID: TWideStringField;
    QryDetailnGoodCode: TWideStringField;
    QryDetailnfsprice: TBCDField;
    QryDetailnFsCount: TBCDField;
    QryDetailnFsJine: TBCDField;
    QryDetailnPosition: TWideStringField;
    QryDetailnCus1: TWideStringField;
    QryDetailnCus2: TWideStringField;
    QryDetailnMemo: TWideStringField;
    QryDetailnbatch: TWideStringField;
    QryDetailbBatch: TBooleanField;
    QryDetailnGoodName: TStringField;
    QryDetailnUnit: TStringField;
    QryDetailnGDGg: TStringField;
    QryDetailnColor: TStringField;
    QryLookUpnGdAddCode: TWideStringField;
    QryDetailnGdAddCode: TStringField;
    ADOQSFtype: TADOQuery;
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
    procedure DBEdit3Change(Sender: TObject);
    procedure Edit1Exit(Sender: TObject);
    procedure Edit2Change(Sender: TObject);
    procedure DBEdit11Change(Sender: TObject);
    procedure Edit2Exit(Sender: TObject);
    procedure Edit3Change(Sender: TObject);
    procedure DBEdit4Change(Sender: TObject);
    procedure Edit3Exit(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure DBEdit7Change(Sender: TObject);
    procedure Edit4Exit(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure Edit7Change(Sender: TObject);
    procedure DBEdit10Change(Sender: TObject);
    procedure Edit7Exit(Sender: TObject);
    procedure Edit6Change(Sender: TObject);
    procedure DBEdit9Change(Sender: TObject);
    procedure Edit6Exit(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure DBGridEh1EditButtonClick(Sender: TObject);

    procedure DBGridEh1Enter(Sender: TObject);
    procedure DBGridEh1Exit(Sender: TObject);
    procedure QryMasterAfterInsert(DataSet: TDataSet);
    procedure QryMasterAfterEdit(DataSet: TDataSet);
    procedure BtnCancelClick(Sender: TObject);
    procedure BtnAddClick(Sender: TObject);
    procedure BtnChangeClick(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure DBGridEh1ColEnter(Sender: TObject);
    procedure DBGridEh1GetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: String);
    procedure BtnAuditingClick(Sender: TObject);
    procedure QryDetailnfspriceSetText(Sender: TField;
      const Text: String);
    procedure QryDetailnFsCountSetText(Sender: TField;
      const Text: String);
    procedure QryMasterAfterScroll(DataSet: TDataSet);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormActivate(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure SpeedButton5Click(Sender: TObject);
    procedure Edit5Exit(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure DBEdit12Change(Sender: TObject);
    procedure BtnExitClick(Sender: TObject);
    procedure DBGridEh1KeyPress(Sender: TObject; var Key: Char);
    procedure BtnFirstClick(Sender: TObject);
    procedure BtnPreviousClick(Sender: TObject);
    procedure BtnNextClick(Sender: TObject);
    procedure BtnLastClick(Sender: TObject);
    procedure QryDetailBeforePost(DataSet: TDataSet);
    procedure QryDetailAfterOpen(DataSet: TDataSet);
    procedure QryMasterAfterOpen(DataSet: TDataSet);
    procedure btnDeleteClick(Sender: TObject);
    procedure Button1999Click(Sender: TObject);
    procedure BtnSetClick(Sender: TObject);
    procedure QryDetailnFsJineSetText(Sender: TField; const Text: String);
    procedure DBGridEh1ColumnMoved(Sender: TObject; FromIndex,
      ToIndex: Integer);
  private
    { Private declarations }
    TmpBillID:String;
   
    procedure GetTmpBillID();
    procedure LoadPosition();
    procedure LdCusColumn();
  public
    CanScroll:Boolean;      //判断从表是否可以滚动
    DS:DataState;
    GDI:TGdInfo;
    iRow:integer;
    iCol:integer;
    bRight:Boolean; //记录是否正确
    Tag:GDTag;  //状态标记
    bLast:Boolean;//是否是最后一行
    TmpSQL:String;   //临时SQL语句
    MasterPost:Boolean;//主表是否Post
    ErrorField:integer;
    { Public declarations }
    function NoError():Boolean;
    function bCanEdit(iCol:integer):Boolean;
    function bHaveEnough():Boolean;

  end;

var
  frmBill_Base: TfrmBill_Base;
  DS:DataState=dsNone;
  iRow:integer=0;
  bSave:Boolean=True;
  MasterPost:Boolean=True;
  ErrorField:integer=-1;
implementation

uses UFunction, UTree_Sel_Dept, UTree_Sel_Ck, UTree_Sel_SFType,
  UTree_Sel_Gys, UTree_Sel_Cus, UMain, USel_Gys, USel_Kh, USel_Person, UDM,
  Udata, U_DM;

{$R *.DFM}
procedure TfrmBill_Base.LdCusColumn();
var
  iCount:integer;
begin
  With DM.ADOQueryN do
  begin
    Close;
    SQL.Text:='Select dispname,dispfield from s_Qrdetail where (reporder='+#39+RepOrder.Caption+#39+
      ') and (location=''d'') and dispfield like '+'''nCus%'''+'order by dispfield';
    Open;
    while not eof do
    begin
      for iCount:=0 to DBGridEh1.Columns.Count-1 do
      begin
        if DBGridEh1.Columns[iCount].FieldName= FieldByName('dispfield').AsString then
        begin
          DBGridEh1.Columns[iCount].Title.Caption:=FieldByName('dispname').AsString;
          break;
        end;
      end;
      next;
    end;
  end;
end;

procedure TfrmBill_Base.SpeedButton1Click(Sender: TObject);
begin
  SelFromTree(Edit1,DBEdit3,frmTree_Sel_CK);
  if (DBGridEh1.DataSource = nil) then
    DBGridEh1.DataSource := DataSource2;
  if trim(Edit1.Text)<>'' then begin
    FullGd(QryLoadField,DBGridEh1,RepOrder.Caption,1,DBEdit3.Text);
    LoadPosition;
  end;
end;

procedure TfrmBill_Base.SpeedButton2Click(Sender: TObject);
var
  tmpSQL:String;
begin
  frmTree_Sel_SFType.ADOQry.Close;
  tmpSQL:=frmTree_Sel_SFType.SQLBackup.Caption;
  if  pos('入',Caption)<>0 then
  begin
    insert(' where iSFTag=1 ',tmpSQL,Pos('ORDER',tmpSQL));
    frmTree_Sel_SFType.ADOQry.SQL.Text:=tmpSQL;
  end
  else if  Pos('出',Caption)<>0 then
  begin
    insert(' where iSFTag=-1 ',tmpSQL,Pos('ORDER',tmpSQL));
    frmTree_Sel_SFType.ADOQry.SQL.Text:=tmpSQL;
  end;
  SelFromTree(Edit2,DBEdit11,frmTree_Sel_SFType);
end;

procedure TfrmBill_Base.SpeedButton3Click(Sender: TObject);
begin
  SelFromTree(Edit3,DBEdit4,frmTree_Sel_Dept);
end;

procedure TfrmBill_Base.SpeedButton4Click(Sender: TObject);
begin 
    SelFromTree(Edit4,DBEdit7,frmSel_Gys)
end;

procedure TfrmBill_Base.Edit1Change(Sender: TObject);
begin
  Full_Back_Edit(DBEdit3,Edit1,frmTree_Sel_Ck);
end;

procedure TfrmBill_Base.DBEdit3Change(Sender: TObject);
begin
  Full_Front_Edit(DBEdit3,Edit1,frmTree_Sel_Ck);
end;

procedure TfrmBill_Base.Edit1Exit(Sender: TObject);
begin
  if HaveError(DBEdit3,Edit1) then exit;
  if edit1.text<>'' then
    LoadPosition;
end;

procedure TfrmBill_Base.Edit2Change(Sender: TObject);
begin
Full_Back_Edit(DBEdit11,Edit2,frmTree_Sel_SFType);
end;

procedure TfrmBill_Base.DBEdit11Change(Sender: TObject);
begin
Full_Front_Edit(DBEdit11,Edit2,frmTree_Sel_SFType);
end;

procedure TfrmBill_Base.Edit2Exit(Sender: TObject);
begin
  HaveError(DBEdit11,Edit2);
end;

procedure TfrmBill_Base.Edit3Change(Sender: TObject);
begin
  Full_Back_Edit(DBEdit4,Edit3,frmTree_Sel_Dept);
end;

procedure TfrmBill_Base.DBEdit4Change(Sender: TObject);
begin
  Full_Front_Edit(DBEdit4,Edit3,frmTree_Sel_Dept);
end;

procedure TfrmBill_Base.Edit3Exit(Sender: TObject);
begin
  if HaveError(DBEdit4,Edit3) then Exit; 
end;

procedure TfrmBill_Base.Edit4Change(Sender: TObject);
begin
    Full_Back_Edit(DBEdit7,Edit4,frmSel_Gys);
end;

procedure TfrmBill_Base.DBEdit7Change(Sender: TObject);
begin
    Full_Front_Edit(DBEdit7,Edit4,frmSel_Gys);
end;

procedure TfrmBill_Base.Edit4Exit(Sender: TObject);
begin
  HaveError(DBEdit7,Edit4);
end;

procedure TfrmBill_Base.SpeedButton6Click(Sender: TObject);
begin
  SelFromTree(Edit6,DBEdit9,frmSel_Person);
end;

procedure TfrmBill_Base.SpeedButton7Click(Sender: TObject);
begin
  SelFromTree(Edit7,DBEdit10,frmSel_Person);        
end;

procedure TfrmBill_Base.Edit7Change(Sender: TObject);
begin
  Full_Back_Edit(DBEdit10,Edit7,frmSel_Person);
end;

procedure TfrmBill_Base.DBEdit10Change(Sender: TObject);
begin
  Full_Front_Edit(DBEdit10,Edit7,frmSel_Person);
end;

procedure TfrmBill_Base.Edit7Exit(Sender: TObject);
begin
  HaveError(DBEdit10,Edit7);
end;

procedure TfrmBill_Base.Edit6Change(Sender: TObject);
begin
  Full_Back_Edit(DBEdit9,Edit6,frmSel_Person);
end;

procedure TfrmBill_Base.DBEdit9Change(Sender: TObject);
begin
  Full_Front_Edit(DBEdit9,Edit6,frmSel_Person);
end;

procedure TfrmBill_Base.Edit6Exit(Sender: TObject);
begin
  HaveError(DBEdit9,Edit6);
end;

procedure TfrmBill_Base.FormCreate(Sender: TObject);
var
  iCount:integer;
begin
  CanScroll:=true;
  TmpSQL:=QryDetail.SQL.Text;
  localcon.Close;
  LocalCon.ConnectionString:=DM.ADOConn.ConnectionString;
  LocalCon.Open;
  QryMaster.Close;
  QryMaster.Open;
  QryLookUp.Close;
  QryLookUp.Open;
  FillComboBox(DBComboBox2,'Xs_Order1','orderNo'); //取销售定单号
  FillComboBox(DBComboBox1,'Cg_ddm','CgouNo');  //取采购定单号

  LdCusColumn;

  for iCount:=0 to ComponentCount-1 do
  begin
    if Components[iCount].InheritsFrom(TSpeedButton) then
    begin
      if TSPeedButton(Components[iCount]).Caption='.*.' then
      begin
        DM.ILMain.GetBitmap(18,TSPeedButton(Components[iCount]).Glyph);
        TSPeedButton(Components[iCount]).Caption:='';
      end else
      if TSPeedButton(Components[iCount]).Caption='...' then
      begin
        DM.ILMain.GetBitmap(17,TSPeedButton(Components[iCount]).Glyph);
        TSPeedButton(Components[iCount]).Caption:='';
      end;
    end;
  end;
end;

procedure TfrmBill_Base.LoadPosition();      //Pass
var
  i:integer;
begin
  with DM.ADOQry do
  begin
    Close;
    SQL.Text:='Select nPCode+'+''''+'-'+''''+'+nPosition as Position from Kc_Position ';
    SQL.Add('where nCKCode ='+''''+ DBEdit3.Text+'''');
    Open;

    for i:=0 to DBGridEh1.Columns.Count-1 do
    begin
      if Trim(DBGridEh1.Columns[i].FieldName)='nPosition' then
      Break;
    end;

    if i>1 then
      DBGridEh1.Columns[i].PickList.Clear;

    if RecordCount=0 then
    begin
      Exit;
    end;

    while not Eof do
    begin
      try
        DBGridEh1.Columns[i].PickList.Add(FieldByName('Position').AsString);
      except
      end;
      Next;
    end;
  end;
end;

procedure TfrmBill_Base.DBGridEh1EditButtonClick(Sender: TObject);  //Pass
var
  tmeStr:String;
begin
  tmeStr:='';
  if (DbGridEh1.Columns.Items[DbGridEh1.Columns.Grid.SelectedIndex].FieldName = 'nGoodName')  then
  begin
    tmeStr:=GetGdCode();
    if tmeStr='' then Exit;
    if QryDetail.State=dsBrowse then
    begin
      if QryDetail.FieldByName('nGoodCode').AsString='' then
        QryDetail.insert
      else
        QryDetail.Edit;
    end;
    QryDetail.FieldByName('nGoodCode').AsString:=tmeStr;
    QryDetail.FieldByName('nfsPrice').Asfloat:=GetPrice(tmeStr);
  end;
end;

//================================
//================================

procedure TfrmBill_Base.DBGridEh1Enter(Sender: TObject);
begin
  DBGridEh1.Options:=DBGridEh1.Options+[dgEditing];

  if DS=dsNone then
  begin
    DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];
    Exit;
  end else
  begin
    if Edit1.Text='' then
    begin
      Application.MessageBox('仓库不能为空','提示',64);
      Edit1.SetFocus;
      Exit;
    end;

    if Edit2.Text='' then
    begin
      Application.MessageBox('收发类别不能为空','提示',64);
      Edit2.SetFocus;
      Exit;
    end;
 //   if (not MasterPost) and (QryMaster.State<>dsBrowse) then
 //   QryMaster.Post;
  end;
end;

procedure TfrmBill_Base.DBGridEh1Exit(Sender: TObject);   //Pass
begin
{  if not NoError then       //离开Grid时候,判断是否有错,有错则返回
  begin
    DBGridEh1.SetFocus;
    Exit;
  end;  }

  DBGridEh1.Options:=DBGridEh1.Options-[dgEditing];           //防止最后一行没有保存
  if (QryDetail.state=dsEdit) or (QryDetail.state=dsInsert) then
    QryDetail.Post;
end;

procedure TfrmBill_Base.QryMasterAfterInsert(DataSet: TDataSet);     //Pass
begin
//  MasterPost:=false;

⌨️ 快捷键说明

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