unit U_ConInPut; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxMemo, cxRichEdit, ComCtrls, cxContainer, cxTextEdit, cxMaskEdit, cxButtonEdit, StdCtrls, ToolWin, DBClient, ADODB, ExtCtrls, BtnEdit, cxCalendar,StrUtils; type TfrmConInPut = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ScrollBox1: TScrollBox; Label3: TLabel; OrdDate: TDateTimePicker; Label4: TLabel; DlyDate: TDateTimePicker; Label7: TLabel; ToolBar2: TToolBar; ToolButton1: TToolButton; ToolButton2: TToolButton; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; v1PRTColor: TcxGridDBColumn; v1PRTPrice: TcxGridDBColumn; ADOTemp: TADOQuery; ADOCmd: TADOQuery; DataSource1: TDataSource; Order_Sub: TClientDataSet; ADOQuery1: TADOQuery; v1PRTOrderQty: TcxGridDBColumn; Label9: TLabel; ConPerson1: TEdit; Label10: TLabel; ConNo: TEdit; Label11: TLabel; ConDefStr1: TEdit; Label14: TLabel; Label20: TLabel; FromPlace: TBtnEditC; CustomerNoName: TBtnEditC; v1XHNo: TcxGridDBColumn; SYRName: TBtnEditC; v1OrderUnit: TcxGridDBColumn; v1PriceUnit: TcxGridDBColumn; Label2: TLabel; MPRTCodeName: TBtnEditC; Label5: TLabel; MPRTCF: TBtnEditC; Label6: TLabel; MPRTSpec: TBtnEditC; Label12: TLabel; MPRTMF: TBtnEditC; Label13: TLabel; MPRTKZ: TBtnEditC; Label15: TLabel; Payment: TBtnEditC; Label1: TLabel; ToPlace: TBtnEditC; Label16: TLabel; ShippMent: TBtnEditC; Label17: TLabel; Label18: TLabel; BankNo: TBtnEditC; SYRAddress: TEdit; Label19: TLabel; BankName: TEdit; Label21: TLabel; BankAddress: TEdit; Label22: TLabel; BankFastNo: TEdit; ToolButton3: TToolButton; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure v1PRTColorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure CustomerNoNameBtnUpClick(Sender: TObject); procedure CustomerNoNameBtnDnClick(Sender: TObject); procedure v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure MPRTCodeNameBtnUpClick(Sender: TObject); procedure v1OrderUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure v1PriceUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure jKeyPress(Sender: TObject; var Key: Char); procedure SYRNameBtnUpClick(Sender: TObject); procedure ToolButton3Click(Sender: TObject); private procedure InitData(); procedure ZDYHelp(FButn:TcxButtonEdit;LType:string); function SaveData():Boolean; function SaveDataSubOne():Boolean; function SaveDataMain():Boolean; function SaveDataSubMore():Boolean; { Private declarations } public PState,CopyInt:Integer; FMainId,FFMainId:String; FXS:Integer; { Public declarations } end; var frmConInPut: TfrmConInPut; newh:hwnd; implementation uses U_DataLink,U_ZDYHelp,U_Fun,U_ZDYHelpSel; {$R *.dfm} procedure TfrmConInPut.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid('指示单录入',Tv1,'生产指示单管理'); end; procedure TfrmConInPut.InitData(); begin with ADOQuery1 do begin Close; SQL.Clear; sql.Add(' select * from JYOrderCon_Sub '); if PState=1 then begin sql.Add('where MainId='''+Trim(FMainId)+''''); end; if PState=0 then begin sql.Add(' where 1<>1'); end; Open; end; SCreateCDS20(ADOQuery1,Order_Sub); SInitCDSData20(ADOQuery1,Order_Sub); with ADOQuery1 do begin Close; sql.Clear; sql.Add('select * from JYOrderCon_Main where MainId='''+Trim(FMainId)+''''); Open; end; SCSHDataNew(ADOQuery1,ScrollBox1,2); SYRName.TxtCode:=Trim(ADOQuery1.fieldbyname('ConDefStr2').AsString); if PState=0 then begin OrdDate.DateTime:=SGetServerDateTime(ADOTemp); DlyDate.DateTime:=SGetServerDateTime(ADOTemp); ConPerson1.Text:=Trim(DName); end else begin end; if CopyInt=99 then begin PState:=0; FMainId:=''; ConPerson1.Text:=Trim(DName); ConNo.Text:=''; with Order_Sub do begin First; while not Eof do begin Edit; FieldByName('MainId').Value:=''; FieldByName('SubId').Value:=''; Post; Next; end; end; end; end; procedure TfrmConInPut.ZDYHelp(FButn:TcxButtonEdit;LType:string); var FType,ZDYName,FText:String; begin end; procedure TfrmConInPut.FormShow(Sender: TObject); begin readCxGrid('指示单录入',Tv1,'生产指示单管理'); InitData(); end; function TfrmConInPut.SaveData():Boolean; var maxno:String; begin try ADOCmd.Connection.BeginTrans; ///保存主表 if Trim(FMainId)='' then begin if GetLSNo(ADOCmd,maxno,'CM','JYOrderCon_Main',3,1)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!','提示',0); Exit; end; end else begin maxno:=Trim(FMainId); end; with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from JYOrderCon_Main where MainId='''+Trim(FMainId)+''''); Open; end; with ADOCmd do begin if Trim(FMainId)='' then begin Append; end else begin Edit; end; FieldByName('MainId').Value:=Trim(maxno); SSetsaveSqlNew(ADOCmd,'JYOrderCon_Main',ScrollBox1,2); FieldByName('ConDefStr2').Value:=Trim(SYRName.TxtCode); if Trim(FMainId)='' then begin FieldByName('Filler').Value:=Trim(DName); end else begin FieldByName('Editer').Value:=Trim(DName); FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp); end; // FieldByName('Note').Value:=Trim(Note.Text); Post; end; FMainId:=Trim(maxno); ///保存子表 with Order_Sub do begin First; while not Eof do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then begin if GetLSNo(ADOCmd,maxno,'CS','JYOrderCon_Sub',4,1)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(Order_Sub.fieldbyname('SubId').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from JYOrderCon_Sub where MainId='''+Trim(FMainId)+''''); sql.Add(' and SubId='''+Trim(maxno)+''''); Open; end; with ADOCmd do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then Append else Edit; FieldByName('MainId').Value:=Trim(FMainId); FieldByName('SubId').Value:=Trim(maxno); RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'JYOrderCon_Sub',0); if Trim(fieldbyname('PRTOrderQty').AsString)='' then begin fieldbyname('PRTOrderQty').Value:=0 end; if Trim(fieldbyname('PRTPrice').AsString)='' then begin fieldbyname('PRTPrice').Value:=0 end; Post; end; Order_Sub.Edit; Order_Sub.FieldByName('SubId').Value:=Trim(maxno); //Order_Sub.Post; Next; end; end; with ADOCmd do begin Close; sql.Clear; sql.Add('select * from JYOrderCon_Main where ConNo='''+Trim(ConNo.Text)+''''); Open; end; if ADOCmd.RecordCount>1 then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('合同号重复!','提示',0); Exit; end; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; function TfrmConInPut.SaveDataMain():Boolean; var maxno:String; begin try ADOCmd.Connection.BeginTrans; ///保存主表 with ADOCmd do begin Close; sql.Clear; SQL.Add('select * from JYOrder_Main where MainId='''+Trim(FMainId)+''''); Open; end; with ADOCmd do begin if Trim(FMainId)='' then begin Append; maxno:=Trim(FFMainId); end else begin maxno:=Trim(FMainId); Edit; end; FieldByName('MainId').Value:=Trim(maxno); SSetsaveSqlNew(ADOCmd,'JYOrder_Main',ScrollBox1,2); if PState=1 then begin FieldByName('OrdUpDate').Value:=SGetServerDateTime(ADOTemp); end; if Trim(FMainId)='' then begin FieldByName('Filler').Value:=Trim(DName); end else begin FieldByName('Editer').Value:=Trim(DName); FieldByName('EditTime').Value:=SGetServerDateTime(ADOTemp); end; Post; end; FMainId:=Trim(maxno); ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!','提示',0); end; end; function TfrmConInPut.SaveDataSubOne():Boolean; var maxno:String; begin try ADOCmd.Connection.BeginTrans; ///保存子表 with Order_Sub do begin //First; //while not Eof do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then begin if GetLSNo(ADOTemp,maxno,'JS','JYOrder_Sub',4,1)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(Order_Sub.fieldbyname('SubId').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from JYOrder_Sub where MainId='''+Trim(FMainId)+''''); sql.Add(' and SubId='''+Trim(maxno)+''''); Open; end; with ADOCmd do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then Append else Edit; FieldByName('MainId').Value:=Trim(FMainId); FieldByName('SubId').Value:=Trim(maxno); RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'JYOrder_Sub',0); Post; end; Order_Sub.Edit; Order_Sub.FieldByName('SubId').Value:=Trim(maxno); //Order_Sub.Post; //Next; end; end; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!','提示',0); end; end; function TfrmConInPut.SaveDataSubMore():Boolean; var maxno:String; begin try ADOCmd.Connection.BeginTrans; ///保存子表 with Order_Sub do begin First; while not Eof do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then begin if GetLSNo(ADOTemp,maxno,'JS','JYOrder_Sub',4,1)=False then begin ADOCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!','提示',0); Exit; end; end else begin maxno:=Trim(Order_Sub.fieldbyname('SubId').AsString); end; with ADOCmd do begin Close; SQL.Clear; sql.Add('select * from JYOrder_Sub where MainId='''+Trim(FMainId)+''''); sql.Add(' and SubId='''+Trim(maxno)+''''); Open; end; with ADOCmd do begin if Trim(Order_Sub.fieldbyname('SubId').AsString)='' then Append else Edit; FieldByName('MainId').Value:=Trim(FMainId); FieldByName('SubId').Value:=Trim(maxno); RTSetSaveDataCDS(ADOCmd,Tv1,Order_Sub,'JYOrder_Sub',0); Post; end; Order_Sub.Edit; Order_Sub.FieldByName('SubId').Value:=Trim(maxno); //Order_Sub.Post; Next; end; end; ADOCmd.Connection.CommitTrans; Result:=True; except Result:=False; ADOCmd.Connection.RollbackTrans; Application.MessageBox('操作异常!','提示',0); end; end; procedure TfrmConInPut.TBSaveClick(Sender: TObject); begin OrdDate.SetFocus; if Trim(ConNo.Text)='' then begin Application.MessageBox('合同号不能为空!','提示',0); Exit; end; if SaveData() then begin Application.MessageBox('保存成功!','提示',0); end; end; procedure TfrmConInPut.v1PRTColorPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='OrdColor'; flagname:='颜色'; V1Name.Caption:='中文名称'; V1Note.Caption:='英文名称'; fnote:=True; MainType:=Trim(DName); if ShowModal=1 then begin Self.Order_Sub.Edit; Self.Order_Sub.FieldByName('PRTColor').Value:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); Self.Order_Sub.FieldByName('SOrdDefStr4').Value:=Trim(ClientDataSet1.fieldbyname('Note').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.ToolButton1Click(Sender: TObject); var i:Integer; begin if Trim(ConNo.Text)='' then begin Application.MessageBox('合同号不能为空!','提示',0); Exit; end; i:=Order_Sub.RecordCount; i:=i+1; CopyAddRow(Tv1,Order_Sub); with Order_Sub do begin Edit; FieldByName('XHNO').Value:=IntToStr(i); FieldByName('PRTColor').Value:=''; FieldByName('PRTOrderQty').Value:=null; FieldByName('PRTPrice').Value:=null; FieldByName('SOrddefstr1').Value:=null; FieldByName('SOrddefstr2').Value:=null; Post; end; end; procedure TfrmConInPut.ToolButton2Click(Sender: TObject); begin if Order_Sub.IsEmpty then Exit; if Trim(Order_Sub.fieldbyname('SubId').AsString)<>'' then begin if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; with ADOCmd do begin Close; sql.Clear; sql.Add('delete JYOrderCon_Sub where SubId='''+Trim(Order_Sub.fieldbyname('SubId').AsString)+''''); ExecSQL; end; end; Order_Sub.Delete; end; procedure TfrmConInPut.CustomerNoNameBtnUpClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='CustomerNoName'; flagname:='客户名称'; if Trim(DParameters1)<>'高权限' then MainType:=Trim(DName); if ShowModal=1 then begin CustomerNoName.Text:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); CustomerNoName.TxtCode:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.CustomerNoNameBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text:=''; TBtnEditC(Sender).TxtCode:=''; end; procedure TfrmConInPut.v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); type TMyFunc = function(App:Tapplication; FormH:hwnd; FormID:integer; Language: integer; WinStyle:integer; GCode: Pchar; GName: Pchar; DataBase:Pchar;Title:PChar; Parameters1:PChar;Parameters2:PChar;Parameters3:PChar;Parameters4:PChar; Parameters5:PChar;Parameters6:PChar;Parameters7:PChar;Parameters8:PChar; Parameters9:PChar;Parameters10:PChar;DataBaseStr:PChar):hwnd;stdcall; var Tf: TMyFunc; Tp: TFarProc; Th:Thandle; LabInt,labname:String; begin //if PPInt=2 then Exit; Ddatabase:=StringOfChar(' ', 32); Th := LoadLibrary('LabelSet.dll'); if Th > 0 then begin try Tp := GetProcAddress(Th, 'GetDllForm'); if Tp <> nil then begin Tf := TMyFunc(Tp); newh:=Tf(Application,0,2,0,0, PChar(DCode), PChar(DName), PChar(Ddatabase), PChar('标签模版设置'), PChar(''), PChar(''), '','','','','','','','',PChar(DConString) ); if Trim(PChar(Ddatabase))<>'' then begin Ddatabase:=Trim(PChar(Ddatabase)); LabInt:=Trim( LeftBStr(Ddatabase,Pos('|',Ddatabase)-1) ) ; labname:=Trim(RightBStr(Ddatabase,Length(Ddatabase)-Pos('|',Ddatabase) ) ); with Order_Sub do begin Edit; FieldByName('SLbName').Value:=labname; FieldByName('SLbInt').Value:=LabInt; end; end; end else begin ShowMessage('打印执行错误'); end; finally // FreeLibrary(); end; end else begin ShowMessage('找不到'+Trim('LabelSet.dll')); end; end; procedure TfrmConInPut.MPRTCodeNameBtnUpClick(Sender: TObject); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='MPRTCodeName'; flagname:='产品名称'; if ShowModal=1 then begin MPRTCodeName.Text:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); MPRTCodeName.TxtCode:=Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.v1OrderUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='OrderUnit'; flagname:='数量单位'; if ShowModal=1 then begin Self.Order_Sub.Edit; Self.Order_Sub.FieldByName('OrderUnit').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.v1PriceUnitPropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:='PriceUnit'; flagname:='价格单位'; if ShowModal=1 then begin Self.Order_Sub.Edit; Self.Order_Sub.FieldByName('PriceUnit').Value:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.jKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin with ADOTemp do begin Close; sql.Clear; sql.Add('select * from CP_YDang where CYNo like '''+'%'+Trim(ConDefStr1.Text)+'%'+''''); Open; end; if ADOTemp.RecordCount=1 then begin ConDefStr1.Text:=Trim(ADOTemp.fieldbyname('CYNo').AsString); MPRTCodeName.Text:=Trim(ADOTemp.fieldbyname('CYEName').AsString); MPRTCF.Text:=Trim(ADOTemp.fieldbyname('CYECF').AsString); MPRTSpec.Text:=Trim(ADOTemp.fieldbyname('CYSpec').AsString); MPRTMF.Text:=Trim(ADOTemp.fieldbyname('CYMF').AsString); MPRTKZ.Text:=Trim(ADOTemp.fieldbyname('CYKZ').AsString); end else if ADOTemp.RecordCount>1 then begin with ADOTemp do begin Close; sql.Clear; sql.Add('select * from CP_YDang where CYNo='''+Trim(ConDefStr1.Text)+''''); Open; end; if ADOTemp.RecordCount=1 then begin ConDefStr1.Text:=Trim(ADOTemp.fieldbyname('CYNo').AsString); MPRTCodeName.Text:=Trim(ADOTemp.fieldbyname('CYEName').AsString); MPRTCF.Text:=Trim(ADOTemp.fieldbyname('CYECF').AsString); MPRTSpec.Text:=Trim(ADOTemp.fieldbyname('CYSpec').AsString); MPRTMF.Text:=Trim(ADOTemp.fieldbyname('CYMF').AsString); MPRTKZ.Text:=Trim(ADOTemp.fieldbyname('CYKZ').AsString); end; end; end; end; procedure TfrmConInPut.SYRNameBtnUpClick(Sender: TObject); var fsj:string; FWZ:Integer; begin fsj:=Trim(TEdit(Sender).Hint); FWZ:=Pos('/',fsj); try frmZDYHelp:=TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag:=Copy(fsj,1,FWZ-1); flagname:=Copy(fsj,FWZ+1,Length(fsj)-fwz); if Trim(flag)='SYRName' then begin flag:='OrdDefStr2'; V1Name.Caption:='中文名称'; V1Note.Caption:='英文名称'; fnote:=True; if Trim(DParameters1)<>'高权限' then begin TBAdd.Visible:=False; TBEdit.Visible:=false; TBDel.Visible:=false; TBSave.Visible:=false; end; end; if Trim(flag)='BankNo' then begin if Trim(DParameters1)<>'高权限' then begin TBAdd.Visible:=False; TBEdit.Visible:=false; TBDel.Visible:=false; TBSave.Visible:=false; end; fnote:=True; end; if ShowModal=1 then begin if Trim(flag)<>'OrdDefStr2' then begin TEdit(Sender).Text:=Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); if Trim(flag)='BankNo' then begin with ADOTemp do begin Close; sql.Clear; sql.Add('select Top 1* from JYOrderCon_Main where BankNo='''+Trim(ClientDataSet1.fieldbyname('ZDYName').AsString)+''''); sql.Add(' order by FillTime desc'); Open; Self.BankName.Text:=Trim(ADOTemp.fieldbyname('BankName').AsString); Self.BankAddress.Text:=Trim(ADOTemp.fieldbyname('BankAddress').AsString); Self.BankFastNo.Text:=Trim(ADOTemp.fieldbyname('BankFastNo').AsString); end; end; end else begin TEdit(Sender).Text:=Trim(ClientDataSet1.fieldbyname('Note').AsString); SYRName.TxtCode:=Trim(ClientDataSet1.fieldbyname('ZdyName').AsString); with ADOTemp do begin Close; sql.Clear; sql.Add('select Top 1* from JYOrderCon_Main where SYRName='''+Trim(ClientDataSet1.fieldbyname('Note').AsString)+''''); sql.Add(' order by FillTime desc'); Open; Self.SYRAddress.Text:=Trim(ADOTemp.fieldbyname('SYRAddress').AsString); end; end; end; end; finally frmZDYHelp.Free; end; end; procedure TfrmConInPut.ToolButton3Click(Sender: TObject); begin if Order_Sub.IsEmpty then Exit; OneKeyPost(Tv1,Order_Sub); end; end.