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

📄 frmprocp.~pas

📁 二次开发模块 一、条形码的批量生成
💻 ~PAS
字号:
unit FrmProcP;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, dxExEdtr, DB, ADODB, Buttons, DBCtrls, StdCtrls, dxDBTLCl,
  dxGrClms, dxDBCtrl, dxDBGrid, dxTL, dxCntner, ExtCtrls, dfsSplitter,
  ComCtrls, xmldom, XMLIntf, msxmldom, XMLDoc;

type
  TFrmProc = class(TForm)
    Bevel1: TBevel;
    Panel1: TPanel;
    Panel2: TPanel;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    btnText: TButton;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    GroupBox2: TGroupBox;
    Date1: TDateTimePicker;
    btnCheck: TButton;
    btnXML: TButton;
    Panel3: TPanel;
    dfsSplitter1: TdfsSplitter;
    dxDBGrid1: TdxDBGrid;
    dxDBGrid1cc: TdxDBGridColumn;
    dxDBGrid1cOrderCode: TdxDBGridMaskColumn;
    dxDBGrid1cDeptName: TdxDBGridMaskColumn;
    dxDBGrid1cWhName: TdxDBGridMaskColumn;
    dxDBGrid1cError: TdxDBGridColumn;
    dxDBGrid1cMaker: TdxDBGridMaskColumn;
    Panel4: TPanel;
    Label1: TLabel;
    btnOutHead: TSpeedButton;
    sbDelete: TSpeedButton;
    DBNavigator1: TDBNavigator;
    BtnSave: TBitBtn;
    Panel5: TPanel;
    Label2: TLabel;
    btnOutBody: TSpeedButton;
    SpeedButton1: TSpeedButton;
    Label3: TLabel;
    DBNavigator2: TDBNavigator;
    QryProc: TADOQuery;
    QryProcid: TAutoIncField;
    QryProccMaker: TStringField;
    QryProcPCID: TStringField;
    QryProccVouchType: TStringField;
    QryProccOrderCode: TStringField;
    QryProcipurorderid: TIntegerField;
    QryProccType: TStringField;
    QryProccVenCode: TStringField;
    QryProccVenAbbName: TStringField;
    QryProccDept: TStringField;
    QryProccDeptName: TStringField;
    QryProccPerson: TStringField;
    QryProccPersonName: TStringField;
    QryProccWhCode: TStringField;
    QryProccWhName: TStringField;
    QryProccPTCode: TStringField;
    QryProccRdCode: TStringField;
    QryProccMemo: TStringField;
    QryProcipurarriveid: TIntegerField;
    QryProccCusCode: TStringField;
    QryProccCusAbbName: TStringField;
    QryProccPTName: TStringField;
    QryProccSTCode: TStringField;
    QryProccSTName: TStringField;
    QryProcDLID: TIntegerField;
    QryProccc: TStringField;
    QryProccError: TStringField;
    dsQryProc: TDataSource;
    QryProcList: TADOQuery;
    QryProcListcc: TStringField;
    QryProcListID: TAutoIncField;
    QryProcListPCID: TStringField;
    QryProcListiPurID: TIntegerField;
    QryProcListcInvCode: TStringField;
    QryProcListcInvName: TStringField;
    QryProcListcInvStd: TStringField;
    QryProcListcBarCode: TStringField;
    QryProcListiQuantity: TFloatField;
    QryProcListiUnitCost: TFloatField;
    QryProcListiPrice: TBCDField;
    QryProcListiPosID: TIntegerField;
    QryProcListcError: TStringField;
    QryProcListiArrsId: TIntegerField;
    QryProcListcVouchType: TStringField;
    QryProcListiDLsID: TIntegerField;
    dsQryProcList: TDataSource;
    LsQryPop: TADOQuery;
    QryCheckPo: TADOQuery;
    QryCheckType: TADOQuery;
    SaveDialog1: TSaveDialog;
    dxDBGrid1cType: TdxDBGridColumn;
    QryProccRdName: TStringField;
    dxDBGrid2: TdxDBGrid;
    dxDBGrid2cc: TdxDBGridColumn;
    dxDBGrid2cBarCode: TdxDBGridMaskColumn;
    dxDBGrid2cInvCode: TdxDBGridMaskColumn;
    dxDBGrid2cInvName: TdxDBGridMaskColumn;
    dxDBGrid2cFree1: TdxDBGridColumn;
    dxDBGrid2cFree2: TdxDBGridColumn;
    dxDBGrid2cInvStd: TdxDBGridMaskColumn;
    dxDBGrid2iQuantity: TdxDBGridMaskColumn;
    dxDBGrid2iUnitCost: TdxDBGridMaskColumn;
    dxDBGrid2iPrice: TdxDBGridCurrencyColumn;
    dxDBGrid2cError: TdxDBGridColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure btnOutHeadClick(Sender: TObject);
    procedure btnOutBodyClick(Sender: TObject);
    procedure BtnSaveClick(Sender: TObject);
    procedure FindList;
    procedure sbDeleteClick(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure btnTextClick(Sender: TObject);
    procedure btnCheckClick(Sender: TObject);
    procedure RefData;
    Procedure UpdateType(cType:String);
    procedure btnXMLClick(Sender: TObject);
    procedure QryProcListBeforeEdit(DataSet: TDataSet);
    procedure QryProcListAfterScroll(DataSet: TDataSet);
    procedure QryProcAfterScroll(DataSet: TDataSet);
    procedure QryProcBeforeEdit(DataSet: TDataSet);
    procedure QryProcBeforePost(DataSet: TDataSet);
    procedure QryProcAfterPost(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmProc: TFrmProc;

implementation

uses DataDmP, SUFunctionP, FrmMainP;

{$R *.dfm}

procedure TFrmProc.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DataDm.DeleteTabe('Szb_PurIn','10');
  DataDm.DeleteTabe('Szb_PurInList','10');
  Action:=caFree;
  FrmProc:=nil;
end;

procedure TFrmProc.FormShow(Sender: TObject);
begin
  CheckBox2.Checked:=False;
  date1.Date:=Date();
  SUFunction.SetGridColor(dxDBGrid1);
  SUFunction.SetGridColor(dxDBGrid2);
end;

procedure TFrmProc.btnOutHeadClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid1,'产成品入库单.xls');
end;

procedure TFrmProc.btnOutBodyClick(Sender: TObject);
begin
  SUFunction.DBGridSaveToFile(dxDBGrid2,'产成品入库单表体.xls');
end;

procedure TFrmProc.BtnSaveClick(Sender: TObject);
begin
  if (QryProc.State = dsEdit) or (QryProc.State = dsInsert) then
      QryProc.Post;
  btnCheck.Click;        
end;

procedure TFrmProc.FindList;
Var ii:Integer;
begin
  QryProcList.Close;
  if QryProc.RecordCount=0 then Exit;
  ii:=QryProc.FieldByName('ID').AsInteger;
  QryProcList.SQL.Clear;
  QryProcList.SQL.Add('select * from Szb_PurInList');
  QryProcList.SQL.Add('Where (PCID='''+FrmMain.PCID+''')');
  QryProcList.SQL.Add(' And  (iPurID='+IntToStr(II)+')');
  QryProcList.Open;
  Label1.Caption:='记录:'+IntToStr(QryProc.RecNo)+'/'+IntToStr(QryProc.RecordCount);
  Label2.Caption:='记录:'+IntToStr(QryProcList.RecNo)+'/'+IntToStr(QryProcList.RecordCount);
end;

procedure TFrmProc.sbDeleteClick(Sender: TObject);
begin
   CheckBox1.Checked:=False;
   FrmMain.DeleteRD(QryProc);
   FindList;
   CheckBox1.Checked:=True;
   FrmMain.SumNumber('10',Label3);
end;

procedure TFrmProc.SpeedButton1Click(Sender: TObject);
Var ii,kk,nn: Integer;
begin
     ii:=Qryproc.FieldByName('ID').AsInteger;
     kk:=QryprocList.FieldByName('ID').AsInteger;
     nn:=QryprocList.RecNo;
     FrmMain.DeleteRDS(ii,kk);
     FindList;
     QryprocList.MoveBy(nn-1);
     FrmMain.SumNumber('10',Label3);
end;

procedure TFrmProc.btnTextClick(Sender: TObject);

begin
  if RadioButton1.Checked  then
     FrmMain.ReadTxtFile('POI.TXT','0','10',QryProc);
  if RadioButton2.Checked  then
     FrmMain.ReadTxtFile('POI.TXT','1','10',QryProc);
  FindList;
  btnCheck.Enabled:=True;
  btnCheck.Click;


end;

procedure TFrmProc.btnCheckClick(Sender: TObject);
begin
  btnXML.Enabled:=False;
  FrmMain.CheckInv('10');
  FrmMain.UpdateInv('10');
  if RadioButton1.Checked then
    begin
      FrmMain.CheckType('无上游单据','10');
      UpdateType('无上游单据');
    end;
//  CheckDL;
  RefData;
  FrmMain.SumNumber('10',Label3);
  btnXML.Enabled:=True;  
end;

procedure TFrmProc.RefData;
Var ii:Integer;
begin
 II:=QryProc.RecNo;
 CheckBox1.Checked:=False;
 QryProc.Close;
 QryProc.Open;
 CheckBox1.Checked:=True;
 FindList;

end;

procedure TFrmProc.UpdateType(cType: String);
Var LsQry:TADOQuery;
begin
  LsQry:=TADOQuery.Create(Self);
  LsQry.Connection:=DataDm.AdoConUfsoft;
  LsQry.SQL.Add('update Szb_PurIn set Szb_PurIn.cWhcode=aa.cWhcode,Szb_PurIn.cWhName=aa.cWhName,Szb_PurIn.cRdCode=aa.cRdCode,Szb_PurIn.cRdName=aa.cRdName');
  LsQry.SQL.Add('FROM (SELECT *');
  LsQry.SQL.Add('        FROM szb_ini');
  LsQry.SQL.Add('        WHERE (Szb_Ini.cMaker = '''+DataDm.Maker+''')');
  LsQry.SQL.Add('         AND  (Szb_Ini.cVouch = ''10'')');
  LsQry.SQL.Add('         AND  (Szb_Ini.cType = '''+ctype+'''))');
  LsQry.SQL.Add('      AA INNER JOIN');
  LsQry.SQL.Add('      Szb_PurIn ON AA.cNO = Szb_PurIn.cType');
  LsQry.SQL.Add('Where  (Szb_PurIn.PCID='''+FrmMain.PCID+''')');
  LsQry.SQL.Add(' And   (Szb_PurIn.cVouchType=''10'')');
  LsQry.ExecSQL;
  LsQry.Destroy;

end;

procedure TFrmProc.btnXMLClick(Sender: TObject);
var xmlDoc:IXMLDocument; RootNode,FirstNode,aNode,bNode:IXMLNode;
    ii,vt_id:Integer;
    LsStr,cDate:String;
begin
  btnCheck.Click;
{ if RadioButton1.Checked then
    FrmMain.GetNullNumber('采购订单','01');
 if RadioButton2.Checked then
    FrmMain.GetNullNumber('采购到货单','01');
}
 cDate:=Trim(DateToStr(Date1.Date));
 DataDm.CheckLin(cDate);
 LsStr:=SUFunction.ReadInformation('XML文件保存路径','cValue','');
 vt_id:=StrToIntDef(SUFunction.ReadInformation('产成品入库单ID','cValue',''),0);
 if vt_id=0 then
   begin
     Application.MessageBox(Pchar('采购入库单ID不能为空,请设置!'),'信息',MB_OK+ MB_ICONINFORMATION);
     Abort;
   end;
 SaveDialog1.InitialDir:=LsStr;
 if RadioButton1.Checked then
    SaveDialog1.FileName:='成产品入库单(无上游单据)_'+FrmMain.GetFileDate+'.xml';
 if RadioButton2.Checked then
    SaveDialog1.FileName:='成产品入库单(生产计划单)_'+FrmMain.GetFileDate+'.xml';
 if not SaveDialog1.Execute then Abort;
 LsStr:=FrmMain.CheckFileName(SaveDialog1.FileName);
 RefData;
// cDate:=Trim(DateToStr(Date1.Date));
 xmlDoc:= TXMLDocument.Create(nil);
 xmlDoc.Active := True;
// xmlDoc.Version := '1.0';
 xmlDoc.Encoding :='GB2312';
 try
//加入根结点

   FirstNode:=xmlDoc.AddChild('vouchers');
   FirstNode.SetAttribute('vouchertype', '10');
   FirstNode.SetAttribute('withdraw', 'False');
   //加入子结点
   while not QryProc.Eof do
     begin
       RootNode:=FirstNode.AddChild('voucher');
       RootNode.SetAttribute('worked', 'False');
    //   bNode:=aNode;
       //设置接点主表属性

       aNode:=RootNode.AddChild('header');
       aNode.SetAttribute('brdflag'    ,'1');
       aNode.SetAttribute('cvouchtype' ,'10');
       aNode.SetAttribute('cbustype'   ,'成品入库');
       aNode.SetAttribute('ddate'      ,cDate);
       if RadioButton1.Checked then
         begin
          aNode.SetAttribute('csource'    ,'库存');
//          aNode.SetAttribute('cordercode' ,QryIn.FieldByName('cOrderCode').AsString);
//          aNode.SetAttribute('ipurorderid',QryIn.FieldByName('ipurorderid').AsInteger);
         end;
{       if RadioButton2.Checked then
         begin
          aNode.SetAttribute('csource'     ,'采购到货单');
          aNode.SetAttribute('cARVCode'       ,QryIn.FieldByName('cOrderCode').AsString);
          aNode.SetAttribute('ipurarriveid',QryIn.FieldByName('ipurarriveid').AsInteger);
         end;
}
       aNode.SetAttribute('cwhcode'    ,QryProc.FieldByName('cWhCode').AsString);
       aNode.SetAttribute('cwhname'    ,QryProc.FieldByName('cWhName').AsString);
       aNode.SetAttribute('crdcode'    ,QryProc.FieldByName('crdcode').AsString);
       aNode.SetAttribute('crdname'    ,QryProc.FieldByName('crdname').AsString);
       aNode.SetAttribute('cdepcode'   ,QryProc.FieldByName('cdept').AsString);
       aNode.SetAttribute('cmaker'     ,QryProc.FieldByName('cMaker').AsString);
       aNode.SetAttribute('vt_id'      ,vt_id);
       //设置接点子表属性
       QryProcList.First;
       while not QryProcList.Eof do
         begin
           bNode:=RootNode.AddChild('body') ;
           bNode:=bNode.AddChild('item') ;
           bNode.SetAttribute('cinvcode', QryProcList.FieldByName('cinvcode').AsString);
           bNode.SetAttribute('cinvname', QryProcList.FieldByName('cinvName').AsString);
           bNode.SetAttribute('cinvstd' , QryProcList.FieldByName('cinvStd').AsString);
           bNode.SetAttribute('cbarcode', QryProcList.FieldByName('cBarcode').AsString);
           bNode.SetAttribute('iquantity',QryProcList.FieldByName('iQuantity').asfloat);
           bNode.SetAttribute('cFree1',   QryProcList.FieldByName('cFree1').AsString);
           bNode.SetAttribute('cFree2',   QryProcList.FieldByName('cFree2').AsString);           
//           bNode.SetAttribute('iposid',   QryInList.FieldByName('iPOsID').AsInteger);
//           bNode.SetAttribute('iunitcost',QryInList.FieldByName('iunitcost').asfloat);
//          if RadioButton2.Checked then
//             bNode.SetAttribute('iArrsId'     ,QryInList.FieldByName('iArrsId').AsInteger);
           QryProcList.Next;
         End;
       QryProc.Next;
    end;
   xmlDoc.SaveToFile(LsStr);
 finally
   xmlDoc := nil ;
 end;
 Application.MessageBox(Pchar('生成用友产成品入库单XML成功!'),'信息',MB_OK+ MB_ICONINFORMATION);


end;

procedure TFrmProc.QryProcListBeforeEdit(DataSet: TDataSet);
begin
  Abort;
end;

procedure TFrmProc.QryProcListAfterScroll(DataSet: TDataSet);
begin
  Label2.Caption:='记录:'+IntToStr(QryProcList.RecNo)+'/'+IntToStr(QryProcList.RecordCount);
end;

procedure TFrmProc.QryProcAfterScroll(DataSet: TDataSet);
begin
  if CheckBox1.Checked then
     FindList;

end;

procedure TFrmProc.QryProcBeforeEdit(DataSet: TDataSet);
begin
  if not CheckBox2.Checked then Abort;
end;

procedure TFrmProc.QryProcBeforePost(DataSet: TDataSet);
Var II:Integer;
begin
   II:=Application.MessageBox('数据已修改,是否保存?','信息',MB_YESNOCANCEL+ MB_ICONINFORMATION);
   if II=IDNO	then
     begin
      QryProc.Cancel;
      Abort;
     end;
   if II=IDCANCEL	then
     begin
      Abort;
     end;
end;

procedure TFrmProc.QryProcAfterPost(DataSet: TDataSet);
Var ii:Integer;
begin
   ii:=QryProc.FieldByName('ID').AsInteger;
   FrmMain.UpdateNull(ii,'32');
end;

end.

⌨️ 快捷键说明

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