unit U_TatClothInfoInput; 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, U_BaseList, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxNavigator, dxDateRanges, dxBarBuiltInMenu, cxPC, dxScrollbarAnnotations, cxCheckBox, dxSkinWXI; type TfrmTatClothInfoInput = class(TForm) ToolBar1: TToolBar; ToolButton1: TToolButton; TBClose: TToolButton; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; ScrollBox1: TScrollBox; Label1: TLabel; Label5: TLabel; Label15: TLabel; Label22: TLabel; Label2: TLabel; Label4: TLabel; Label3: TLabel; C_Code: TEdit; C_Name: TEdit; C_YarnQty: TEdit; C_FinishLatitudeDensity: TEdit; C_Width: TBtnEditC; C_GramWeight: TBtnEditC; Label12: TLabel; C_FinishLongitudeDensity: TEdit; ToolButton6: TToolButton; BCIID: TEdit; Label6: TLabel; Label7: TLabel; Label8: TLabel; C_LatitudeSpec: TEdit; C_LongitudeSpec: TEdit; strip_width: TEdit; Label9: TLabel; C_Spec: TEdit; CDS_1: TClientDataSet; DS_1: TDataSource; CDS_2: TClientDataSet; DS_2: TDataSource; Label10: TLabel; C_MachLatitudeDensity: TEdit; cxPageControl3: TcxPageControl; cxTabSheet1: TcxTabSheet; cxTabSheet2: TcxTabSheet; Panel1: TPanel; cxPageControl2: TcxPageControl; cxGrid1: TcxGrid; TV1: TcxGridDBTableView; cxGridDBColumn3: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; cxGridDBColumn5: TcxGridDBColumn; cxGridDBColumn8: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; TV1Column1: TcxGridDBColumn; TV1Column2: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; Panel3: TPanel; Panel4: TPanel; Label20: TLabel; ToolBar2: TToolBar; ToolButton2: TToolButton; ToolButton3: TToolButton; ToolButton5: TToolButton; Panel2: TPanel; cxPageControl1: TcxPageControl; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2Column10: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; v2Column2: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v2Column6: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; Tv2Column2: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Panel5: TPanel; Panel6: TPanel; Label21: TLabel; ToolBar3: TToolBar; ToolButton4: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; Panel7: TPanel; Label35: TLabel; Label34: TLabel; Label36: TLabel; Label37: TLabel; Label38: TLabel; Label39: TLabel; Label40: TLabel; Label41: TLabel; Label42: TLabel; Label44: TLabel; Label45: TLabel; Label46: TLabel; Label48: TLabel; Label49: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label53: TLabel; Label54: TLabel; Label55: TLabel; Label57: TLabel; Label58: TLabel; Label59: TLabel; Label60: TLabel; Label61: TLabel; Label62: TLabel; Label63: TLabel; Label64: TLabel; Label65: TLabel; Label66: TLabel; Label67: TLabel; Label68: TLabel; Label69: TLabel; Label70: TLabel; Label71: TLabel; Label72: TLabel; WB_2: TEdit; WB_1: TEdit; WB_4: TEdit; WB_3: TEdit; WB_6: TEdit; WB_5: TEdit; WB_8: TEdit; WB_7: TEdit; WB_10: TEdit; WB_9: TEdit; WB_12: TEdit; WB_11: TEdit; WB_14: TEdit; WB_13: TEdit; WB_16: TEdit; WB_15: TEdit; WB_18: TEdit; WB_17: TEdit; WB_20: TEdit; WB_19: TEdit; WB_22: TEdit; WB_21: TEdit; WB_24: TEdit; WB_23: TEdit; WB_26: TEdit; WB_25: TEdit; WB_28: TEdit; WB_27: TEdit; WB_30: TEdit; WB_29: TEdit; WB_32: TEdit; WB_31: TEdit; WB_34: TEdit; WB_33: TEdit; WB_36: TEdit; WB_35: TEdit; WB_38: TEdit; WB_37: TEdit; WB_40: TEdit; WB_39: TEdit; WB_42: TEdit; WB_41: TEdit; WB_44: TEdit; WB_43: TEdit; WB_46: TEdit; WB_45: TEdit; WB_48: TEdit; WB_47: TEdit; WB_50: TEdit; WB_49: TEdit; WB_52: TEdit; WB_51: TEdit; WB_54: TEdit; WB_53: TEdit; WB_56: TEdit; WB_55: TEdit; WB_58: TEdit; WB_57: TEdit; WB_60: TEdit; WB_59: TEdit; WB_62: TEdit; WB_61: TEdit; WB_64: TEdit; WB_63: TEdit; WB_66: TEdit; WB_65: TEdit; WB_68: TEdit; WB_67: TEdit; WB_70: TEdit; WB_69: TEdit; WB_72: TEdit; WB_71: TEdit; cxTabSheet3: TcxTabSheet; Panel8: TPanel; Label73: TLabel; Edit1: TEdit; Button1: TButton; cxGrid3: TcxGrid; TV3: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; cxGridDBColumn9: TcxGridDBColumn; cxGridLevel3: TcxGridLevel; CDS_3: TClientDataSet; DS_3: TDataSource; C_Color: TEdit; Label11: TLabel; estimated_diff: TEdit; Label13: TLabel; C_LongitudeBatchNo: TEdit; C_LatitudeBatchNo: TEdit; Label14: TLabel; Label16: TLabel; ToolButton9: TToolButton; cxTabSheet4: TcxTabSheet; cxTabSheet5: TcxTabSheet; head_count: TEdit; C_ReedNo: TEdit; row_count_top: TEdit; displace: TEdit; reed_width: TEdit; Label74: TLabel; ends_per_dent: TEdit; Label75: TLabel; selvage_yarn: TEdit; Label76: TLabel; yardage: TEdit; warp_arrange: TMemo; reed_weave_method: TMemo; weft_arrange: TMemo; cxTabSheet7: TcxTabSheet; Panel9: TPanel; Label26: TLabel; threading_method: TMemo; Splitter1: TSplitter; Panel10: TPanel; Label27: TLabel; lifting_method: TMemo; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label23: TLabel; cxTabSheet6: TcxTabSheet; Label24: TLabel; Label25: TLabel; procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure CYColorKeyPress(Sender: TObject; var Key: Char); procedure CYKZExit(Sender: TObject); procedure CYMFExit(Sender: TObject); procedure FormCreate(Sender: TObject); procedure CYJGGYBtnDnClick(Sender: TObject); procedure C_WidthBtnDnClick(Sender: TObject); procedure C_WidthBtnUpClick(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton7Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Button1Click(Sender: TObject); procedure ToolButton9Click(Sender: TObject); procedure TV1YRatioPropertiesEditValueChanged(Sender: TObject); procedure Tv2YRatioPropertiesEditValueChanged(Sender: TObject); private canshu1: string; Fint: Integer; FBound: Boolean; procedure SetCraftFieldsReadOnly(AReadOnly: Boolean); procedure InitGrid(); procedure AddPresetYarnRows(ACDS: TClientDataSet); function SaveData(): Boolean; procedure CALCYarnQty(); procedure CalcGramWeight(); procedure SyncYRatioFromEditor(ACDS: TClientDataSet; Sender: TObject); { Private declarations } public FBCIID, FCTID: string; CopyInt: Integer; { Public declarations } end; var frmTatClothInfoInput: TfrmTatClothInfoInput; implementation uses U_DataLink, U_RTFun, U_iniParam, U_ZDYHelp, U_AttachmentUpload, U_YarnInfoSel; {$R *.dfm} procedure TfrmTatClothInfoInput.Button1Click(Sender: TObject); begin if CDS_3.IsEmpty then exit; if CDS_3.Locate('ssel', True, []) = False then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要作废数据吗?作废后数据不能恢复。', '提示', 32 + 4) <> IDYES then Exit; CDS_3.DisableControls; with CDS_3 do begin First; while not Eof do begin if CDS_3.FieldByName('SSel').AsBoolean = True then begin if Trim(CDS_3.fieldbyname('QZID').AsString) <> '' then with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Bs_cloth_info_qz where QZID=''' + Trim(CDS_3.fieldbyname('QZID').AsString) + ''''); ExecSQL; end; CDS_3.Delete; end else Next; end; end; CDS_3.EnableControls; end; procedure TfrmTatClothInfoInput.CALCYarnQty(); var MYarnQty, MOrdQty, MWidth, MMachLatitudeDensity: Double; begin MYarnQty := STRTOFLOATDEF(C_YarnQty.Text, 0); MOrdQty := 10000; MWidth := STRTOFLOATDEF(StringReplace(C_Width.Text, 'CM', '', [rfReplaceAll, rfIgnoreCase]), 0); MMachLatitudeDensity := STRTOFLOATDEF(C_MachLatitudeDensity.Text, 0); with CDS_1 do begin DisableControls; First; while not Eof do begin Edit; FieldByName('Y_Qty').Value := MYarnQty * MOrdQty * FieldByName('Y_Ratio').AsFloat / 100 / 9000 * FieldByName('Denier').AsFloat / 1000; Next; end; EnableControls; end; with CDS_2 do begin DisableControls; First; while not Eof do begin Edit; FieldByName('Y_Qty').Value := MMachLatitudeDensity * MOrdQty * MWidth * FieldByName('Y_Ratio').AsFloat / 100 / 9000 * FieldByName('Denier').AsFloat / 1000; Next; end; EnableControls; end; end; procedure TfrmTatClothInfoInput.SyncYRatioFromEditor(ACDS: TClientDataSet; Sender: TObject); var MValue: Double; begin MValue := StrToFloatDef(Trim(TcxTextEdit(Sender).EditingText), -1); if MValue < 0 then Exit; if ACDS.FieldByName('Y_Ratio').AsFloat <> MValue then begin ACDS.Edit; ACDS.FieldByName('Y_Ratio').AsFloat := MValue; ACDS.Post; end; end; procedure TfrmTatClothInfoInput.CalcGramWeight(); function SumViewRatio(AView: TcxGridDBTableView; ARatioColumn: TcxGridDBColumn): Double; var i: Integer; v: Variant; begin Result := 0; for i := 0 to AView.DataController.RecordCount - 1 do begin v := AView.DataController.Values[i, ARatioColumn.Index]; if not VarIsNull(v) then Result := Result + v; end; end; begin C_GramWeight.Text := FormatFloat('0.######', (SumViewRatio(TV1, cxGridDBColumn7) + SumViewRatio(Tv2, v2Column5)) / 1000); end; procedure TfrmTatClothInfoInput.TV1YRatioPropertiesEditValueChanged(Sender: TObject); begin SyncYRatioFromEditor(CDS_1, Sender); CalcGramWeight(); end; procedure TfrmTatClothInfoInput.Tv2YRatioPropertiesEditValueChanged(Sender: TObject); begin SyncYRatioFromEditor(CDS_2, Sender); CalcGramWeight(); end; procedure TfrmTatClothInfoInput.InitGrid(); begin //先恢复工艺字段可填充状态(绑定态在末尾统一置只读) SetCraftFieldsReadOnly(False); with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + ''''); Open; end; //是否已绑定工艺 FBound := Trim(ADOQueryTemp.fieldbyname('CRID').AsString) <> ''; //memo fields on tab sheets are not reached by SCSHData, load manually warp_arrange.Text := Trim(ADOQueryTemp.fieldbyname('warp_arrange').AsString); weft_arrange.Text := Trim(ADOQueryTemp.fieldbyname('weft_arrange').AsString); reed_weave_method.Text := Trim(ADOQueryTemp.fieldbyname('reed_weave_method').AsString); threading_method.Text := Trim(ADOQueryTemp.fieldbyname('threading_method').AsString); lifting_method.Text := Trim(ADOQueryTemp.fieldbyname('lifting_method').AsString); SCSHData(ADOQueryTemp, ScrollBox1, 2); SCSHData(ADOQueryTemp, ScrollBox1, 0); with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from BS_Cloth_Info_WB where BCIID=''' + Trim(FBCIID) + ''''); Open; end; SCSHData(ADOQueryTemp, PANEL7, 2); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from BS_Cloth_Yarn A '); sql.Add(' where YRType=''经丝'' and A.BCIID=''' + Trim(FBCIID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_1); SInitCDSData(ADOQueryTemp, CDS_1); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from BS_Cloth_Yarn A '); sql.Add(' where YRType=''纬丝'' and A.BCIID=''' + Trim(FBCIID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from Bs_cloth_info_qz A '); sql.Add(' where A.BCIID=''' + Trim(FBCIID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_3); SInitCDSData(ADOQueryTemp, CDS_3); //绑定工艺后:工艺管辖字段/配比网格/相关按钮全部只读 SetCraftFieldsReadOnly(FBound); TV1.OptionsData.Editing := not FBound; Tv2.OptionsData.Editing := not FBound; ToolButton2.Enabled := not FBound; ToolButton3.Enabled := not FBound; ToolButton4.Enabled := not FBound; ToolButton5.Enabled := not FBound; ToolButton7.Enabled := not FBound; ToolButton8.Enabled := not FBound; end; procedure TfrmTatClothInfoInput.AddPresetYarnRows(ACDS: TClientDataSet); const CSeq: array[0..5] of string = ('甲', '乙', '丙', '丁', '戊', '己'); var i: Integer; begin for i := 0 to 5 do begin ACDS.Append; ACDS.FieldByName('seq_no').Value := CSeq[i]; ACDS.Post; end; end; procedure TfrmTatClothInfoInput.SetCraftFieldsReadOnly(AReadOnly: Boolean); var i: Integer; begin //绑定工艺后,工艺管辖字段只作展示: //Tag在2/0间切换,使RTSetsavedata保存产品时自动跳过这些控件;禁用防手工编辑 if AReadOnly then begin C_Width.Tag := 0; C_GramWeight.Tag := 0; C_Color.Tag := 0; C_YarnQty.Tag := 0; head_count.Tag := 0; strip_width.Tag := 0; C_MachLatitudeDensity.Tag := 0; row_count_top.Tag := 0; displace.Tag := 0; reed_width.Tag := 0; C_ReedNo.Tag := 0; ends_per_dent.Tag := 0; selvage_yarn.Tag := 0; yardage.Tag := 0; C_Width.Enabled := False; C_GramWeight.Enabled := False; C_Color.Enabled := False; C_YarnQty.Enabled := False; head_count.Enabled := False; strip_width.Enabled := False; C_MachLatitudeDensity.Enabled := False; row_count_top.Enabled := False; displace.Enabled := False; reed_width.Enabled := False; C_ReedNo.Enabled := False; ends_per_dent.Enabled := False; selvage_yarn.Enabled := False; yardage.Enabled := False; warp_arrange.ReadOnly := True; weft_arrange.ReadOnly := True; threading_method.ReadOnly := True; for i := 0 to Panel7.ControlCount - 1 do if Panel7.Controls[i] is TEdit then Panel7.Controls[i].Enabled := False; end else begin C_Width.Tag := 2; C_GramWeight.Tag := 2; C_Color.Tag := 2; C_YarnQty.Tag := 2; head_count.Tag := 2; strip_width.Tag := 2; C_MachLatitudeDensity.Tag := 2; row_count_top.Tag := 2; displace.Tag := 2; reed_width.Tag := 2; C_ReedNo.Tag := 2; ends_per_dent.Tag := 2; selvage_yarn.Tag := 2; yardage.Tag := 2; C_Width.Enabled := True; C_GramWeight.Enabled := True; C_Color.Enabled := True; C_YarnQty.Enabled := True; head_count.Enabled := True; strip_width.Enabled := True; C_MachLatitudeDensity.Enabled := True; row_count_top.Enabled := True; displace.Enabled := True; reed_width.Enabled := True; C_ReedNo.Enabled := True; ends_per_dent.Enabled := True; selvage_yarn.Enabled := True; yardage.Enabled := True; warp_arrange.ReadOnly := False; weft_arrange.ReadOnly := False; threading_method.ReadOnly := False; for i := 0 to Panel7.ControlCount - 1 do if Panel7.Controls[i] is TEdit then Panel7.Controls[i].Enabled := True; end; end; procedure TfrmTatClothInfoInput.FormShow(Sender: TObject); begin inherited; ReadCxGrid(self.Caption + 'TV1', Tv1, '经纱配比'); ReadCxGrid(self.Caption + 'TV2', Tv2, '纬纱配比'); InitGrid(); if CopyInt = 1 then begin FBCIID := ''; BCIID.text := ''; C_Code.text := ''; //复制出的新产品视为未绑定,界面值作为初始数据照常保存 FBound := False; SetCraftFieldsReadOnly(False); TV1.OptionsData.Editing := True; Tv2.OptionsData.Editing := True; ClearCDSColumn(CDS_2, ['YRId', 'bciid']); ClearCDSColumn(CDS_1, ['YRId', 'bciid']); ClearCDSColumn(CDS_3, ['QZID', 'bciid']); end; // if C_Code.text = '' then // begin // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add(' exec P_YP_Get_CPBH '); // sql.Add('@CTID=' + quotedstr(Trim(FCTID))); // // Open; // end; // end; // if trim(C_Code.Text) = '' then // begin // with ADOQueryTemp do // begin // Close; // sql.Clear; // sql.Add(' exec P_YP_Get_No @Str=''CP'' '); // Open; // end; // C_Code.Text := trim(ADOQueryTemp.FieldByName('NewC_Code').asstring); // end; // if FCPName = '针织' then // begin // CYPUnit.text := 'KG'; // end; // if FCPName = '梭织' then // begin // CYPUnit.text := 'M'; // end; end; procedure TfrmTatClothInfoInput.TBCloseClick(Sender: TObject); begin Close; end; function TfrmTatClothInfoInput.SaveData(): Boolean; var maxId, maxpbno, QZMAXNO: string; begin try ADOQueryCmd.Connection.BeginTrans; if Trim(FBCIID) = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'Y', 'BS_Cloth_Info', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; BCIID.Text := trim(maxId); end else begin maxId := Trim(FBCIID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from BS_Cloth_Info where BCIID=''' + Trim(FBCIID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FBCIID) = '' then begin Append; FieldByName('CTID').Value := Trim(FCTID); FieldByName('FILLID').Value := Trim(DCode); FieldByName('FILLER').Value := Trim(DName); FieldByName('FILLTIME').Value := SGetServerDateTime(ADOQueryTemp); end else begin Edit; FieldByName('EDITER').Value := Trim(DName); FieldByName('EDITTIME').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('BCIID').Value := Trim(maxId); if trim(C_Code.Text) = '' then C_Code.Text := Trim(maxId); RTSetsavedata(ADOQueryCmd, 'BS_Cloth_Info', ScrollBox1, 2); //memo fields on tab sheets, save manually if not FBound then begin if Trim(warp_arrange.Text) = '' then ADOQueryCmd.FieldByName('warp_arrange').Value := null else ADOQueryCmd.FieldByName('warp_arrange').Value := Trim(warp_arrange.Text); if Trim(weft_arrange.Text) = '' then ADOQueryCmd.FieldByName('weft_arrange').Value := null else ADOQueryCmd.FieldByName('weft_arrange').Value := Trim(weft_arrange.Text); end; if Trim(reed_weave_method.Text) = '' then ADOQueryCmd.FieldByName('reed_weave_method').Value := null else ADOQueryCmd.FieldByName('reed_weave_method').Value := Trim(reed_weave_method.Text); if not FBound then begin if Trim(threading_method.Text) = '' then ADOQueryCmd.FieldByName('threading_method').Value := null else ADOQueryCmd.FieldByName('threading_method').Value := Trim(threading_method.Text); end; if Trim(lifting_method.Text) = '' then ADOQueryCmd.FieldByName('lifting_method').Value := null else ADOQueryCmd.FieldByName('lifting_method').Value := Trim(lifting_method.Text); Post; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select count(*) as AA from BS_Cloth_Info where C_Code=''' + Trim(C_Code.Text) + ''''); Open; if FieldByName('AA').AsInteger > 1 then begin ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('编号重复!', '提示', 0); Exit; end; end; ////////////////////////// 保存纹版图 ////////////////////////// if not FBound then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_Info_WB where BCIID=''' + Trim(FBCIID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FBCIID) = '' then begin Append; end else begin Edit; end; FieldByName('BCIID').Value := Trim(maxId); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_Info_WB', Panel7, 2); Post; end; end; ////////////////////////// 保存纹版图 ////////////////////////// ////////////////////////// 保存经丝配比表 ////////////////////////// if not FBound then begin with CDS_1 do begin First; while not Eof do begin if Trim(CDS_1.fieldbyname('YRId').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxpbno, 'RJ', 'BS_Cloth_Yarn', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxpbno := Trim(CDS_1.fieldbyname('YRId').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from BS_Cloth_Yarn where '); sql.Add(' YRId=''' + Trim(maxpbno) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_1.fieldbyname('YRId').AsString) = '' then begin Append; FieldByName('Filler').Value := Trim(DName); FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('YRType').Value := '经丝'; FieldByName('BCIID').Value := Trim(maxId); FieldByName('YRId').Value := Trim(maxpbno); RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_1, 'BS_Cloth_Yarn', 0); Post; end; CDS_1.Edit; CDS_1.FieldByName('BCIID').Value := Trim(maxId); CDS_1.FieldByName('YRId').Value := Trim(maxpbno); Next; end; end; end; ////////////////////////// 保存经丝配比表 ////////////////////////// ////////////////////////// 保存纬丝配比表 ////////////////////////// if not FBound then begin with CDS_2 do begin First; while not Eof do begin if Trim(CDS_2.fieldbyname('YRId').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxpbno, 'RJ', 'BS_Cloth_Yarn', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxpbno := Trim(CDS_2.fieldbyname('YRId').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from BS_Cloth_Yarn where '); sql.Add(' YRId=''' + Trim(maxpbno) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_2.fieldbyname('YRId').AsString) = '' then begin Append; FieldByName('Filler').Value := Trim(DName); FieldByName('FillTime').Value := SGetServerDateTime(ADOQueryTemp); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('EditTime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('YRType').Value := '纬丝'; FieldByName('BCIID').Value := Trim(maxId); FieldByName('YRId').Value := Trim(maxpbno); RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_2, 'BS_Cloth_Yarn', 0); Post; end; CDS_2.Edit; CDS_2.FieldByName('BCIID').Value := Trim(maxId); CDS_2.FieldByName('YRId').Value := Trim(maxpbno); Next; end; end; end; ////////////////////////// 保存纬丝配比表 ////////////////////////// /// /// /// /// /// 保存 起综工艺单 with CDS_3 do begin First; while not Eof do begin if Trim(CDS_3.fieldbyname('QZID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, QZMAXNO, 'QZ', 'Bs_cloth_info_qz', 4, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取子流水号失败!', '提示', 0); Exit; end; end else begin QZMAXNO := Trim(CDS_3.fieldbyname('QZID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_cloth_info_qz where QZID=''' + Trim(QZMAXNO) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_3.fieldbyname('QZID').AsString) = '' then Append else Edit; FieldByName('BCIID').Value := Trim(maxId); FieldByName('QZID').Value := Trim(QZMAXNO); RTSetSaveDataCDS(ADOQueryCmd, Tv3, CDS_3, 'Bs_cloth_info_qz', 0); Post; end; CDS_3.Edit; CDS_3.FieldByName('QZID').Value := Trim(QZMAXNO); Next; end; end; /// ////////////////////////// 保存起综工艺单 ////////////////////////// ADOQueryCmd.Connection.CommitTrans; FBCIID := maxId; Result := True; except Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmTatClothInfoInput.CYJGGYBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; end; procedure TfrmTatClothInfoInput.ToolButton1Click(Sender: TObject); var MC_Code: string; begin C_Name.SetFocus; if C_Name.Text = '' then begin Application.MessageBox('产品名称不能为空!', '提示', 0); Exit; end; if trim(C_Code.Text) = '' then begin if GetLSNo(ADOQueryCmd, MC_Code, 'C', 'BS_Cloth_Info', 4, 0) = False then begin Application.MessageBox('取最成品编号失败!', '提示', 0); Exit; end; C_Code.Text := MC_Code; end; // CALCYarnQty(); if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; procedure TfrmTatClothInfoInput.ToolButton2Click(Sender: TObject); begin // try // frmYarnInfoSel := TfrmYarnInfoSel.Create(Application); // with frmYarnInfoSel do // begin // if ShowModal = 1 then // begin // with self.CDS_1 do // begin // Append; // FieldByName('Brand').Value := frmYarnInfoSel.CDS_1.fieldbyname('Brand').Value; // FieldByName('Y_Code').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Code').Value; // FieldByName('Y_Name').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Name').Value; // FieldByName('Y_Spec').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Spec').Value; // FieldByName('Y_Color').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Color').Value; // FieldByName('Denier').Value := frmYarnInfoSel.CDS_1.fieldbyname('Denier').Value; // FieldByName('Y_Ratio').Value := 0; // Post; // end; // // end; // end; // finally // frmYarnInfoSel.Free; // end; //增行固定新增甲乙丙丁戊己六行(无论表中是否已有数据) AddPresetYarnRows(CDS_1); end; procedure TfrmTatClothInfoInput.ToolButton3Click(Sender: TObject); begin if CDS_1.IsEmpty then Exit; if Trim(CDS_1.fieldbyname('YRId').AsString) <> '' then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_Yarn where YRId=''' + Trim(CDS_1.fieldbyname('YRId').AsString) + ''''); ExecSQL; end; end; CDS_1.Delete; CalcGramWeight(); end; procedure TfrmTatClothInfoInput.ToolButton4Click(Sender: TObject); begin // try // frmYarnInfoSel := TfrmYarnInfoSel.Create(Application); // with frmYarnInfoSel do // begin // if ShowModal = 1 then // begin // with self.CDS_2 do // begin // Append; // FieldByName('Brand').Value := frmYarnInfoSel.CDS_1.fieldbyname('Brand').Value; // FieldByName('Y_Code').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Code').Value; // FieldByName('Y_Name').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Name').Value; // FieldByName('Y_Spec').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Spec').Value; // FieldByName('Y_Color').Value := frmYarnInfoSel.CDS_1.fieldbyname('Y_Color').Value; // FieldByName('Denier').Value := frmYarnInfoSel.CDS_1.fieldbyname('Denier').Value; // FieldByName('Y_Ratio').Value := 0; // Post; // end; // end; // end; // finally // frmYarnInfoSel.Free; // end; //增行固定新增甲乙丙丁戊己六行(无论表中是否已有数据) AddPresetYarnRows(CDS_2); end; procedure TfrmTatClothInfoInput.ToolButton5Click(Sender: TObject); begin C_Name.SetFocus; CALCYarnQty(); end; procedure TfrmTatClothInfoInput.CYColorKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmTatClothInfoInput.CYKZExit(Sender: TObject); begin // if pos('G/M2', trim(CYKZ.Text)) = 0 then // begin // if pos('G/M', trim(CYKZ.Text)) = 0 then // begin // CYKZ.Text := trim(CYKZ.Text) + 'G/M2'; // end; // end; end; procedure TfrmTatClothInfoInput.C_WidthBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmTatClothInfoInput.C_WidthBtnUpClick(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 ShowModal = 1 then begin TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmTatClothInfoInput.Edit1KeyPress(Sender: TObject; var Key: Char); var i, j: Integer; begin if Key = #13 then begin begin if Edit1.Text <> '' then begin i := CDS_3.RecordCount; i := i + 1; with CDS_3 do begin Append; FieldByName('SSEL').Value := FALSE; FieldByName('XuNO').Value := i; FieldByName('DZZQZGL').Value := Trim(Edit1.Text); Post; end; Edit1.Text := ''; end; end; end; end; procedure TfrmTatClothInfoInput.CYMFExit(Sender: TObject); begin // if pos('"', trim(CYMF.Text)) = 0 then // begin // if pos('CM', trim(CYMF.Text)) = 0 then // CYMF.Text := trim(CYMF.Text) + 'CM'; // end; end; procedure TfrmTatClothInfoInput.FormCreate(Sender: TObject); begin // LaYangDate.DateTime := SGetServerDateTime(ADOQueryTemp); end; procedure TfrmTatClothInfoInput.ToolButton6Click(Sender: TObject); begin if trim(C_Code.Text) = '' then Exit; try frmAttachmentUpload := TfrmAttachmentUpload.Create(Application); with frmAttachmentUpload do begin FEditAuthority := True; fkeyNO := trim(C_Code.Text); fType := '成品档案'; if ShowModal = 1 then begin end; end; finally frmAttachmentUpload.Free; end; end; procedure TfrmTatClothInfoInput.ToolButton7Click(Sender: TObject); begin if CDS_2.IsEmpty then Exit; if Trim(CDS_2.fieldbyname('YRId').AsString) <> '' then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_Yarn where YRId=''' + Trim(CDS_2.fieldbyname('YRId').AsString) + ''''); ExecSQL; end; end; CDS_2.Delete; CalcGramWeight(); end; procedure TfrmTatClothInfoInput.ToolButton8Click(Sender: TObject); begin C_Name.SetFocus; CALCYarnQty(); end; procedure TfrmTatClothInfoInput.ToolButton9Click(Sender: TObject); begin inherited; WriteCxGrid(self.Caption + 'TV1', Tv1, '经纱配比'); WriteCxGrid(self.Caption + 'TV2', Tv2, '纬纱配比'); end; end.