unit U_CPAddPN; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit, cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, BtnEdit, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator; type TfrmCPAddPN = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; TBClose: TToolButton; CDS_Sub: TClientDataSet; ADOQueryMain: TADOQuery; DataSource2: TDataSource; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; ScrollBox1: TScrollBox; Label1: TLabel; Label7: TLabel; CYNo: TEdit; CYNote: TMemo; Label5: TLabel; CYName: TEdit; Label15: TLabel; CYMF: TEdit; Label22: TLabel; CYKZ: TEdit; Label23: TLabel; Label2: TLabel; CYColor: TEdit; Label4: TLabel; CYHX: TEdit; Label10: TLabel; CYPrice: TEdit; CYID: TEdit; Label3: TLabel; Label6: TLabel; ZhenXing: TEdit; Label8: TLabel; ShaChang: TEdit; Label9: TLabel; CarType: TEdit; CYSpec: TMemo; Label13: TLabel; CYCL: TEdit; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1XHNo: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; Label12: TLabel; CYZhuanSu: TEdit; Label14: TLabel; WZCYPrice: TEdit; ForCustomer: TBtnEditA; Label11: TLabel; v1Column3: TcxGridDBColumn; ToolButton2: TToolButton; procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure CYColorKeyPress(Sender: TObject; var Key: Char); procedure CYNoKeyPress(Sender: TObject; var Key: Char); procedure ForCustomerBtnClick(Sender: TObject); procedure CYKZExit(Sender: TObject); procedure CYMFExit(Sender: TObject); procedure v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure ToolButton2Click(Sender: TObject); // procedure v1Column1PropertiesEditValueChanged(Sender: TObject); procedure v1Column1PropertiesChange(Sender: TObject); private canshu1: string; Fint: Integer; procedure InitSubGrid(); function SaveData(): Boolean; { Private declarations } public FCYID, FCYCode, FCPID, FCPNO, FCPName: string; CopyInt: Integer; { Public declarations } end; var frmCPAddPN: TfrmCPAddPN; implementation uses U_DataLink, U_Fun, U_iniParam, U_ZDYHelp, U_ZdyAttachGYS, U_FileUp, U_ZdyAttachment; {$R *.dfm} procedure TfrmCPAddPN.InitSubGrid(); var FXHInt: integer; begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; SQL.Add('select * from CP_YDang where CYID=''' + Trim(FCYID) + ''''); Open; end; SCSHDataNew(ADOQueryMain, ScrollBox1, 2); SCSHDataNew(ADOQueryMain, ScrollBox1, 0); finally ADOQueryMain.EnableControls; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from CP_YDangSpec where CYID=''' + Trim(FCYID) + ''''); Open; end; SCreateCDS20(ADOQueryTemp, CDS_Sub); SInitCDSData20(ADOQueryTemp, CDS_Sub); if CDS_Sub.IsEmpty then begin for FXHInt := 1 to 15 do begin with CDS_Sub do begin Append; fieldbyname('XHInt').value := FXHInt; end; end; end; end; procedure TfrmCPAddPN.FormShow(Sender: TObject); begin InitSubGrid(); if CopyInt = 1 then begin FCYID := ''; CYID.text := ''; CYNO.TEXT := ''; end; end; procedure TfrmCPAddPN.TBCloseClick(Sender: TObject); begin Close; end; function TfrmCPAddPN.SaveData(): Boolean; var maxId, maxid2, FCYNo, maxno: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FCYID) = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'Y', 'CP_YDang', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; CYID.Text := trim(maxId); if trim(cyno.Text) = '' then begin if GetLSNo(ADOQueryCmd, maxid2, 'YP', 'CP_YDang', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; CYno.Text := trim(maxid2); end; end else begin maxId := Trim(FCYID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from CP_YDang where CYID=''' + Trim(FCYID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FCYID) = '' then begin Append; FieldByName('CYType').Value := Trim(FCPID); end else begin Edit; end; FieldByName('CYID').Value := Trim(maxId); SSetsaveSqlNew(ADOQueryCmd, 'CP_YDang', ScrollBox1, 2); Post; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select count(*) as AA from CP_YDang where CYNo=''' + Trim(CYNo.Text) + ''''); Open; if FieldByName('AA').AsInteger > 1 then begin ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('编号重复!', '提示', 0); Exit; end; end; //保存配比表 with CDS_Sub do begin First; while not Eof do begin if Trim(CDS_Sub.fieldbyname('PBID').AsString) = '' then begin if GetLSNo(ADOQueryCmd, maxno, 'YPS', 'CP_YDangSpec', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!', '提示', 0); Exit; end; end else begin maxno := Trim(CDS_Sub.fieldbyname('PBID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from CP_YDangSpec where PBID=''' + Trim(maxno) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_Sub.fieldbyname('PBID').AsString) = '' then Append else Edit; FieldByName('CYID').Value := Trim(maxId); FieldByName('PBID').Value := Trim(maxno); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_Sub, 'CP_YDangSpec', 0); Post; end; CDS_Sub.Edit; CDS_Sub.FieldByName('PBID').Value := Trim(maxno); Next; end; end; // with ADOCmd do // begin // Close; // sql.Clear; // sql.Add('Update JYOrderCon_Main_PB Set '); // sql.Add('ConMoney=(select Sum(ConMXMoney) from JYOrderCon_Sub_PB A where A.MainId=JYOrderCon_Main_PB.MainId)'); // sql.Add(',ConQty=(select Sum(PRTOrderQty) from JYOrderCon_Sub_PB A where A.MainId=JYOrderCon_Main_PB.MainId)'); // sql.Add('where MainId='''+Trim(FMainId)+''''); // ExecSQL ; // end; ADOQueryCmd.Connection.CommitTrans; FCYID := maxId; Result := True; except Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmCPAddPN.ToolButton1Click(Sender: TObject); begin // if CYNo.Text = '' then // begin // Application.MessageBox('产品编号不能为空!', '提示', 0); // Exit; // end; if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; procedure TfrmCPAddPN.CYColorKeyPress(Sender: TObject; var Key: Char); var c: Integer; begin if Key = '.' then begin for c := 1 to length(TEdit(Sender).text) do begin if Tedit(Sender).text[c] = '.' then Key := #0; end; end else if Key = #13 then PerForm(WM_NEXTDLGCTL, 0, 0) else if Key = #8 then Key := #8 else if (Key < '0') or (Key > '9') then Key := #0; end; procedure TfrmCPAddPN.CYNoKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmCPAddPN.ForCustomerBtnClick(Sender: TObject); begin try frmZdyAttachment := TfrmZdyAttachment.Create(Application); with frmZdyAttachment do begin if ShowModal = 1 then begin ForCustomer.Text := Trim(CDS_HZ.fieldbyname('CoName').AsString); end; end; finally frmZdyAttachment.Free; end; end; procedure TfrmCPAddPN.CYKZExit(Sender: TObject); begin if pos('GSM', trim(CYKZ.Text)) = 0 then CYKZ.Text := trim(CYKZ.Text) + 'GSM'; end; procedure TfrmCPAddPN.CYMFExit(Sender: TObject); begin if pos('CM', trim(CYMF.Text)) = 0 then CYMF.Text := trim(CYMF.Text) + 'CM'; end; procedure TfrmCPAddPN.v1Column1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); var FYL: string; begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'SXYCLName'; flagname := '原材料名称'; if ShowModal = 1 then begin Self.CDS_SUB.Edit; Self.CDS_SUB.FieldByName('YLName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; // toolbutton2.Click(); end; procedure TfrmCPAddPN.ToolButton2Click(Sender: TObject); var FYL: string; begin FYL := ''; with cds_sub do begin First; while not Eof do begin if CDS_SUB.FieldBYNAME('ylname').ASSTRING <> '' then begin if FYL = '' then begin FYL := CDS_SUB.FieldBYNAME('ylname').ASSTRING; end else begin FYL := FYL + '+' + CDS_SUB.FieldBYNAME('ylname').ASSTRING; end; end; next; end; cyspec.Text := FYL; end; end; procedure TfrmCPAddPN.v1Column1PropertiesChange(Sender: TObject); var FYL: string; begin // FYL := ''; // with cds_sub do // begin // First; // while not Eof do // begin // if CDS_SUB.FieldBYNAME('ylname').ASSTRING <> '' then // begin // if FYL = '' then // begin // FYL := CDS_SUB.FieldBYNAME('ylname').ASSTRING; // end // else // begin // FYL := FYL + '+' + CDS_SUB.FieldBYNAME('ylname').ASSTRING; // end; // // end; // next; // end; // cyspec.Text := FYL; // end; end; end.