unit U_SFProduceCaseInputNew;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
  cxDataStorage, cxEdit, DB, cxDBData, DBClient, ADODB, cxGridLevel,
  cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
  cxControls, cxGridCustomView, cxGrid, StdCtrls, ComCtrls, ToolWin,
  ExtCtrls, cxDropDownEdit, cxButtonEdit, cxTimeEdit, cxCalendar,
  cxGridCustomPopupMenu, cxGridPopupMenu, BtnEdit;

type
  TfrmSFProduceCaseInputNew = class(TForm)
    ToolBar1: TToolBar;
    TBSave: TToolButton;
    TBClose: TToolButton;
    Label8: TLabel;
    TBAdd: TToolButton;
    TBDel: TToolButton;
    ADOQueryTemp: TADOQuery;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    DataSource1: TDataSource;
    CDS_Sub: TClientDataSet;
    cxGridPopupMenu1: TcxGridPopupMenu;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ADOQueryTemp10: TADOQuery;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1P_SeqNo: TcxGridDBColumn;
    v1ProduceBegTime: TcxGridDBColumn;
    v1ProduceEndTime: TcxGridDBColumn;
    v1Column2: TcxGridDBColumn;
    v1Note: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    Panel1: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    DeviceNo: TBtnEditA;
    GroupNo: TBtnEditA;
    P_BCode: TBtnEditA;
    P_JCode: TBtnEditA;
    PlanNO: TEdit;
    P_Color: TComboBox;
    Model: TEdit;
    Label9: TLabel;
    Label7: TLabel;
    P_JColor: TComboBox;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    Tv2Column1: TcxGridDBColumn;
    CDS_JB: TClientDataSet;
    DataSource2: TDataSource;
    ADOQueryJB: TADOQuery;
    Panel2: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    cxGridPopupMenu2: TcxGridPopupMenu;
    procedure TBAddClick(Sender: TObject);
    procedure TBDelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure TBSaveClick(Sender: TObject);
    procedure v1DeviceNoPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1GroupNoPropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1SupplierNamePropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1P_BaseChnNamePropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure v1LbStr6PropertiesButtonClick(Sender: TObject;
      AButtonIndex: Integer);
    procedure ToolButton2Click(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure DeviceNoBtnClick(Sender: TObject);
    procedure GroupNoBtnClick(Sender: TObject);
    procedure P_BCodeBtnClick(Sender: TObject);
    procedure P_JCodeBtnClick(Sender: TObject);
    procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView;
      APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
      ANewItemRecordFocusingChanged: Boolean);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Tv1CellClick(Sender: TcxCustomGridTableView;
      ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
      AShift: TShiftState; var AHandled: Boolean);
  private
    procedure  InitGrid();
    function   SaveData():Boolean;
    function   SaveDataSF():Boolean;
    procedure  InitJBGrid();
    { Private declarations }
  public
    PState:Integer;
    FPlanNo,FP_SeqNo,FADID,FADType:String;

    { Public declarations }
  end;

var
  frmSFProduceCaseInputNew: TfrmSFProduceCaseInputNew;

implementation
uses
  U_adodbmd,U_SelfForm,U_global,U_FormPas
  ,U_CxGridSet,U_ItemManageNew,U_SupplyHelp,U_PbProductHelp10;

{$R *.dfm}

procedure TfrmSFProduceCaseInputNew.TBAddClick(Sender: TObject);
begin
  with CDS_Sub do
  begin
    Append;
    CDS_Sub.FieldByName('SFlag').Value:='2';
    Post;
  end;
end;

procedure TfrmSFProduceCaseInputNew.TBDelClick(Sender: TObject);
begin
  if CDS_Sub.IsEmpty then Exit;
  if Trim(CDS_Sub.FieldByName('SFlag').AsString)='2' then
    CDS_Sub.Delete
  else begin
    Application.MessageBox('�������ݲ����ڴ�ɾ����','��ʾ',0);
  end;
end;

