unit U_MachRollMain_M;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, mmsystem, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxClasses,
  dxLayoutContainer, dxLayoutControl, dxLayoutcxEditAdapters, cxContainer,
  cxEdit, Vcl.StdCtrls, cxTextEdit, Vcl.ExtCtrls, dxLayoutControlAdapters,
  U_BaseList, Data.DB, Data.Win.ADODB, Vcl.Buttons, Vcl.ComCtrls, Vcl.ToolWin,
  cxImage, cxDBEdit, cxStyles, cxCustomData, cxFilter, cxData, cxDataStorage,
  cxNavigator, dxDateRanges, dxScrollbarAnnotations, cxDBData, dxBarBuiltInMenu,
  cxPC, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
  cxGridCustomView, cxGrid, cxMemo, cxRichEdit, U_frameBads, Datasnap.DBClient,
  RM_Common, RM_Class, RM_GridReport, cxCheckBox, cxMaskEdit, cxDropDownEdit,
  Vcl.Menus, cxButtonEdit, RM_Dataset, cxGeometry, dxFramedControl, dxPanel,
  U_KeyBoard, cxGroupBox, cxGridCustomPopupMenu, cxGridPopupMenu, MovePanel,
  RM_RichEdit, cxProgressBar, cxCurrencyEdit, dxSkinsCore, frxBarcode, frxRich,
  frxOLE, frxTableObject, frxExportXLSX, frxClass, frxExportBaseDialog,
  frxExportPPTX, frxDBSet, dxSkinWXI, dxSkinsDefaultPainters;