procedure TfrmSFProduceCaseInputNew.InitGrid();
begin
  try
    ADOQueryMain.DisableControls;
    with ADOQueryMain do
    begin
      Close;
      SQL.Clear;
      SQL.Add('exec P_Qry_SFCase :begdate,:enddate,:Pstate,:ADID');
      Parameters.ParamByName('Pstate').Value:=2;
      Parameters.ParamByName('ADID').Value:=Trim(FADID);
      Open;
    end;
    SCreateCDS20(ADOQueryMain,CDS_Sub);
    SInitCDSData20(ADOQueryMain,CDS_Sub);
  finally
    ADOQueryMain.EnableControls;
  end;
end;

procedure TfrmSFProduceCaseInputNew.FormShow(Sender: TObject);
var
  fsj:String;
begin
  ReadCxGrid('ʪ��Ϳ����¼��1',Tv1,'��������');
  ReadCxGrid('ʪ��Ϳ������������¼��1',Tv2,'��������');
  fsj:='select distinct(defStr3) name, '''' Code from WC_ClothInout_Info where DepotNo like ''B%''';
  //SInitCxGridComboBoxBySql(ADOQueryTemp,v1P_Clolor,fsj,0,True,'δ�ҵ���ɫ��');
  InitComBoxBySql(ADOQueryTemp,P_Color,fsj,0,'δ�ҵ���ɫ��',True);
  fsj:='select distinct(P_Color) name, '''' Code from WC_ClothInout_Info where DepotNo like ''P%''';
  //SInitCxGridComboBoxBySql(ADOQueryTemp,v1P_Clolor,fsj,0,True,'δ�ҵ���ɫ��');
  InitComBoxBySql(ADOQueryTemp,P_JColor,fsj,0,'δ�ҵ���ɫ��',True);
  InitGrid();
  SSetWinData30(ADOQueryMain,Panel1,1);
  InitJBGrid();
end;

procedure TfrmSFProduceCaseInputNew.TBCloseClick(Sender: TObject);
begin
  Close;
  WriteCxGrid('ʪ��Ϳ����¼��1',Tv1,'��������');
  WriteCxGrid('ʪ��Ϳ������������¼��1',Tv2,'��������');
end;

function TfrmSFProduceCaseInputNew.SaveData():Boolean;
Var
  MaxNo:string;