type
  TfrmMachRollMain_M = class(TfrmBaseList)
    Panel_right: TPanel;
    cds_params: TClientDataSet;
    cds_paramsdabao: TStringField;
    cds_paramspackRolls: TIntegerField;
    cds_paramsrollNoMake: TStringField;
    cds_paramsMinWeight: TIntegerField;
    cds_paramsMaxWeight: TIntegerField;
    cds_paramslblLenUnit: TStringField;
    cds_paramsMinLen: TIntegerField;
    cds_paramsmaxLen: TIntegerField;
    cds_paramsweightRule: TIntegerField;
    cds_paramschen: TStringField;
    cds_paramsmabiao: TStringField;
    cds_paramsmbunit: TStringField;
    cds_paramsmplace: TIntegerField;
    cds_paramsyplace: TIntegerField;
    cds_paramskgplace: TIntegerField;
    cds_paramslabNumber: TIntegerField;
    CDS_2: TClientDataSet;
    DS_2: TDataSource;
    cds_1: TClientDataSet;
    cds_3: TClientDataSet;
    ds_3: TDataSource;
    ds_1: TDataSource;
    ADOQueryMain: TADOQuery;
    cds_paramsoutPage: TStringField;
    ADOQueryPrint: TADOQuery;
    cds_paramsEndPieceNo: TIntegerField;
    cds_paramsBeginPieceNo: TIntegerField;
    cds_paramsFixedLength: TIntegerField;
    cds_paramspacknoMake: TStringField;
    cds_paramspieceOrder: TBooleanField;
    cds_paramsLabVolume: TStringField;
    cds_paramsLabPackage: TStringField;
    cxGroupBox_keys: TcxGroupBox;
    FrameKeyBoard1: TFrameKeyBoard;
    cds_paramsAddwetPresent: TFloatField;
    cds_paramsAddLenPresent: TFloatField;
    GPM_3: TcxGridPopupMenu;
    MovePanel1: TMovePanel;
    ADOQueryImage: TADOQuery;
    DS_IMAGE: TDataSource;
    cds_paramspackPrintPreview: TBooleanField;
    cds_paramspacklabNumber: TIntegerField;
    cds_paramspackPostAction: TStringField;
    ADO_CJ: TADOQuery;
    fRMDB_1: TfrxDBDataset;
    frxReport1: TfrxReport;
    frxPPTXExport1: TfrxPPTXExport;
    frxXLSXExport1: TfrxXLSXExport;
    frxReportTableObject1: TfrxReportTableObject;
    frxOLEObject1: TfrxOLEObject;
    frxRichObject1: TfrxRichObject;
    frxBarCodeObject1: TfrxBarCodeObject;
    cxGrid2: TcxGrid;
    TV2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    TV2Column1: TcxGridDBColumn;
    TV2Column2: TcxGridDBColumn;
    v1PRTColor: TcxGridDBColumn;
    v1PRTOrderQty: TcxGridDBColumn;
    v1OrderUnit: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    TV2Column3: TcxGridDBColumn;
    TV2Column4: TcxGridDBColumn;
    ADO_2: TADOQuery;
    TV2Column5: TcxGridDBColumn;
    TV2Column7: TcxGridDBColumn;
    Panel1: TPanel;
    edtScan: TcxTextEdit;
    Label1: TLabel;
    OrderNo: TcxTextEdit;
    ColorNo: TcxTextEdit;
    FtyPCId: TcxTextEdit;
    Qty: TcxTextEdit;
    BCIOID: TcxTextEdit;
    Color: TcxTextEdit;
    CodeName: TcxTextEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    InputLen: TcxTextEdit;
    lblLenUnit: TLabel;
    Label10: TLabel;
    InputWeight: TcxTextEdit;
    Tare: TcxTextEdit;
    Label11: TLabel;
    BTPrint: TButton;
    Coefficient: TcxTextEdit;
    lblRuleConversion: TcxComboBox;
    Label12: TLabel;
    AOrdDefNote1: TcxRichEdit;
    packnote: TcxMemo;
    unitPieces: TcxTextEdit;
    presentWeight: TcxTextEdit;
    presentLen: TcxTextEdit;
    bt_printmd: TButton;
    addWet: TcxTextEdit;
    addLen: TcxTextEdit;
    C_GramWeight: TcxTextEdit;
    C_Width: TcxTextEdit;
    customStrField2: TcxTextEdit;
    customStrField1: TcxTextEdit;
    C_StyleNo: TcxTextEdit;
    RuleYardstick: TcxTextEdit;
    C_Pattern: TcxTextEdit;
    OutPutWeight: TcxTextEdit;
    cxDBImage1: TcxDBImage;
    Button1: TButton;
    TV2Column8: TcxGridDBColumn;
    Panel2: TPanel;
    cxGrid3: TcxGrid;
    Tv3: TcxGridDBTableView;
    v3PieceNo: TcxGridDBColumn;
    Tv3Yardage: TcxGridDBColumn;
    Tv3Meter: TcxGridDBColumn;
    v3NetWeight: TcxGridDBColumn;
    v3GrossWeight: TcxGridDBColumn;
    Tv3Grade: TcxGridDBColumn;
    tv3CIID: TcxGridDBColumn;
    cxGridLevel2: TcxGridLevel;
    ToolBar2: TToolBar;
    ToolButton3: TToolButton;
    Trolldel: TToolButton;
    ToolButton1: TToolButton;
    Tlog: TToolButton;
    ToolButton8: TToolButton;
    ToolButton2: TButton;
    Tv3Column1: TcxGridDBColumn;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);
    procedure edtScanDblClick(Sender: TObject);
    procedure edtScanKeyPress(Sender: TObject; var Key: Char);
    procedure ToolButton8Click(Sender: TObject);
    procedure edtScanEnter(Sender: TObject);
    procedure BTPrintClick(Sender: TObject);
    procedure TrolldelClick(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
    procedure Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
    procedure InputLenKeyPress(Sender: TObject; var Key: Char);
    procedure InputLenPropertiesChange(Sender: TObject);
    procedure FrameKeyBoard1SpeedButton_ycClick(Sender: TObject);
    procedure dxLayoutItem1CaptionClick(Sender: TObject);
    procedure lblRuleConversionPropertiesChange(Sender: TObject);
    procedure bt_printmdClick(Sender: TObject);
    procedure dxLayoutControl_packDblClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure FrameKeyBoard1SpeedButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FCIID, FCIFName, FWorkshop: string;
    FBCIOID, FC_Code, FC_ColorNo, FQtyUnit, FLenUnit: string;
    Faddwet, faddlen: double;
    FFtyPCId, FGangNo, FRulePieceNo, FCDUnit, FTMSId, FTMMId: string;
    FPieceNo: Integer;
    fIsPack: string;
    fIsCommopen: Boolean;
    FPacketCIID: string;
    fLabPackage, fLabVolume: string;
    FPacketCount: Integer;
    fAddwetVirtual: double;
    fAddLenVirtual: double;
    fTareType: string;
    funitPiecesStr: string; //拼匹
    procedure setFocusCtrol(controlName: string);
    procedure QuantityConversion();
    procedure ClearGlobal();
    procedure InitPlan(MSubID: string);
    procedure SetUnit(MUnit: string);
    procedure SetDdetails();
    procedure SetINIFile();
    procedure GetINIFile();
    procedure InitJYGrid();
    procedure InitGrid2();
    procedure OpenCom(DllName: string);
    procedure CloseCom(DllName: string);
    function SaveData(): Boolean;
    procedure PrtData(MCIID: string; againPring: Boolean = false);
    procedure BadSpeedButtonClick(Sender: TObject);
    procedure setFormCtrol();
    procedure On1201(var Message: Tmessage); message 1201; // 电子称
    procedure On1301(var Message: Tmessage); message 1301; // 码表
    function CheckData(CKType: string): Boolean;
    function deletePack(packId: string): boolean;
    type

  public
    fmanage: string;
    fFlileFlag: string;
  end;

var
  frmMachRollMain_M: TfrmMachRollMain_M;
  newh, newh1: hwnd;

implementation

uses
  U_DataLink, U_ControlData, U_ParamSet, U_RTFun, U_globalVar,
  U_FormLayOutDesign, U_ZDYHelp, U_iniParam, U_ProductListHelp, U_SysLogList,
  U_ProgressUpdate, U_LabelPrint, U_TradeClothTotalOutSel;
{$R *.dfm}

procedure TfrmMachRollMain_M.InitGrid2();
var
  SqlStr: string;
begin

  SqlStr := ' exec P_Trade_Market_WaitOut_Market ';
  SqlStr := SqlStr + ' @TMSId =' + quotedstr(trim(FTMSId));
//  showmessage(SqlStr);
  InitCDSData(ADO_2, CDS_2, Tv2, SqlStr, '', '');
end;

function TfrmMachRollMain_M.CheckData(CKType: string): Boolean;
var
  mvalue: double;
  mCurPieceNo: Integer;
begin
  Result := false;

  try
    if trim(FTMSId) = '' then
      raise Exception.create('请扫描流程卡！');

    if trim(CKType) = '提交' then
    begin

      if trim(lblLenUnit.Caption) = '' then
        raise Exception.create('长度单位不能为空!');

      if trim(InputWeight.Text) <> '' then
      begin
        if TryStrToFloat(InputWeight.Text, mvalue) = false then
          raise Exception.create('重量录入错误!');
        if strtofloatdef(trim(InputWeight.Text), 0) < cds_params.fieldbyName('minWeight').AsInteger then
          raise Exception.create('重量不能小于' + cds_params.fieldbyName('minWeight').AsString + '!');
        if strtofloatdef(trim(InputWeight.Text), 0) > cds_params.fieldbyName('maxWeight').AsInteger then
          raise Exception.create('重量不能大于' + cds_params.fieldbyName('maxWeight').AsString + '!');
      end;

      if trim(InputLen.Text) <> '' then
      begin
        if TryStrToFloat(InputLen.Text, mvalue) = false then
          raise Exception.create('长度录入错误!');
        if strtofloatdef(trim(InputLen.Text), 0) < cds_params.fieldbyName('minLen').AsInteger then
          raise Exception.create('长度不能小于' + cds_params.fieldbyName('minLen').AsString + '米!');
        if strtofloatdef(trim(InputLen.Text), 0) > cds_params.fieldbyName('maxLen').AsInteger then
          raise Exception.create('长度不能大于' + cds_params.fieldbyName('maxLen').AsString + '米!');
      end;

      if FQtyUnit = 'Kg' then
      begin
        if (strtofloatdef(trim(InputWeight.Text), 0) = 0) then
          raise Exception.create('重量不能为0!!');
      end
      else
      begin
        if (strtofloatdef(trim(InputLen.Text), 0) = 0) then
          raise Exception.create('长度不能为0!!');
      end;

    end;
    Result := true;
  except
    Application.MessageBox(pchar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

procedure TfrmMachRollMain_M.BTPrintClick(Sender: TObject);
var
  fPrintFile, MPacketId: string;
  mvalue: double;
  i: Integer;
begin
  try
    BTPrint.Enabled := false;

    edtScan.SetFocus;

    if CheckData('提交') = false then
      exit;

    if SaveData() then
    begin
      InputLen.Text := '';
      presentLen.Text := '';
      funitPiecesStr := '';
      presentWeight.Text := '';

      if fileexists(ExtractFilePath(Application.ExeName) + '正确.wav') then
        playSound(pwidechar('正确.wav'), 0, SND_FILENAME or SND_ASYNC);

      InputWeight.Text := '';

      if trim(cds_params.fieldbyName('outPage').AsString) = '√' then
      begin
        PrtData(FCIID);
      end;

    end;
    InputLen.SetFocus;
    setFocusCtrol(InputLen.Name);
    InitJYGrid();
    InitGrid2();
    FCIID := '';
  finally
    BTPrint.Enabled := true;
  end;
end;

procedure TfrmMachRollMain_M.bt_printmdClick(Sender: TObject);
var
  WSql: string;
begin
  if cds_3.IsEmpty then
    Exit;

  WSql := '';
  cds_3.DisableControls;
  with cds_3 do
  begin
    First;
    while not Eof do
    begin

      if WSql <> '' then
      begin
        WSql := WSql + ',' + Trim(cds_3.fieldbyname('CIID').AsString);
      end
      else
      begin
        WSql := Trim(cds_3.fieldbyname('CIID').AsString);
      end;

      Next;
    end;
  end;

  cds_3.EnableControls;
//  try
//    frmMdPrint := TfrmMdPrint.Create(Application);
//    with frmMdPrint do
//    begin
//      FLMType := '入库码单';
//      FFiltration1 := WSql;
//      FFiltration2 := WSql;
//      if ShowModal = 1 then
//      begin
////        Self.InitGrid();
//      end;
//    end;
//  finally
//    frmMdPrint.Free;
//  end;
  try
    frmLabelPrint := TfrmLabelPrint.Create(Application);
    with frmLabelPrint do
    begin
      FLMType := '入库码单';
      FFiltration1 := WSql;
      if ShowModal = 1 then
      begin
//        Self.InitGrid();
      end;
    end;
  finally
    frmLabelPrint.Free;
  end;
end;

procedure TfrmMachRollMain_M.Button1Click(Sender: TObject);
var
  fPrintFile, MPacketId, MTMSId: string;
  mvalue: double;
  i: Integer;
begin
  try
    BTPrint.Enabled := false;
    MTMSId := Trim(SelTVKey(Tv2, ['TMSId'])[0]);
    edtScan.SetFocus;

    try
      ADOQueryBaseCmd.Connection.BeginTrans;

      if trim(FBCIOID) = '' then
        raise Exception.create('请扫描流程卡！');
      with ADOQueryBaseCmd do
      begin
        Close;
        sql.Clear;
        Sql.Add('exec P_BS_Cloth_Out_DistributionAll ');
        Sql.Add('  @StkID=' + quotedstr(Trim(FBCIOID)));
        Sql.Add(' ,@TMSId =' + quotedstr(MTMSId));
        Sql.Add(' ,@Dcode=' + quotedstr(Trim(Dcode)));
        Sql.Add(' ,@DName=' + quotedstr(Trim(DName)));
//        showmessage(sql.Text);
        open;
      end;

      if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
      begin
        raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
      end;

      FCIID := trim(trim(ADOQueryBaseCmd.fieldbyName('MaxIOID2').AsString));

      ADOQueryBaseCmd.Connection.CommitTrans;
      TradeMarketProgressUpdate(ADOQueryBaseCmd, MTMSId);
    except
      ADOQueryBaseCmd.Connection.RollbackTrans;
      Application.MessageBox(pchar(Exception(ExceptObject).Message), '提示信息', 0);

    end;
    InputLen.SetFocus;
    setFocusCtrol(InputLen.Name);
    InitJYGrid();
    InitGrid2();
    FCIID := '';
  finally
    BTPrint.Enabled := true;
  end;
end;

procedure TfrmMachRollMain_M.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  if fIsCommopen then
  begin
    CloseCom(DZCDYDllName);
    CloseCom(MBDYDllName);
  end;
  Action := caFree;
end;

procedure TfrmMachRollMain_M.FormCreate(Sender: TObject);
begin
  inherited;
  fIsCommopen := false;
  cds_params.Close;
  cds_params.CreateDataSet;
  Panel_right.Align := alClient;
end;

procedure TfrmMachRollMain_M.FormDestroy(Sender: TObject);
begin
  inherited;
  frmMachRollMain_M := nil;
end;

procedure TfrmMachRollMain_M.FormShow(Sender: TObject);
var
  i: Integer;
begin
  inherited;
  gIsCanDesign := gIsCanDesign;
  gGridNativeSet := true;

  ReadCxGrid(trim(Self.Caption) + 'Tv3', Tv3, gDllFileCaption);

  if IsINIFile() then
    ReadINIFile()
  else
    WriteINIFile;

  GetINIFile();
  setFormCtrol();
  if trim(fmanage) <> '高权限' then
  begin
    if trim(DZCDYDllName) <> '' then
      OpenCom(DZCDYDllName);
    if trim(MBDYDllName) <> '' then
      OpenCom(MBDYDllName);

  end;
  if trim(fCanInputFs) = '1' then
  begin
//    cxGroupBox_keys.ClientHeight := round(cxGrid3.ClientHeight * 0.6);
    frameKeyBoard1.SpeedButton10.Visible := true;
  end
  else
  begin
//    cxGroupBox_keys.ClientHeight := round(cxGrid3.ClientHeight * 0.55);
    frameKeyBoard1.SpeedButton10.Visible := false;
  end;
end;

procedure TfrmMachRollMain_M.FrameKeyBoard1SpeedButton1Click(Sender: TObject);
var
  fsj: string;
  mComponent: TComponent;
  mkey: Char;
begin
  fsj := trim(TSpeedButton(Sender).Hint);
  if trim(fsj) = '' then
    exit;
  mComponent := FindComponent(trim(TSpeedButton(Sender).Hint));

  if mComponent = nil then
    exit;
  if TcxTextEdit(mComponent).Name = 'KuangHao' then
    exit;
  if (TcxTextEdit(mComponent).Name = 'edtScan') and (trim(TSpeedButton(Sender).Caption) = '回车') then
  begin
    mkey := #13;
    edtScanKeyPress(edtScan, mkey);
    exit;
  end;
  fsj := trim(TcxTextEdit(mComponent).Text);
  if mComponent is TcxCurrencyEdit then
  begin
    TcxCurrencyEdit(mComponent).text := fsj + trim(TSpeedButton(Sender).Caption);
    TcxCurrencyEdit(mComponent).SelectAll;
  end
  else if mComponent is TcxTextEdit then
  begin
    TcxTextEdit(mComponent).Text := fsj + trim(TSpeedButton(Sender).Caption);
    TcxTextEdit(mComponent).SelectAll;
  end
  else if mComponent is TcxComboBox then
  begin
    TcxComboBox(mComponent).Text := fsj + trim(TSpeedButton(Sender).Caption);
    TcxComboBox(mComponent).SelectAll;
  end;

end;

procedure TfrmMachRollMain_M.FrameKeyBoard1SpeedButton_ycClick(Sender: TObject);
begin
  inherited;
  cxGroupBox_keys.Visible := false;
end;

procedure TfrmMachRollMain_M.ClearGlobal();
begin
  FBCIOID := '';

  FQtyUnit := '';

  FCIID := '';
  FWorkshop := '';
  InputLen.Text := '';
  Coefficient.Text := '';
  AOrdDefNote1.Text := '';
  Tare.Text := '';
  InputWeight.Text := '';
  FLenUnit := '';
  Faddwet := 0;
  faddlen := 0;
  FPacketCIID := '';
  FPacketCount := 0;
  FC_ColorNo := '';
  FC_Code := '';
end;

procedure TfrmMachRollMain_M.QuantityConversion();
begin
  // if trim(OrderNo.Text)='' then exit;

  if cds_params.fieldbyName('weightRule').AsInteger = 0 then
  // InputWeight  毛重         OutPutWeight   净重
  begin
    if lblRuleConversion.Text <> '无需转换' then
    begin
      if lblRuleConversion.Text = '长度转公斤' then
      begin
        InputWeight.Text := floattostr(strtofloatdef(trim(InputLen.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0) + strtofloatdef(trim(Tare.Text), 0));
      end;
      if lblRuleConversion.Text = '毛重转长度' then
      begin
        InputLen.Text := floattostr(strtofloatdef(trim(InputWeight.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0));
      end;
      if lblRuleConversion.Text = '净重转长度' then
      begin
        InputLen.Text := floattostr((RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), 1) - strtofloatdef(trim(Tare.Text), 0)) * strtofloatdef(trim(Coefficient.Text), 0));
      end;
    end;
    if strtofloatdef(trim(InputWeight.Text), 0) > 0 then
    begin
      OutPutWeight.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) - strtofloatdef(trim(Tare.Text), 0))); // 净重
    end;
  end;

  if cds_params.fieldbyName('weightRule').AsInteger = 1 then
  // InputWeight  净重         OutPutWeight   毛重
  begin
    if lblRuleConversion.Text <> '无需转换' then
    begin
      if lblRuleConversion.Text = '长度转公斤' then
      begin
        InputWeight.Text := floattostr(strtofloatdef(trim(InputLen.Text), 0) * strtofloatdef(trim(Coefficient.Text), 0));
      end;
      if lblRuleConversion.Text = '毛重转长度' then
      begin
        InputLen.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) + strtofloatdef(trim(Tare.Text), 0)) * strtofloatdef(trim(Coefficient.Text), 0));
      end;
      if lblRuleConversion.Text = '净重转长度' then
      begin
        InputLen.Text := floattostr(RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), 1) * strtofloatdef(trim(Coefficient.Text), 0));
      end;
    end;
    if strtofloatdef(trim(InputWeight.Text), 0) > 0 then
    begin
      OutPutWeight.Text := floattostr((strtofloatdef(trim(InputWeight.Text), 0) + strtofloatdef(trim(Tare.Text), 0))); // 毛重
    end;
  end;