begin
  try
    Result:=False;
    ADOQueryCmd.Connection.BeginTrans;
    with CDS_Sub do
    begin
      CDS_Sub.First;
      while not CDS_Sub.Eof do
      begin
        if Trim(CDS_Sub.fieldbyname('PlanNo').AsString)='' then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('���Ų���Ϊ��!','��ʾ',0);
          Exit;
        end;
        if Trim(CDS_Sub.fieldbyname('GroupNo').AsString)='' then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('�����Ϊ��!','��ʾ',0);
          Exit;
        end;
        if Trim(CDS_Sub.fieldbyname('Quantity1').AsString)='' then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('��������Ϊ��!','��ʾ',0);
          Exit;
        end;
        if Trim(CDS_Sub.fieldbyname('JBNo').AsString)='' then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('�������Ų���Ϊ��!','��ʾ',0);
          Exit;
        end;
        if Trim(CDS_Sub.fieldbyname('SubId').AsString)='' then
        begin
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('��Ų���Ϊ��!','��ʾ',0);
          Exit;
        end;
        if Trim(CDS_Sub.fieldbyname('SFlag').AsString)='2' then
        begin
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('Select * from AD_SFProduce_Sub where PlanNo='''+Trim(CDS_Sub.fieldbyname('PlanNo').AsString)+'''');
            sql.Add('and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
            Open;
          end;
          if ADOQueryCmd.RecordCount>0 then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            Application.MessageBox('�����ظ��Ǽǣ�','��ʾ',0);
            Exit;
          end;
        end;

        if Trim(CDS_Sub.fieldbyname('SFlag').AsString)<>'2' then
        begin
          MaxNo:=Trim(FADID);
        end else
        begin
          if GetMaxNo20(ADOQueryCmd,MaxNo,'AD_PlanProduce_Case','SF',1,3)=False then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            Application.MessageBox('ȡ�����쳣��','��ʾ',0);
            Exit;
          end;
        end;
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from AD_PlanProduce_Case where ADID='''+Trim(FADID)+'''');
          Open;
        end;
        with ADOQueryCmd do
        begin
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)<>'2' then
            Edit
          else
            Append;
          FieldByName('ADID').Value:=Trim(MaxNo);
          SSetSaveDataCDS(ADOQueryCmd,Tv1,CDS_Sub,'AD_PlanProduce_Case',1);
          FieldByName('P_SeqNo').Value:=Trim(CDS_Sub.fieldbyname('P_SeqNo').AsString);
          FieldByName('P_JCode').Value:=Trim(CDS_Sub.fieldbyname('P_JCode').AsString);
          FieldByName('P_Factory').Value:=Trim(CDS_Sub.fieldbyname('P_Factory').AsString);
          FieldByName('AdType').Value:='ʪ��';
          if Trim(CDS_Sub.fieldbyname('ProduceEndTime').AsString)='' then
          begin
            FieldByName('ProduceEndTime').Value:=GetServerTime10(ADOQueryTemp);
          end;
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)='2' then
          begin
            FieldByName('Filler').Value:=Trim(gUserName);
            FieldByName('FillTime').Value:=SGetServerDateTime(ADOQueryTemp);
          end else
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)<>'2' then
          begin
            FieldByName('Editer').Value:=Trim(gUserName);
            FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp);
          end;
          Post;
        end;
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from AD_EndProduct_Case where ADID='''+Trim(FADID)+'''');
          Open;
        end;
        with ADOQueryCmd do
        begin
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)<>'2' then
            Edit
          else
            Append;
          FieldByName('ADID').Value:=Trim(MaxNo);
          SSetSaveDataCDS(ADOQueryCmd,Tv1,CDS_Sub,'AD_EndProduct_Case',2);
          FieldByName('PlanNo').Value:=Trim(CDS_Sub.fieldbyname('PlanNo').AsString);
          FieldByName('P_SeqNo').Value:=Trim(CDS_Sub.fieldbyname('P_SeqNo').AsString);
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)='2' then
          begin
            FieldByName('Filler').Value:=Trim(gUserName);
            FieldByName('FillTime').Value:=SGetServerDateTime(ADOQueryTemp);
          end else
          if Trim(CDS_Sub.fieldbyname('SFlag').AsString)<>'2' then
          begin
            FieldByName('Editer').Value:=Trim(gUserName);
            FieldByName('EditTime').Value:=SGetServerDateTime(ADOQueryTemp);
          end;
          Post;
        end;
        CDS_Sub.Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    Result:=True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=False;
    Application.MessageBox('�����쳣��','��ʾ',0);
  end;
end;

function TfrmSFProduceCaseInputNew.SaveDataSF():Boolean;
Var
  MaxNo:string;
begin
  try
    Result:=False;
    ADOQueryCmd.Connection.BeginTrans;
    if PState=0 then
    begin
      with ADOQueryTemp10 do
      begin
        Close;
        sql.Clear;
        SQL.Add(' select * from AD_SFProduce_Main where PlanNo='''+Trim(PlanNO.Text)+'''');
        sql.Add(' and GroupNo='''+Trim(GroupNo.Text)+'''');
        Open;
        if not IsEmpty then
        begin
          //MaxNo:=Trim(fieldbyname('ADID').AsString);
          ADOQueryCmd.Connection.RollbackTrans;
          Application.MessageBox('�˰�������ŵļ�¼�Ѿ�������׷�Ӽ�¼��','��ʾ',0);
          Exit;
        end else
        begin
          if GetMaxNo20(ADOQueryTemp,MaxNo,'AD_SFProduce_Main','SF',1,4)=False then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            Application.MessageBox('ȡ����ʧ��!','��ʾ',0);
            Exit;
          end;
          //����������Ϣ
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            SQL.Add('select * from AD_SFProduce_Main where 1<>1');
            Open;
          end;
          with ADOQueryCmd do
          begin
            Append;
            FieldByName('ADID').Value:=Trim(MaxNo);
            SSetsavedataNew(ADOQueryCmd,'AD_SFProduce_Main',Panel1,1);
            //SSetSaveDataCDSNew(ADOQueryCmd,Tv1,CDS_Sub,'AD_SFProduce_Main',1);
            FieldByName('ProduceDate').Value:=FormatDateTime('yyyy-MM-dd',CDS_Sub.fieldbyname('BegTime').AsDateTime);
            FieldByName('Filler').Value:=Trim(gUserName);
            Post;
          end;

        end;
      end;
      //�����ӱ���Ϣ
      with CDS_Sub do
      begin
        First;
        while not Eof do
        begin
          with ADOQueryCmd do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from AD_SFProduce_Sub where ADID='''+Trim(MaxNo)+'''');
            sql.Add(' and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
            Open;
            if not IsEmpty then
            begin
              ADOQueryCmd.Connection.RollbackTrans;
              Application.MessageBox('�����ظ��Ǽǣ�','��ʾ',0);
              Exit;
            end;
          end;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('select * from AD_SFProduce_Sub where 1<>1');
            Open;
          end;
          with ADOQueryCmd do
          begin
            Append;
            FieldByName('ADID').Value:=Trim(MaxNo);
            SSetSaveDataCDSNew(ADOQueryCmd,Tv1,CDS_Sub,'AD_SFProduce_Sub',2);
            FieldByName('Filler').Value:=Trim(gUserName);
            Post;
          end;
          CDS_Sub.Next;
        end;
      end;
      FADID:=Trim(MaxNo);
    end;
    if PState=1 then
    begin
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('delete  AD_SFProduce_Sub where ADID='''+Trim(FADID)+'''');
        ExecSQL;
      end;
      with CDS_Sub do
      begin
        First;
        while not eof do
        begin
          with ADOQueryCmd do
          begin
            Close;
            SQL.Clear;
            SQL.Add('select * from AD_SFProduce_Sub where ADID='''+Trim(FADID)+'''');
            sql.Add(' and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
            Open;
            if not IsEmpty then
            begin
              ADOQueryCmd.Connection.RollbackTrans;
              Application.MessageBox('����ظ���','��ʾ',0);
              Exit;
            end;
          end;
          with ADOQueryCmd do
          begin
            Close;
            sql.Clear;
            sql.Add('select * from AD_SFProduce_Sub where 1<>1');
            Open;
          end;
          with ADOQueryCmd do
          begin
            Append;
            FieldByName('ADID').Value:=Trim(FADID);
            SSetSaveDataCDSNew(ADOQueryCmd,Tv1,CDS_Sub,'AD_SFProduce_Sub',2);
            FieldByName('Filler').Value:=Trim(gUserName);
            Post;
          end;
          CDS_Sub.Next;
        end;
      end;
      CDS_Sub.First;
      with ADOQueryCmd do
      begin
        Close;
        sql.Clear;
        sql.Add('select * from AD_SFProduce_Main where ADID='''+Trim(FADID)+'''');
        Open;
      end;
      with ADOQueryCmd do
      begin
        Edit;
        SSetsavedataNew(ADOQueryCmd,'AD_SFProduce_Main',Panel1,1);
        Post;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
    with ADOQueryCmd do
    begin
      Close;
      SQL.Clear;
      SQL.Add(' Update AD_SFProduce_Sub Set RunHours=datediff(mi,BegTime,EndTime)*1.00/60');
      sql.Add(' where ADID='''+Trim(FADID)+'''');
      SQL.Add(' and Quantity1>0');
      SQL.Add(' Update AD_SFProduce_Sub Set WaitHours=datediff(mi,BegTime,EndTime)*1.00/60');
      sql.Add(' where ADID='''+Trim(FADID)+'''');
      SQL.Add(' and Quantity1=0');
      ExecSQL;
    end;
    Result:=True;
  except
    ADOQueryCmd.Connection.RollbackTrans;
    Result:=False;
    Application.MessageBox('�����쳣��','��ʾ',0);
  end;
end;

procedure TfrmSFProduceCaseInputNew.TBSaveClick(Sender: TObject);
begin
  if CDS_Sub.IsEmpty then Exit;
  if Trim(PlanNO.Text)='' then
  begin
    Application.MessageBox('���Ų���Ϊ��!','��ʾ',0);
    Exit;
  end;
  if Trim(GroupNo.Text)='' then
  begin
    Application.MessageBox('�����Ϊ��!','��ʾ',0);
    Exit;
  end;
  if CDS_Sub.Locate('Quantity1',Null,[])=True then
  begin
    Application.MessageBox('��������Ϊ��!','��ʾ',0);
    Exit;
  end;
  if CDS_Sub.Locate('SubId',Null,[])=True then
  begin
    Application.MessageBox('��Ų���Ϊ��!','��ʾ',0);
    Exit;
  end;
  if SaveDataSF() then
  begin
    Application.MessageBox('����ɹ���','��ʾ',0);
    Close;
    ModalResult:=1;
  end;
end;

procedure TfrmSFProduceCaseInputNew.v1DeviceNoPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmItemManageNew:=TfrmItemManageNew.Create(Application);
    with frmItemManageNew do
    begin
      flag:='DeviceNo';
      flagname:='��̨';
      if ShowModal=1 then
      begin
        Self.CDS_Sub.Edit;
        Self.CDS_Sub.FieldByName('DeviceNo').Value:=ClientDataSet1.fieldbyname('Name').AsString;
      end;
    end;
  finally
    frmItemManageNew.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.v1GroupNoPropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmItemManageNew:=TfrmItemManageNew.Create(Application);
    with frmItemManageNew do
    begin
      flag:='GroupNo';
      flagname:='���';
      if ShowModal=1 then
      begin
        Self.CDS_Sub.Edit;
        Self.CDS_Sub.FieldByName('GroupNo').Value:=ClientDataSet1.fieldbyname('Name').AsString;
      end;
    end;
  finally
    frmItemManageNew.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.v1SupplierNamePropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmSupplyHelp:=TfrmSupplyHelp.Create(Application);
    with frmSupplyHelp do
    begin
      FLType:='����';
      if ShowModal=1 then
      begin
        CDS_Sub.Edit;
        CDS_Sub.FieldByName('P_Factory').Value:=Trim(ADOQueryHelp.fieldbyname('CustomNo').AsString);
        CDS_Sub.FieldByName('ShortName').Value:=Trim(ADOQueryHelp.fieldbyname('ShortName').AsString);
      end;
    end;
  finally
    frmSupplyHelp.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.v1P_BaseChnNamePropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmPbProductHelp10:=TfrmPbProductHelp10.Create(Application);
    with frmPbProductHelp10 do
    begin
      if ShowModal=1 then
      begin
        CDS_Sub.Edit;
        CDS_Sub.FieldByName('P_JCode').Value:=Trim(ADOQueryHelp.fieldbyname('P_Code').AsString);
        CDS_Sub.FieldByName('P_JName').Value:=Trim(ADOQueryHelp.fieldbyname('P_ChnName').AsString);
      end;
    end;
  finally
    frmPbProductHelp10.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.v1LbStr6PropertiesButtonClick(
  Sender: TObject; AButtonIndex: Integer);
begin
  try
    frmPbProductHelp10:=TfrmPbProductHelp10.Create(Application);
    with frmPbProductHelp10 do
    begin
      if ShowModal=1 then
      begin
        CDS_Sub.Edit;
        CDS_Sub.FieldByName('P_BCode').Value:=Trim(ADOQueryHelp.fieldbyname('P_Code').AsString);
        CDS_Sub.FieldByName('P_BName').Value:=Trim(ADOQueryHelp.fieldbyname('P_ChnName').AsString);
      end;
    end;
  finally
    frmPbProductHelp10.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.ToolButton2Click(Sender: TObject);
begin
  if CDS_Sub.IsEmpty then Exit;
  OneKeyPost(Tv1,CDS_Sub);
end;

procedure TfrmSFProduceCaseInputNew.ToolButton1Click(Sender: TObject);
begin
  CopyAddRowCDS(CDS_Sub);
  CDS_Sub.Edit;
  CDS_Sub.FieldByName('SFlag').Value:='2';
  CDS_Sub.Post;
end;

procedure TfrmSFProduceCaseInputNew.DeviceNoBtnClick(Sender: TObject);
begin
  try
    frmItemManageNew:=TfrmItemManageNew.Create(Application);
    with frmItemManageNew do
    begin
      flag:='DeviceNo';
      flagname:='��̨';
      if ShowModal=1 then
      begin
        Self.DeviceNo.Text:=ClientDataSet1.fieldbyname('Name').AsString;
        Self.DeviceNo.TxtCode:=ClientDataSet1.fieldbyname('Name').AsString;
      end;
    end;
  finally
    frmItemManageNew.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.GroupNoBtnClick(Sender: TObject);
begin
  try
    frmItemManageNew:=TfrmItemManageNew.Create(Application);
    with frmItemManageNew do
    begin
      flag:='GroupNo';
      flagname:='���';
      if ShowModal=1 then
      begin
        Self.GroupNo.Text:=ClientDataSet1.fieldbyname('Name').AsString;
        Self.GroupNo.TxtCode:=ClientDataSet1.fieldbyname('Name').AsString;
      end;
    end;
  finally
    frmItemManageNew.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.P_BCodeBtnClick(Sender: TObject);
begin
  try
    frmPbProductHelp10:=TfrmPbProductHelp10.Create(Application);
    with frmPbProductHelp10 do
    begin
      if ShowModal=1 then
      begin
        Self.P_BCode.TxtCode:=Trim(ADOQueryHelp.fieldbyname('P_Code').AsString);
        Self.P_BCode.Text:=Trim(ADOQueryHelp.fieldbyname('P_ChnName').AsString);
      end;
    end;
  finally
    frmPbProductHelp10.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.P_JCodeBtnClick(Sender: TObject);
begin
  try
    frmPbProductHelp10:=TfrmPbProductHelp10.Create(Application);
    with frmPbProductHelp10 do
    begin
      if ShowModal=1 then
      begin
        Self.P_JCode.TxtCode:=Trim(ADOQueryHelp.fieldbyname('P_Code').AsString);
        Self.P_JCode.Text:=Trim(ADOQueryHelp.fieldbyname('P_ChnName').AsString);
      end;
    end;
  finally
    frmPbProductHelp10.Free;
  end;
end;

procedure TfrmSFProduceCaseInputNew.Tv1FocusedRecordChanged(
  Sender: TcxCustomGridTableView; APrevFocusedRecord,
  AFocusedRecord: TcxCustomGridRecord;
  ANewItemRecordFocusingChanged: Boolean);
begin
  try
    ADOQueryJB.DisableControls;
    with ADOQueryJB do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from AD_SFProduce_JBNO where PlanNO='''+Trim(PlanNO.Text)+'''');
      SQL.Add(' and subId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
      Open;
    end;
    CreateCDS20(ADOQueryJB,CDS_JB);
    InitCDSData20(ADOQueryJB,CDS_JB);
  finally
    ADOQueryJB.EnableControls;
  end;
end;

procedure TfrmSFProduceCaseInputNew.Button1Click(Sender: TObject);
begin
  if CDS_Sub.IsEmpty then Exit;
  with CDS_JB do
  begin
    Append;
    Post;
  end;
end;

procedure TfrmSFProduceCaseInputNew.Button2Click(Sender: TObject);
begin
  if CDS_Sub.IsEmpty then Exit;
  if CDS_JB.IsEmpty then Exit;
  if Trim(CDS_JB.fieldbyname('PlanNo').AsString)<>'' then
  begin
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete AD_SFProduce_JBNO where PlanNo='''+Trim(PlanNO.Text)+'''');
      sql.Add(' and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
      sql.Add(' and JBNO='''+Trim(CDS_JB.fieldbyname('JBNO').AsString)+'''');
      ExecSQL;
    end;
  end;
  CDS_JB.Delete;
  

end;

procedure TfrmSFProduceCaseInputNew.Button3Click(Sender: TObject);
var
  MaxNo:String;
begin
  if CDS_JB.IsEmpty then Exit;
  if Trim(PlanNO.Text)='' then
  begin
    Application.MessageBox('�������Ų���Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  if Trim(CDS_Sub.fieldbyname('SubId').AsString)='' then
  begin
    Application.MessageBox('��Ų���Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  if CDS_JB.Locate('JBNO',null,[])=True then
  begin
    Application.MessageBox('�������Ų���Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  if CDS_JB.Locate('JBQuantity',null,[])=True then
  begin
    Application.MessageBox('��������������Ϊ�գ�','��ʾ',0);
    Exit;
  end;
  try
    ADOQueryCmd.Connection.BeginTrans;
    with ADOQueryCmd do
    begin
      Close;
      sql.Clear;
      sql.Add('delete AD_SFProduce_JBNO where PlanNo='''+Trim(PlanNO.Text)+'''');
      sql.Add(' and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
      ExecSQL;
    end;
    with CDS_JB do
    begin
      First;
      while not Eof do
      begin
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from AD_SFProduce_JBNO where PlanNo='''+Trim(PlanNO.Text)+'''');
          sql.Add(' and SubId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
          sql.Add(' and JBNO='''+Trim(CDS_JB.fieldbyname('JBNO').AsString)+'''');
          Open;
          if not IsEmpty then
          begin
            ADOQueryCmd.Connection.RollbackTrans;
            Application.MessageBox('���������ظ���','��ʾ',0);
            Exit;
          end;
        end;
        with ADOQueryCmd do
        begin
          Close;
          sql.Clear;
          sql.Add('select * from AD_SFProduce_JBNO where 1<>1');
          Open;
        end;
        with ADOQueryCmd do
        begin
          Append;
          FieldByName('PlanNo').Value:=Trim(PlanNO.Text);
          FieldByName('SubId').Value:=Trim(CDS_Sub.fieldbyname('SubId').AsString);
          SSetSaveDataCDSNew(ADOQueryCmd,Tv2,CDS_JB,'AD_SFProduce_JBNO',2);
          Post;
        end;
        CDS_JB.Next;
      end;
    end;
    ADOQueryCmd.Connection.CommitTrans;
  except
    ADOQueryCmd.Connection.RollbackTrans;
  end;

end;

procedure TfrmSFProduceCaseInputNew.Tv1CellClick(
  Sender: TcxCustomGridTableView;
  ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
  AShift: TShiftState; var AHandled: Boolean);
begin
  InitJBGrid();
end;

procedure TfrmSFProduceCaseInputNew.InitJBGrid();
begin
  try
    ADOQueryJB.DisableControls;
    with ADOQueryJB do
    begin
      Close;
      sql.Clear;
      sql.Add('select * from AD_SFProduce_JBNO where PlanNO='''+Trim(PlanNO.Text)+'''');
      SQL.Add(' and subId='''+Trim(CDS_Sub.fieldbyname('SubId').AsString)+'''');
      Open;
    end;
    CreateCDS20(ADOQueryJB,CDS_JB);
    InitCDSData20(ADOQueryJB,CDS_JB);
  finally
    ADOQueryJB.EnableControls;
  end;
end;

end.