end;

procedure TfrmMachRollMain_M.InitPlan(MSubID: string);
begin
  with ADOQueryBaseTemp do
  begin
    Close;
    SQL.Clear;
    SQL.Add('EXEC P_Trade_Insp_Get_Market @TMSId=''' + trim(MSubID) + '''');
    Open;

    if not IsEmpty then
    begin

      FLenUnit := trim(ADOQueryBaseTemp.fieldbyName('LenUnit').AsString);
      if FLenUnit = '' then
      begin
        FLenUnit := 'M';
      end;

      fLabPackage := '默认包标签';
      fLabVolume := '客户标签';


//      fLabPackage := trim(ADOQueryBaseTemp.fieldbyName('LabPackage').AsString);
//      fLabVolume := trim(ADOQueryBaseTemp.fieldbyName('LabVolume').AsString);

      SetUnit(FLenUnit);

      FCDUnit := lblLenUnit.Caption;

//      FBCIOID := trim(fieldbyName('BCIOID').AsString);
      FTMSId := trim(fieldbyName('TMSId').AsString);
      FTMMId := trim(fieldbyName('TMMId').AsString);
      FQtyUnit := trim(fieldbyName('OrderUnit').AsString);
      OrderNo.Text := trim(fieldbyName('BuyOrdNo').AsString);
      CodeName.Text := trim(fieldbyName('C_Name').AsString);
      C_width.Text := trim(fieldbyName('C_width').AsString);
      C_GramWeight.Text := trim(fieldbyName('C_GramWeight').AsString);
      ColorNo.Text := trim(fieldbyName('C_ColorNo').AsString);
      Color.Text := trim(fieldbyName('C_Color').AsString);
      C_Pattern.Text := trim(fieldbyName('C_Pattern').AsString);
//      FFtyPCId := trim(fieldbyName('FtyPCId').AsString);
      FC_Code := trim(fieldbyName('C_Code').AsString);
      FC_ColorNo := trim(fieldbyName('C_ColorNo').AsString);
      cds_params.Edit;
      cds_params.fieldbyName('outPage').value := '√';
      cds_params.Post;

//      Coefficient.Text := trim(fieldbyName('Coefficient').AsString);
      // 转换系数
//      lblRuleConversion.ItemIndex := lblRuleConversion.Properties.Items.IndexOf(fieldbyName('RuleConversion').AsString);

      FtyPCId.Text := FFtyPCId;
      BCIOID.Text := FBCIOID;

      Qty.Text := trim(fieldbyName('OrderQty').AsString) + trim(fieldbyName('OrderUnit').AsString);

//      Tare.Text := trim(fieldbyName('RuleLaterTare').AsString);

      fTareType := '';

//      if fieldbyName('RuleYardstick').AsInteger > 0 then
//        RuleYardstick.Text := trim(fieldbyName('RuleYardstick').AsString)
//      else
      RuleYardstick.Text := '100';

      packnote.Lines.Clear;

      InputLen.SetFocus;
      setFocusCtrol(InputLen.Name);
      SetDdetails();
    end
    else
    begin
     // ClearGlobal();
      application.MessageBox('条码异常,请检查条码信息是否是未配货状态!', '警告信息');
    end;
  end;
  InitJYGrid();

  edtScan.Text := '';

  // 显示包
  setFormCtrol();

end;

procedure TfrmMachRollMain_M.InputLenKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    Key := #0;
    SelectNext(ActiveControl as TWinControl, true, true);
  end;

end;

procedure TfrmMachRollMain_M.InputLenPropertiesChange(Sender: TObject);
begin

  // if StrToIntDef(trim(InputWeight.Text), 0) = 0 then
  // begin
  // exit;
  // end;
  QuantityConversion();
end;

procedure TfrmMachRollMain_M.lblRuleConversionPropertiesChange(Sender: TObject);
begin
  inherited;
  if lblRuleConversion.Text = '无需转换' then
  begin
    OutPutWeight.Text := '';
    InputLen.Text := '';
    InputWeight.Text := '';
  end;
  QuantityConversion();
end;

procedure TfrmMachRollMain_M.SetUnit(MUnit: string);
begin

  lblLenUnit.Caption := MUnit;

end;

procedure TfrmMachRollMain_M.ToolButton1Click(Sender: TObject);
begin

  frmParamSet := TfrmParamSet.create(Self);
  with frmParamSet do
  begin
    cds_params.Data := Self.cds_params.Data;
    if ShowModal = 1 then
    begin
      Self.cds_params.Data := cds_params.Data;
      setFormCtrol();
    end;
    free;
  end;
  SetINIFile();
  if trim(fmanage) <> '高权限' then
  begin
    if (trim(MBDYDllName) <> '') and not fIsCommopen then
      OpenCom(MBDYDllName);

  end;
end;

procedure TfrmMachRollMain_M.ToolButton2Click(Sender: TObject);
var
  fPrintFile: string;
  Txt, fImagePath, Txt2, fImagePath2: string;
  Moudle: Thandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  with ADOQueryPrint do
  begin
    Close;
    SQL.Clear;
    SQL.Add(' EXEC P_BS_Cloth_Prt2 ');
    SQL.Add(' @Filtration=''' + trim(FCIID) + '''');
    Open;
  end;
  if ADOQueryPrint.IsEmpty then
  begin
    Application.MessageBox('标签内容未找到！', '提示信息', MB_ICONERROR);
    exit;
  end;

  ExportFtErpFile('库存标签.fr3', ADOQueryBaseTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\库存标签.fr3';
  if FileExists(fPrintFile) then
  begin

    frxReport1.LoadFromFile(fPrintFile);
    frxReport1.PrintOptions.Copies := cds_params.fieldbyName('labNumber').AsInteger;
    frxReport1.PrintOptions.ShowDialog := false;
    frxReport1.PrepareReport(True);
    frxReport1.Print();

  end
  else
  begin
    Application.MessageBox(PChar('没有找到' + fPrintFile), '提示', 0);
  end;
end;

procedure TfrmMachRollMain_M.ToolButton3Click(Sender: TObject);
begin
  if cds_3.IsEmpty then
    exit;
  PrtData(cds_3.fieldbyName('BCIOID').AsString);

end;

procedure TfrmMachRollMain_M.TrolldelClick(Sender: TObject);
var
  MBCIOID: string;
begin
  if cds_3.IsEmpty then
    exit;

  if Application.MessageBox('确定要删除选择的卷数据吗？', '提示', 32 + 4) <> IDYES then
    exit;

  ADOQueryBaseCmd.Connection.BeginTrans;
  try
    MBCIOID := trim(cds_3.fieldbyName('BCIOID').AsString);

    with ADOQueryBaseCmd do
    begin
      Close;
      SQL.Clear;
      Sql.Add('exec P_BS_Cloth_Out_Del ');
      Sql.Add(' @BCIOIDS=' + quotedstr(MBCIOID));
      Sql.Add(',@DCode=' + quotedstr(Trim(DCode)));
      Sql.Add(',@DName=' + quotedstr(Trim(DName)));
      Open;
    end;
    if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
    begin
      raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
    end;
    ADOQueryBaseCmd.Connection.CommitTrans;

    cds_3.Delete;
    Application.MessageBox('删除成功！', '提示信息');
  except
    ADOQueryBaseCmd.Connection.RollbackTrans;
    Application.MessageBox(pchar(Exception(ExceptObject).Message), '提示信息', 0);
  end;

end;

procedure TfrmMachRollMain_M.Tv3CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  if AViewInfo.GridRecord.Values[TcxGridDBTableView(Sender).GetColumnByFieldName('Grade').Index] = '次品' then
    ACanvas.Brush.Color := clRed;
end;

procedure TfrmMachRollMain_M.ToolButton8Click(Sender: TObject);
begin
  inherited;
  Close;
end;

procedure TfrmMachRollMain_M.setFocusCtrol(controlName: string);
var
  i: Integer;
begin
  with FrameKeyBoard1.dxPanel1 do
  begin
    for i := 0 to ControlCount - 1 do
    begin
      if Controls[i] is TSpeedButton then
      begin
        TSpeedButton(Controls[i]).Hint := trim(controlName);
        if (trim(controlName) = 'edtScan') and (TSpeedButton(Controls[i]).Name = 'SpeedButton_dot') then
        begin
          TSpeedButton(Controls[i]).Caption := '回车';
        end
        else if (TSpeedButton(Controls[i]).Name = 'SpeedButton_dot') then
        begin
          TSpeedButton(Controls[i]).Caption := '.';
        end;
      end;
    end;
  end;
  cxGroupBox_keys.Left := Panel_right.Left + 5;
  cxGroupBox_keys.Visible := true;
end;

procedure TfrmMachRollMain_M.SetDdetails();
begin
  AOrdDefNote1.Text := '';

  AOrdDefNote1.Text := AOrdDefNote1.Text + '卡号:' + FBCIOID + #13;

  if FRulePieceNo <> '' then
    AOrdDefNote1.Text := AOrdDefNote1.Text + '卷号规则:' + FRulePieceNo + #13;

  if gMachOperators <> '' then
    AOrdDefNote1.Text := AOrdDefNote1.Text + '机台人员:' + gMachOperators + #13;

end;

procedure TfrmMachRollMain_M.SetINIFile();
begin
  IsDZCDYDll := trim(cds_params.fieldbyName('chen').AsString);
  IsMBDYDll := trim(cds_params.fieldbyName('mabiao').AsString);
  IsMBDYDllUnit := trim(cds_params.fieldbyName('mbunit').AsString);

  LabQty := trim(cds_params.fieldbyName('labNumber').AsString);
  FMinLen := trim(cds_params.fieldbyName('minLen').AsString);
  FMaxLen := trim(cds_params.fieldbyName('maxLen').AsString);
  FMinWeight := trim(cds_params.fieldbyName('minweight').AsString);
  FMaxWeight := trim(cds_params.fieldbyName('maxweight').AsString);

  FMPlace := trim(cds_params.fieldbyName('mplace').AsString);
  FYPlace := trim(cds_params.fieldbyName('yplace').AsString);
  FKgPlace := trim(cds_params.fieldbyName('kgplace').AsString);

  WriteINIFile();

end;

procedure TfrmMachRollMain_M.setFormCtrol();
begin

  FrameKeyBoard1.SpeedButton_zdykey1.Caption := gZdyKey1;
  // FrameKeyBoard1.SpeedButton_zdykey2.Caption := gZdyKey2;
  FrameKeyBoard1.SpeedButton_zdykey2.Caption := gZdyKey2;

  //赠送
  presentlen.text := trim(cds_params.fieldbyName('AddLenPresent').AsString);
  presentWeight.text := trim(cds_params.fieldbyName('AddwetPresent').AsString);
end;

procedure TfrmMachRollMain_M.GetINIFile();
begin
  with cds_params do
  begin
    if IsEmpty then
      Append
    else
      edit;
    fieldbyName('chen').value := IsDZCDYDll;
    fieldbyName('mabiao').value := IsMBDYDll;
    fieldbyName('mbunit').value := IsMBDYDllUnit;

    fieldbyName('MinLen').value := strtointdef(FMinLen, 0);
    fieldbyName('MaxLen').value := strtointdef(FMaxLen, 100);
    fieldbyName('MinWeight').value := strtointdef(FMinWeight, 0);
    fieldbyName('MaxWeight').value := strtointdef(FMaxWeight, 50);

    fieldbyName('MPlace').value := strtointdef(FMPlace, 1);
    fieldbyName('YPlace').value := strtointdef(FYPlace, 1);
    fieldbyName('KgPlace').value := strtointdef(FKgPlace, 1);

    fieldbyName('labNumber').value := strtointdef(trim(LabQty), 1);
    Post;
  end;

end;

procedure TfrmMachRollMain_M.InitJYGrid();
var
  MNetWeight, MJYLen: double;
begin
  try
    cds_3.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      SQL.Clear;
      SQL.Add('select A.*');
      SQL.Add('from Bs_Cloth_IO A where IOType=''销售出库'' and CIID=''' + trim(FCIID) + ''''); //STKID=''' + trim(FBCIOID) + '''
      SQL.Add('order by filltime desc');
      Open;
    end;
    SCreateCDS(ADOQueryMain, cds_3);
    SInitCDSData(ADOQueryMain, cds_3);

  finally
    cds_3.EnableControls;
  end;

end;

procedure TfrmMachRollMain_M.OpenCom(DllName: string);
type
  TMyFunc = function(fhandle: hwnd; sCommName: PAnsiChar; IntTime: Integer; IsMessage: Integer): hwnd; stdcall;
var
  Tf: TMyFunc;
  Tp: TFarProc;
  Th: Thandle;
begin
  Th := LoadLibrary(pchar(trim(DllName)));
  if Th > 0 then
  begin
    try
      Tp := GetProcAddress(Th, 'CommOpen');
      if Tp <> nil then
      begin
        Tf := TMyFunc(Tp);
        newh := Tf(Self.Handle, 'Comm1', 500, 1);
        if newh < 1 then
        begin
          Application.MessageBox(pchar('打开串口失败！'), '提示');
        end
        else
          fIsCommopen := true;
      end
      else
      begin
        fIsCommopen := false;
      end;
    finally
      // FreeLibrary(Th);
    end;
  end
  else
  begin
    fIsCommopen := false;
    Application.MessageBox(pchar('找不到 ' + trim(DllName) + ' 文件！'), '提示');
  end;
end;

procedure TfrmMachRollMain_M.CloseCom(DllName: string);
type
  TMyFunc = function(sCommName: PAnsiChar): hwnd; stdcall;
var
  Tf1: TMyFunc;
  Tp1: TFarProc;
  Th1: Thandle;
begin
  Th1 := LoadLibrary(pchar(trim(DllName)));
  if Th1 > 0 then
  begin
    try
      Tp1 := GetProcAddress(Th1, 'CommClose');
      if Tp1 <> nil then
      begin
        Tf1 := TMyFunc(Tp1);
        newh1 := Tf1('Comm1');
      end
      else
      begin

      end;
    finally
      // FreeLibrary(Th1);
    end;
  end
  else
  begin
    Application.MessageBox(pchar('找不到 ' + trim(DllName) + ' 文件！'), '提示');
  end;
end;

procedure TfrmMachRollMain_M.dxLayoutControl_packDblClick(Sender: TObject);
begin
  if gIsCanDesign then
    layoutDesign(TdxLayoutControl(Sender), ADOQueryBaseCmd, PWideChar(dcode));
end;

procedure TfrmMachRollMain_M.dxLayoutItem1CaptionClick(Sender: TObject);
var
  mkey: Char;
begin
  inherited;
//  frmProductListHelp := TfrmProductListHelp.create(Self);
//  with frmProductListHelp do
//  begin
//    fType := '10';
//    if ShowModal = 1 then
//    begin
//      edtScan.Text := trim(order_main.fieldbyName('Subid').AsString);
//      mkey := #13;
//      edtScanKeyPress(edtScan, mkey);
//    end;
//    free;
//  end;

  frmTradeClothTotalOutSel := TfrmTradeClothTotalOutSel.create(Self);
  with frmTradeClothTotalOutSel do
  begin

    if ShowModal = 1 then
    begin
      edtScan.Text := trim(CDS_Main.fieldbyName('BCIOID').AsString);
    end;
    free;
  end;

  mkey := #13;
  edtScanKeyPress(edtScan, mkey);
end;

procedure TfrmMachRollMain_M.edtScanDblClick(Sender: TObject);
begin
  inherited;
  edtScan.Text := '';
end;

procedure TfrmMachRollMain_M.edtScanEnter(Sender: TObject);
begin
  inherited;
  setFocusCtrol(TWinControl(Sender).Name);
end;

procedure TfrmMachRollMain_M.edtScanKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Key = #13 then
  begin
    if trim(edtScan.Text) = '' then
      exit;
    if trim(edtScan.Text) = FBCIOID then
      exit;
    ClearGlobal();

    InitPlan(edtScan.Text);
    InitGrid2();
    if trim(OrderNo.Text) <> '' then
      InputLen.SetFocus;
    cxGroupBox_keys.Visible := false;
  end;
end;

function TfrmMachRollMain_M.SaveData(): Boolean;
var
  MInputLen, MMeter, MYardage: double;
  MInputWeight, MGrossWeight, MNetWeight, MTare, Maddwet, maddLen: double;
  mYardStick: double;
  mPresentLen, mpresentWeight: double;
  MTMSId: string;
begin
  Result := false;
  MTMSId := Trim(SelTVKey(Tv2, ['TMSId'])[0]);
  Maddwet := strTofloatDef(trim(addwet.text), 0); // Faddwet;
  maddLen := strTofloatDef(trim(addlen.text), 0); // faddlen;
  mYardStick := strtofloatdef(trim(RuleYardstick.Text), 100);
  mPresentLen := strTofloatDef(trim(presentlen.text), 0);
  mpresentWeight := strTofloatDef(trim(presentWeight.text), 0);
  if (strtoIntdef(Trim(unitPieces.Text), 0) > 0) and (strtoIntdef(trim(InputLen.Text), 0) > 0) then
  begin
    if strtoIntdef(trim(InputLen.Text), 0) > strtoIntdef(Trim(unitPieces.Text), 0) then
      funitPiecesStr := intTostr((strtoIntdef(trim(InputLen.Text), 0)) - strtoIntdef(Trim(unitPieces.Text), 0)) + '+' + Trim(unitPieces.Text);
  end;
  //0:不变；1：减去赠送
  if gPresentNumFlag = 1 then
  begin
    mPresentLen := -1 * mPresentLen;
    mpresentWeight := -1 * mpresentWeight;
  end;

  try
    ADOQueryBaseCmd.Connection.BeginTrans;
    MTare := strtofloatdef(trim(Tare.Text), 0); // 皮重
    MInputWeight := RoundFloat(strtofloatdef(trim(InputWeight.Text), 0), cds_params.fieldbyName('KgPlace').AsInteger); // 净重
    MGrossWeight := MInputWeight + MTare + Maddwet + mpresentWeight; // 毛重
    MNetWeight := MInputWeight + Maddwet + mpresentWeight; // 净重 +加重

    MInputLen := RoundFloat(strtofloatdef(trim(InputLen.Text), 0), 4);
      // 换算后数量+mAddLen
    if (uppercase(lblLenUnit.Caption) = 'M') or (lblLenUnit.Caption = '米') then
    begin
      MMeter := RoundFloat((MInputLen + maddLen + mPresentLen) / (mYardStick / 100), cds_params.fieldbyName('MPlace').AsInteger);
      MYardage := RoundFloat(MMeter / 0.9144, cds_params.fieldbyName('YPlace').AsInteger);
    end
    else
    begin
      MYardage := RoundFloat((MInputLen + maddLen + mPresentLen) / (mYardStick / 100), cds_params.fieldbyName('YPlace').AsInteger);
      MMeter := RoundFloat(MYardage * 0.9144, cds_params.fieldbyName('MPlace').AsInteger);
    end;

    with ADOQueryBaseCmd do
    begin
      Close;
      sql.Clear;
      Sql.Add('exec P_BS_Cloth_Out_Distribution_KC ');
      Sql.Add('  @GrossWeight=' + quotedstr(Trim(FloatToStr(MGrossWeight))));
      Sql.Add(' ,@Tare=' + quotedstr(Trim(FloatToStr(MTare))));
      Sql.Add(' ,@NetWeight=' + quotedstr(Trim(FloatToStr(MNetWeight))));
      Sql.Add(' ,@Meter=' + quotedstr(Trim(FloatToStr(MMeter))));
      Sql.Add(' ,@Yardage=' + quotedstr(Trim(FloatToStr(MYardage))));
      Sql.Add(' ,@QtyUnit=' + quotedstr(Trim(lblLenUnit.caption)));
      Sql.Add(' ,@StkID=' + quotedstr(Trim(FBCIOID)));
      Sql.Add(' ,@TMSId =' + quotedstr(FTMSId));
      Sql.Add(' ,@TMMId =' + quotedstr(FTMSId));
      Sql.Add(' ,@Dcode=' + quotedstr(Trim(Dcode)));
      Sql.Add(' ,@DName=' + quotedstr(Trim(DName)));
//      ShowMessage(sql.Text);
      open;
    end;

    if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
    begin
      raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
    end;

    FCIID := trim(trim(ADOQueryBaseCmd.fieldbyName('MaxIOID2').AsString));

    ADOQueryBaseCmd.Connection.CommitTrans;
    TradeMarketProgressUpdate(ADOQueryBaseCmd, MTMSId);
    Result := true;
  except
    ADOQueryBaseCmd.Connection.RollbackTrans;
    Application.MessageBox(pchar(Exception(ExceptObject).Message), '提示信息', 0);

  end;
end;

procedure TfrmMachRollMain_M.PrtData(MCIID: string; againPring: Boolean = false);
var
  fPrintFile: string;
  Txt, fImagePath, Txt2, fImagePath2: string;
  Moudle: Thandle;
  Makebar: TMakebar;
  Mixtext: TMixtext;
begin
  with ADOQueryPrint do
  begin
    Close;
    SQL.Clear;
    SQL.Add(' EXEC P_BS_Cloth_Prt2 ');
    SQL.Add(' @Filtration=''' + trim(MCIID) + '''');
    Open;
  end;
  if ADOQueryPrint.IsEmpty then
  begin
    Application.MessageBox('标签内容未找到！', '提示信息', MB_ICONERROR);
    exit;
  end;

//  if trim(ADOQueryPrint.fieldbyName('SLabVolume').AsString) <> '' then
//    fLabVolume := trim(ADOQueryPrint.fieldbyName('SLabVolume').AsString)
//  else
//    fLabVolume := trim(ADOQueryPrint.fieldbyName('LabVolume').AsString);

  if fLabVolume = '' then
  begin
    Application.MessageBox('订单还未设置标签！', '提示信息', MB_ICONERROR);
    exit;
  end;

  ExportFtErpFile(fLabVolume + '.fr3', ADOQueryBaseTemp);
  fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\' + fLabVolume + '.fr3';
  if FileExists(fPrintFile) then
  begin

    frxReport1.LoadFromFile(fPrintFile);
    frxReport1.PrintOptions.Copies := cds_params.fieldbyName('labNumber').AsInteger;
    frxReport1.PrintOptions.ShowDialog := false;
    frxReport1.PrepareReport(True);
    frxReport1.Print();

  end
  else
  begin
    Application.MessageBox(PChar('没有找到' + fPrintFile), '提示', 0);
  end;
end;

procedure TfrmMachRollMain_M.BadSpeedButtonClick(Sender: TObject);
begin

end;

procedure TfrmMachRollMain_M.On1301(var Message: Tmessage);
var
  i1, i2: Integer;
  unitname: string;
  fdata: double;
begin
  i1 := Message.WParam;
  i2 := Message.LParam;

  if (trim(cds_params.fieldbyName('mabiao').AsString) = '1') then
  begin
    InputLen.Text := format('%.2f', [i1 / 100000]);
    if trim(cds_params.fieldbyName('mbunit').AsString) = '1' then
    begin
      if i2 = 0 then
      begin
        SetUnit('M');
      end
      else
      begin
        SetUnit('Y');
      end;
    end;
  end;
end;

procedure TfrmMachRollMain_M.On1201(var Message: Tmessage);
var
  i1, i2: Integer;
  unitname: string;
  fdata: double;
begin
  i1 := Message.WParam;
  i2 := Message.LParam;

  if trim(cds_params.fieldbyName('chen').AsString) = '1' then
  begin
    InputWeight.Text := format('%.2f', [i1 / 100000]);
  end;

end;


/////////////////////////////////////
function TfrmMachRollMain_M.deletePack(packId: string): boolean;
var
  ccids: string;
  packNo: integer;
begin
  try
    ccids := '';
    packNo := strtointdef(Trim(cds_3.FieldByName('packetNo').AsString), 0);
    ADOQueryBaseCmd.Connection.BeginTrans;
    cds_3.First;
    while not cds_3.eof do
    begin
      if Trim(cds_3.FieldByName('packetid').AsString) = packId then
      begin
        ccids := ccids + ',' + Trim(cds_3.FieldByName('CIID').AsString);
      end;
      with ADOQueryBaseCmd do
      begin
        Close;
        SQL.Clear;
        SQL.Add('insert into Trade_Need_Up(UType,UOperation,UDataId,uoperator) values(''检验'',''检验删除'',' + QuotedStr(Trim(cds_3.FieldByName('CIID').AsString)) + ',' + QuotedStr(DName) + ')  ');
        ExecSQL;
      end;
      cds_3.Next;
    end;

    with ADOQueryBaseCmd do
    begin
      Close;
      SQL.Clear;
      SQL.Add('exec P_Trade_Insp_Del ');
      SQL.Add('@CIIDS=' + QuotedStr(ccids));
      SQL.Add(',@DCode=' + QuotedStr(DCode));
      SQL.Add(',@DName=' + QuotedStr(DName));
      Open;
    end;
    if ADOQueryBaseCmd.fieldbyName('intReturn').AsInteger = -1 then
    begin
      raise Exception.create(pchar(trim(ADOQueryBaseCmd.fieldbyName('ShowMsg').AsString)));
    end;
    ADOQueryBaseCmd.Connection.CommitTrans;

    InitJYGrid();
    Application.MessageBox('删除成功！', '提示信息');
  except
    ADOQueryBaseCmd.Connection.RollbackTrans;
    Application.MessageBox(pchar(Exception(ExceptObject).Message), '提示信息', 0);
  end;
end;

end.

