ACRDCD

来源:互联网 发布:java实现excel导出 编辑:程序博客网 时间:2024/06/12 20:34

unit ACRDCD;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, rootg, DB, ADODB, frxClass, frxDBSet, ImgList, ComCtrls,
  Buttons, Wwdbigrd, Grids, Wwdbgrid, StdCtrls, Mask, wwdbedit, ExtCtrls,
  ToolWin, wwdbdatetimepicker, Wwdotdot, Wwdbcomb, DBCtrls, frxExportXLS,
  Menus, cxControls, cxContainer, cxEdit, cxProgressBar;

type
  TfrmACRDCD = class(Tfrmrootg)
    Label1: TLabel;
    Label2: TLabel;
    wwDBEdit2: TwwDBEdit;
    Label4: TLabel;
    wwDBEdit3: TwwDBEdit;
    SpeedButton1: TSpeedButton;
    Label8: TLabel;
    wwDBEdit5: TwwDBEdit;
    wwDBEdit6: TwwDBEdit;
    Label9: TLabel;
    Label3: TLabel;
    wwDBDateTimePicker3: TwwDBDateTimePicker;
    DBText1: TDBText;
    Label5: TLabel;
    wwDBEdit4: TwwDBEdit;
    QryMasterRDC01: TWideStringField;
    QryMasterRDC02: TWideStringField;
    QryMasterRDC03: TDateTimeField;
    QryMasterRDC04: TWideStringField;
    QryMasterRDC05: TWideStringField;
    QryMasterRDC06: TFloatField;
    QryMasterRDC07: TWideStringField;
    QryMasterRDC08: TWideStringField;
    QryMasterRDC09: TWideStringField;
    QryMasterRDC10: TFloatField;
    QryMasterRDC11: TFloatField;
    QryDetailRDD01: TWideStringField;
    QryDetailRDD02: TWideStringField;
    QryDetailRDD03: TWideStringField;
    QryDetailRDD04: TWideStringField;
    QryDetailRDD05: TWideStringField;
    QryDetailRDD06: TWideStringField;
    QryDetailRDD07: TWideStringField;
    QryDetailRDD08: TWideStringField;
    QryDetailRDD09: TWideStringField;
    QryDetailRDD10: TWideStringField;
    QryDetailRDD11: TFloatField;
    QryDetailRDD12: TFloatField;
    QryDetailRDD13: TWideStringField;
    QryDetailRDD14: TFloatField;
    QryDetailRDD15: TFloatField;
    Label6: TLabel;
    wwDBEdit7: TwwDBEdit;
    Label7: TLabel;
    wwDBEdit8: TwwDBEdit;
    Label10: TLabel;
    wwDBEdit9: TwwDBEdit;
    SpeedButton2: TSpeedButton;
    Label11: TLabel;
    wwDBEdit10: TwwDBEdit;
    QryMasterWCXJE: TFloatField;
    cmdGet: TSpeedButton;
    QryACRDB: TADOQuery;
    QryGet: TADOQuery;
    QryDetailRDD18: TDateTimeField;
    QryDetailRDD19: TWideStringField;
    QryDetailRDD20: TWideStringField;
    QryDetailRDD21: TWideStringField;
    QryDetailWSJE: TFloatField;
    wwDBCBRDD03: TwwDBComboBox;
    wwDBCDRDD04: TwwDBComboDlg;
    PopupMenu1: TPopupMenu;
    A41: TMenuItem;
    N1: TMenuItem;
    QryDetailRDD22: TWideStringField;
    QryDetailRDD23: TWideStringField;
    QryDetailRDD24: TFloatField;
    QryDetailRDD25: TWideStringField;
    QryDetailRDD26: TWideStringField;
    cxProgressBar1: TcxProgressBar;
    QryDetailRDD27: TFloatField;
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure addClick(Sender: TObject);
    procedure btnRefresh; override;
    procedure QryDetailAfterInsert(DataSet: TDataSet);
    procedure QryDetailAfterDelete(DataSet: TDataSet);
    procedure QryDetailCalcFields(DataSet: TDataSet);
    procedure saveClick(Sender: TObject);
    procedure QryDetailRDD03GetText(Sender: TField; var Text: String;
      DisplayText: Boolean);
    procedure SpeedButton2Click(Sender: TObject);
    procedure wwDBEdit7Exit(Sender: TObject);
    procedure conformClick(Sender: TObject);
    procedure wwDBGrid2CalcCellColors(Sender: TObject; Field: TField;
      State: TGridDrawState; Highlight: Boolean; AFont: TFont;
      ABrush: TBrush);
    procedure QryMasterCalcFields(DataSet: TDataSet);
    procedure cmdGetClick(Sender: TObject);
    procedure printClick(Sender: TObject);
    procedure A41Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure wwDBCDRDD04CustomDlg(Sender: TObject);
    procedure wwDBCDRDD04KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmACRDCD: TfrmACRDCD;

implementation

uses dbhelp, cGlobal, ACRDABGET, ACRAABHELP, ACRBABHELP, ACRECDHELP,
  ACRJABHELP, ACRACDHELP, ACRAEFHELP;

{$R *.dfm}

procedure TfrmACRDCD.FormDestroy(Sender: TObject);
begin
  inherited;
  frmACRDCD:=nil;
           
end;

procedure TfrmACRDCD.FormCreate(Sender: TObject);
begin
  FrmName := 'ACRDCD';
  FrmHDB := 'ACRDC';
  FrmGDB := 'ACRDD';
  FrmHID := 'RDC01';
  FrmGID1 := 'RDD01';
  FrmGID2 := 'RDD02';
  inherited;

end;

procedure TfrmACRDCD.addClick(Sender: TObject);
begin  
  inherited;
  QryMaster.FieldByName('RDC02').AsString :=dllUserName;
  QryMaster.FieldByName('RDC03').AsDateTime :=Date();
   
end;

procedure TfrmACRDCD.btnRefresh;
begin
  inherited;
  wwDBEdit3.ReadOnly :=True;
  SpeedButton1.Enabled :=False;
  wwDBEdit5.ReadOnly :=True;
  wwDBEdit6.ReadOnly :=True;
  wwDBEdit8.ReadOnly :=True;
  wwDBEdit9.ReadOnly :=True;
  wwDBEdit10.ReadOnly :=True;
  wwDBCBRDD03.ReadOnly :=True;   
end;

procedure TfrmACRDCD.QryDetailAfterInsert(DataSet: TDataSet);
begin
  if Trim(QryMaster.FieldByName(FrmHID).AsString)<>'' then
  begin
    QryDetail.Edit;
    QryDetail.FieldByName(FrmGID1).AsString:=QryMaster.FieldByName(FrmHID).AsString;
    QryDetail.FieldByName(FrmGID2).AsString:=FormatFloat('0000',QryDetail.RecordCount+1);
  end;
       
end;

procedure TfrmACRDCD.QryDetailAfterDelete(DataSet: TDataSet);
Var
  i: string;
begin
  i:=QryDetail.Bookmark;
  try
    QryDetail.DisableControls;
    while not QryDetail.Eof do begin
      QryDetail.Edit;
      QryDetail.FieldByName(FrmGID2).AsString:= FormatFloat('0000',QryDetail.RecNo);
      QryDetail.Next;
    end;
  finally
    QryDetail.EnableControls;
  end;
  QryDetail.Bookmark:=i;
   
end;

procedure TfrmACRDCD.QryDetailCalcFields(DataSet: TDataSet);
begin
  inherited;
  QryDetail.FieldByName('WSJE').AsFloat := QryDetail.FieldByName('RDD27').AsFloat-QryDetail.FieldByName('RDD14').AsFloat - QryDetail.FieldByName('RDD15').AsFloat;

end;

procedure TfrmACRDCD.saveClick(Sender: TObject);
Var
  vCXJE:Double;
  vbk:String;
begin
  //对账单号、序号不能为空
  wwDBEdit1.SetFocus;

  //更新金额
  if not QryDetail.IsEmpty Then
  begin
    if QryDetail.State in [dsEdit,dsInsert] then
    begin
      QryDetail.Post;
    end;

    if QryDetail.RecordCount>0 then
    begin
      QryDetail.DisableControls;
      QryDetail.First;
      vCXJE :=0.0;
      While not QryDetail.Eof do
      begin
        vCXJE:=vCXJE+QryDetail.fieldbyname('RDD14').AsFloat;
        QryDetail.Next;
      end;
      QryDetail.EnableControls;
    end
    else
    begin
      vCXJE:=0;
    end;
    QryMaster.FieldByName('RDC10').AsFloat :=StrToFloat(FormatFloat('0.00',vCXJE)); //总金额
    QryDetail.Edit;
  end
  else
  begin
    vCXJE :=0.0;
    QryMaster.FieldByName('RDC10').AsFloat :=StrToFloat(FormatFloat('0.00',vCXJE)); //总金额
    QryDetail.Edit;
  end;
 
  if QryMaster.FieldByName('RDC10').AsFloat+QryMaster.FieldByName('RDC11').AsFloat>QryMaster.FieldByName('RDC06').AsFloat Then
  begin
    Application.MessageBox('本次冲销金额+已冲销金额不能大于预收金额!','提示信息',MB_IconInformation+MB_OK);
    abort;   
  end;
 
  inherited;

end;

procedure TfrmACRDCD.QryDetailRDD03GetText(Sender: TField;
  var Text: String; DisplayText: Boolean);
begin
  inherited;
  if Trim(QryDetail.FieldByName('RDD03').AsString)='1' Then
  begin
    text :='1:销货单';
  end
  else
  if Trim(QryDetail.FieldByName('RDD03').AsString)='2' Then
  begin
    text :='2:销退单';
  end
  else
  if Trim(QryDetail.FieldByName('RDD03').AsString)='3' Then
  begin
    text :='3:其它';
  end
  else
  if Trim(QryDetail.FieldByName('RDD03').AsString)='5' Then
  begin
    text :='5:其它销货';
  end
  else
  if Trim(QryDetail.FieldByName('RDD03').AsString)='6' Then
  begin
    text :='6:销货折让';
  end;
 
end;

procedure TfrmACRDCD.SpeedButton2Click(Sender: TObject);
Var
  QryTmpA:TADOQuery;
begin
  if not Assigned(frmDBHELP) then
     frmDBHELP := TfrmDBHELP.Create(Application);
  with frmDBHELP do
    begin
      DBHELP:=QryMaster;
      strDBName:='ACRDA';
      strCol:=' RDA01 AS 预收款单号,CONVERT(NVARCHAR(20),RDA13) AS 凭证号码,RDA04 AS 客户编号,RDA05 AS 客户全称,RDA06 AS 收款日期,ISNULL(RDA08,0.0)-ISNULL(RDA12,0.0) AS 未冲销金额 ';
      strWhere:=' ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND (ISNULL(RDA08,0.0)-ISNULL(RDA12,0.0))>0 ';
      strOrder:='预收款单号';
      strParaFieldName:='预收款单号';
      strHelpFieldName:='RDC09';
      ShowModal;
      Free;
    end;

  try
    QryTmpA:=TADOQuery.Create(nil);
    QryTmpA.Connection:=DllAdoCn;
    QryTmpA.EnableBCD :=False;
    QryTmpA.Close;
    QryTmpA.SQL.Clear;
    QryTmpA.SQL.Add(' SELECT RDA04,RDA05,RDA08,RDA09,RDA12 '+
                    ' FROM ACRDA '+
                    ' WHERE ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));
    QryTmpA.Open;
    QryMaster.FieldByName('RDC04').AsString := Trim(QryTmpA.FieldByName('RDA04').AsString);  //客户编号
    QryMaster.FieldByName('RDC05').AsString := Trim(QryTmpA.FieldByName('RDA05').AsString);  //客户全称
    QryMaster.FieldByName('RDC06').AsFloat := QryTmpA.fieldbyname('RDA08').AsFloat;          //预收金额
    QryMaster.FieldByName('RDC07').AsString := Trim(QryTmpA.FieldByName('RDA09').AsString);  //币种
    QryMaster.FieldByName('RDC11').AsFloat := QryTmpA.fieldbyname('RDA12').AsFloat;          //已冲销金额
  finally
    QryTmpA.Close;
    QryTmpA.Free;
  end;
     
end;

procedure TfrmACRDCD.wwDBEdit7Exit(Sender: TObject);
Var
  QryTmpA:TADOQuery;
begin
  if QryMaster.State in [dsEdit,dsInsert] Then
  begin
    try
      QryTmpA:=TADOQuery.Create(nil);
      QryTmpA.Connection:=DllAdoCn;
      QryTmpA.EnableBCD :=False;
      QryTmpA.Close;
      QryTmpA.SQL.Clear;
      QryTmpA.SQL.Add(' SELECT RDA04,RDA05,RDA08,RDA09,RDA12 '+
                      ' FROM ACRDA '+
                      ' WHERE ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND (ISNULL(RDA08,0.0)-ISNULL(RDA12,0.0))>0 AND RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));
      QryTmpA.Open;
      QryMaster.FieldByName('RDC04').AsString := Trim(QryTmpA.FieldByName('RDA04').AsString);  //客户编号
      QryMaster.FieldByName('RDC05').AsString := Trim(QryTmpA.FieldByName('RDA05').AsString);  //客户全称
      QryMaster.FieldByName('RDC06').AsFloat := QryTmpA.fieldbyname('RDA08').AsFloat;          //预收金额
      QryMaster.FieldByName('RDC07').AsString := Trim(QryTmpA.FieldByName('RDA09').AsString);  //币种
      QryMaster.FieldByName('RDC11').AsFloat := QryTmpA.fieldbyname('RDA12').AsFloat;          //已冲销金额
    finally
      QryTmpA.Close;
      QryTmpA.Free;
    end;
  end;
     
end;

procedure TfrmACRDCD.conformClick(Sender: TObject);
Var
  vRDD18:Variant;
begin
  inherited;
  if Trim(QryMaster.FieldByName('CONFORM_CODE').AsString) ='Y' Then
  begin
    if QryDetail.RecordCount >0 Then
    begin
      try
        if not dlladocn.InTransaction then
          dlladocn.BeginTrans;

        //1、更新预收单头
        ExecuteSQL('UPDATE ACRDA SET RDA12=ISNULL(RDA12,0.0)+'+VarToSql(QryMaster.FieldByName('RDC10').AsFloat)+' WHERE RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));

        QryDetail.First;
        cxProgressBar1.Visible :=True;
        cxProgressBar1.Position :=0;
        cxProgressBar1.Properties.Min :=0;
        cxProgressBar1.Properties.Max :=QryDetail.RecordCount;
        cxProgressBar1.Properties.Text :='正在处理数据中。。。';
        while not QryDetail.Eof do
        begin
          if (QryDetail.FieldByName('RDD22').AsString<>'') AND (QryDetail.FieldByName('RDD22').AsString<>'') Then
          begin
            if QryDetail.FieldByName('RDD18').IsNull Then
            begin
               vRDD18 := NULL;
            end
            else
            begin
              vRDD18 := QryDetail.FieldByName('RDD18').AsVariant;
            end;
           
            //2、更新对账单单身 已收款、实际收款日期、收款方式  ISNULL(RDD14,0.0)
            ExecuteSQL('UPDATE ACRED SET RED19=ISNULL(RED19,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+',RED24='+VarToSql(vRDD18)+',RED22='+VarToSql(QryDetail.FieldByName('RDD19').AsString)+' WHERE ACRED.RED01='+VarToSql(QryDetail.FieldByName('RDD22').AsString)+' AND ACRED.RED02='+VarToSql(QryDetail.FieldByName('RDD23').AsString));

            //3、更新对帐单表头已收款金额、已开票金额
            ExecuteSQL(' UPDATE ACREC SET ACREC.REC13=AA.YSK '+
                       ' FROM ACREC,(SELECT REC01,SUM(ISNULL(RED19,0.0)) AS YSK '+
                       '             FROM ACREC '+
                       '             INNER JOIN ACRED ON ACREC.REC01=ACRED.RED01 '+
                       '             WHERE ACRED.RED01='+VarToSql(QryDetail.FieldByName('RDD22').AsString)+
                       '             GROUP BY REC01) AS AA WHERE ACREC.REC01=AA.REC01 ');

            //4、更新对帐单表头锁定码
            ExecuteSQL(' UPDATE ACREC SET REC15=(CASE WHEN (ISNULL(REC10,0.0)-ISNULL(REC13,0.0)=0) AND (ISNULL(REC10,0.0)-ISNULL(REC14,0.0)=0.0) THEN ''Y'' ELSE ''N'' END ) WHERE ACREC.REC01='+VarToSql(QryDetail.FieldByName('RDD22').AsString));
          end;

          if (QryDetail.FieldByName('RDD22').AsString<>'') AND (QryDetail.FieldByName('RDD23').AsString<>'') Then
          begin
            //5、更新销货单已收款金额,已转应收款
            if QryDetail.FieldByName('RDD03').AsString ='1' Then
            begin
              ExecuteSQL(' UPDATE ACRAB SET RAB33=ISNULL(RAB33,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAB37=ISNULL(RAB37,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE SUBSTRING(ACRAB.RAB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRAB.RAB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRAB.RAB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='2' Then
            begin
              //6、更新销退单已收款金额,已转应收款
              ExecuteSQL(' UPDATE ACRBB SET RBB34=ISNULL(RBB34,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RBB38=ISNULL(RBB38,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE SUBSTRING(ACRBB.RBB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRBB.RBB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRBB.RBB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='3' Then
            begin
              //7、更新其它费用已收款金额,已转应收款                        
              ExecuteSQL(' UPDATE ACRJB SET RJB07=ISNULL(RJB07,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RJB09=ISNULL(RJB09,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRJB.RJB01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRJB.RJB02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='5' Then
            begin
              //8、更新其它销货单,已转应收款                        
              ExecuteSQL(' UPDATE ACRAD SET RAD33=ISNULL(RAD33,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAD38=ISNULL(RAD38,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRAD.RAD01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAD.RAD02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='6' Then
            begin
              //9、更新销货折让,已转应收款
              ExecuteSQL(' UPDATE ACRAF SET RAF33=ISNULL(RAF33,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAF37=ISNULL(RAF37,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRAF.RAF01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAF.RAF02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;
           
          end
          else
          begin
            //5、更新销货单已收款金额
            if QryDetail.FieldByName('RDD03').AsString ='1' Then
            begin
              ExecuteSQL(' UPDATE ACRAB SET RAB33=ISNULL(RAB33,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE SUBSTRING(ACRAB.RAB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRAB.RAB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRAB.RAB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='2' Then
            begin
              //6、更新销退单已收款金额
              ExecuteSQL(' UPDATE ACRBB SET RBB34=ISNULL(RBB34,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+' WHERE SUBSTRING(ACRBB.RBB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRBB.RBB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRBB.RBB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='3' Then
            begin
              //7、更新其它费用已收款金额,已转应收款                        
              ExecuteSQL(' UPDATE ACRJB SET RJB07=ISNULL(RJB07,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRJB.RJB01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRJB.RJB02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='5' Then
            begin
              //8、更新其它销货单,已转应收款                        
              ExecuteSQL(' UPDATE ACRAD SET RAD33=ISNULL(RAD33,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRAD.RAD01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAD.RAD02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='6' Then
            begin
              //9、更新销货折让,已转应收款
              ExecuteSQL(' UPDATE ACRAF SET RAF33=ISNULL(RAF33,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRAF.RAF01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAF.RAF02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;
                       
          end;

          cxProgressBar1.Position :=cxProgressBar1.Position+1;
          cxProgressBar1.Repaint;
          QryDetail.Next;
        end;
        cxProgressBar1.Visible :=False;
       
        dlladocn.CommitTrans;         
      except
      on E:Exception do
        begin
          dlladocn.RollbackTrans;
          Application.Messagebox(pchar('操作失败.'+#13#10+E.Message),'提示信息',MB_OK+MB_ICONERROR);
        end;
      end;
    end;
  end
  else
  begin
    if QryDetail.RecordCount >0 Then
    begin
      try
        if not dlladocn.InTransaction then
          dlladocn.BeginTrans;

        //1、更新预收单头
        ExecuteSQL('UPDATE ACRDA SET RDA12=ISNULL(RDA12,0.0)-'+VarToSql(QryMaster.FieldByName('RDC10').AsFloat)+' WHERE RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));

        QryDetail.First;
        cxProgressBar1.Visible :=True;
        cxProgressBar1.Position :=0;
        cxProgressBar1.Properties.Min :=0;
        cxProgressBar1.Properties.Max :=QryDetail.RecordCount;
        cxProgressBar1.Properties.Text :='正在处理数据中。。。';
        while not QryDetail.Eof do
        begin
          if (QryDetail.FieldByName('RDD22').AsString<>'') AND (QryDetail.FieldByName('RDD22').AsString<>'') Then
          begin
            if QryDetail.FieldByName('RDD18').IsNull Then
            begin
               vRDD18 := NULL;
            end
            else
            begin
              vRDD18 := QryDetail.FieldByName('RDD18').AsVariant;
            end;
           
            //2、更新对账单单身 已收款、实际收款日期、收款方式  ISNULL(RDD14,0.0)
            ExecuteSQL('UPDATE ACRED SET RED19=ISNULL(RED19,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+',RED24=NULL,RED22='''' WHERE ACRED.RED01='+VarToSql(QryDetail.FieldByName('RDD22').AsString)+' AND ACRED.RED02='+VarToSql(QryDetail.FieldByName('RDD23').AsString));

            //3、更新对帐单表头已收款金额、已开票金额
            ExecuteSQL(' UPDATE ACREC SET ACREC.REC13=AA.YSK '+
                       ' FROM ACREC,(SELECT REC01,SUM(ISNULL(RED19,0.0)) AS YSK, SUM(ISNULL(RED20,0.0)) AS YKP '+
                       '             FROM ACREC '+
                       '             INNER JOIN ACRED ON ACREC.REC01=ACRED.RED01 '+
                       '             WHERE ACRED.RED01='+VarToSql(QryDetail.FieldByName('RDD22').AsString)+
                       '             GROUP BY REC01) AS AA WHERE ACREC.REC01=AA.REC01 ');

            //4、更新对帐单表头锁定码
            ExecuteSQL(' UPDATE ACREC SET REC15=(CASE WHEN (ISNULL(REC10,0.0)-ISNULL(REC13,0.0)=0) AND (ISNULL(REC10,0.0)-ISNULL(REC14,0.0)=0.0) THEN ''Y'' ELSE ''N'' END ) WHERE ACREC.REC01='+VarToSql(QryDetail.FieldByName('RDD22').AsString));
          end;

          if (QryDetail.FieldByName('RDD22').AsString<>'') AND (QryDetail.FieldByName('RDD22').AsString<>'') Then
          begin
            //5、更新销货单已收款金额、已转应收款
            if QryDetail.FieldByName('RDD03').AsString ='1' Then
            begin
              ExecuteSQL(' UPDATE ACRAB SET RAB33=ISNULL(RAB33,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAB37=ISNULL(RAB37,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE SUBSTRING(ACRAB.RAB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRAB.RAB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRAB.RAB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='2' Then
            begin
              //6、更新销退单已收款金额、已转应收款
              ExecuteSQL(' UPDATE ACRBB SET RBB34=ISNULL(RBB34,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RBB38=ISNULL(RBB38,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE SUBSTRING(ACRBB.RBB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRBB.RBB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRBB.RBB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='3' Then
            begin
              //7、更新其它费用已收款金额、已转应收款                        
              ExecuteSQL(' UPDATE ACRJB SET RJB07=ISNULL(RJB07,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RJB09=ISNULL(RJB09,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRJB.RJB01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRJB.RJB02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='5' Then
            begin
              //8、更新其它销货单,已转应收款                        
              ExecuteSQL(' UPDATE ACRAD SET RAD33=ISNULL(RAD33,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAD37=ISNULL(RAD37,0.0)+'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRAD.RAD01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAD.RAD02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='6' Then
            begin
              //9、更新销货折让,已转应收款
              ExecuteSQL(' UPDATE ACRAF SET RAF33=ISNULL(RAF33,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ',RAF37=ISNULL(RAF37,0.0)+'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+
                                          ' WHERE ACRAF.RAF01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAF.RAF02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;
           
          end
          else
          begin
            //5、更新销货单已收款金额
            if QryDetail.FieldByName('RDD03').AsString ='1' Then
            begin
              ExecuteSQL(' UPDATE ACRAB SET RAB33=ISNULL(RAB33,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE SUBSTRING(ACRAB.RAB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRAB.RAB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRAB.RAB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='2' Then
            begin
              //6、更新销退单已收款金额
              ExecuteSQL(' UPDATE ACRBB SET RBB34=ISNULL(RBB34,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+' WHERE SUBSTRING(ACRBB.RBB03,1,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD04').AsString))+' AND SUBSTRING(ACRBB.RBB03,6,11)='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND SUBSTRING(ACRBB.RBB03,18,4)='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='3' Then
            begin
              //7、更新其它费用已收款金额,已转应收款
              ExecuteSQL(' UPDATE ACRJB SET RJB07=ISNULL(RJB07,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRJB.RJB01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRJB.RJB02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='5' Then
            begin
              //8、更新其它销货单,已转应收款
              ExecuteSQL(' UPDATE ACRAD SET RAD33=ISNULL(RAD33,0.0)-'+VarToSql(QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRAD.RAD01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAD.RAD02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;

            if QryDetail.FieldByName('RDD03').AsString ='6' Then
            begin
              //9、更新销货折让,已转应收款
              ExecuteSQL(' UPDATE ACRAF SET RAF33=ISNULL(RAF33,0.0)-'+VarToSql((-1)*QryDetail.FieldByName('RDD14').AsFloat)+' WHERE ACRAF.RAF01='+VarToSql(Trim(QryDetail.FieldByName('RDD05').AsString))+' AND ACRAF.RAF02='+VarToSql(Trim(QryDetail.FieldByName('RDD06').AsString)));
            end;
                       
          end;

          cxProgressBar1.Position :=cxProgressBar1.Position+1;
          cxProgressBar1.Repaint;
          QryDetail.Next;
        end;
        cxProgressBar1.Visible :=False;
       
        dlladocn.CommitTrans;         
      except
      on E:Exception do
        begin
          dlladocn.RollbackTrans;
          Application.Messagebox(pchar('操作失败.'+#13#10+E.Message),'提示信息',MB_OK+MB_ICONERROR);
        end;
      end;
    end;
  end;
 
end;

procedure TfrmACRDCD.wwDBGrid2CalcCellColors(Sender: TObject;
  Field: TField; State: TGridDrawState; Highlight: Boolean; AFont: TFont;
  ABrush: TBrush);
begin
  inherited;
  if ((Field.FieldName = 'RDD04') or (Field.FieldName = 'RDD14')) then
  begin
    ABrush.Color:=  $00B9FFFF;
    AFont.Color :=clblack;
  end;
   
end;

procedure TfrmACRDCD.QryMasterCalcFields(DataSet: TDataSet);
begin
  inherited;
  QryMaster.FieldByName('WCXJE').AsFloat := QryMaster.FieldByName('RDC06').AsFloat-QryMaster.FieldByName('RDC11').AsFloat-QryMaster.FieldByName('RDC10').AsFloat;
 
end;

procedure TfrmACRDCD.cmdGetClick(Sender: TObject);
Var
  QryTmpB,QryTmpA:TADOQuery;
  vJE:Double;
  vSKRQ:Variant; //收款日期
  vSKFS:String; //收款方式
begin
  inherited;
  wwDBEdit1.SetFocus;
  if Trim(wwDBEdit3.Text)='' Then
  begin
    Application.MessageBox('客户编号不能为空!','提示信息',MB_IconInformation+MB_OK);
    abort;
  end;

  if QryMaster.FieldByName('WCXJE').AsFloat <=0 Then
  begin
    Application.MessageBox('未冲销金额必须大于零!','提示信息',MB_IconInformation+MB_OK);
    abort;
  end;

  if Trim(wwDBEdit7.Text)='' Then
  begin
    Application.MessageBox('预收款单号不能为空!','提示信息',MB_IconInformation+MB_OK);
    abort;
  end;

  if QryDetail.RecordCount>0 then
  begin
    if application.Messagebox('表身有资料,提取数据将删除表身资料,继续吗?','提示信息',Mb_YesNo+Mb_IconQuestion)=IDNO then
       Abort
    else
    begin
      QryDetail.First;
      while not QryDetail.Eof do
        QryDetail.Delete;
     end;
  end;
 
  vJE:=QryMaster.FieldByName('WCXJE').AsFloat;
  try
    QryTmpA:=TADOQuery.Create(nil);
    QryTmpA.Connection:=DllAdoCn;
    QryTmpA.EnableBCD :=False;
    QryTmpA.Close;
    QryTmpA.SQL.Clear;
    QryTmpA.SQL.Add(' SELECT RDA04,RDA05,RDA06,RDA08,RDA09,RDA12,RDA14 '+
                    ' FROM ACRDA '+
                    ' WHERE ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));
    QryTmpA.Open;
    vSKRQ := QryTmpA.FieldByName('RDA06').AsVariant;       //收款日期
    vSKFS := Trim(QryTmpA.FieldByName('RDA14').AsString);  //收款方式
  finally
    QryTmpA.Close;
    QryTmpA.Free;
  end;

  QryMaster.FieldByName('RDC10').AsFloat :=0.0;
  //取未收款的信息
  try
    QryTmpB:=TADOQuery.Create(nil);
    QryTmpB.Connection:=DllAdoCn;
    QryTmpB.EnableBCD :=False;
    QryTmpB.Close;
    QryTmpB.SQL.Clear;
    QryTmpB.SQL.Add(' SELECT RED03 AS RDD03, '+
                    '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,1,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN '''' END RDD04, '+
                    '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,6,11) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,1,11) END RDD05, '+
                    '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,18,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,13,4) END RDD06, '+
                    '        RED08 AS RDD07,RED09 AS RDD08,RED10 AS RDD09,RED11 AS RDD10,RED13 AS RDD11,RED12 AS RDD12,'''' AS RDD13, '+
                    '        ISNULL(RED13,0.0)*ISNULL(RED12,0.0)-ISNULL(RED19,0.0) AS RDD14,RED19 AS RDD15,RED06 AS RDD20, '+
                    '        RED05 AS RDD21,RED01 AS RDD22,RED02 AS RDD23,RED26 AS RDD24,RED29 AS RDD25,RED30 AS RDD26,RED28 AS RDD27 '+
                    ' FROM ACRED '+
                    ' INNER JOIN ACREC ON ACREC.REC01=ACRED.RED01 '+
                    ' WHERE ACREC.CONFORM_CODE=''Y'' AND ISNULL(RED28,0.0)-ISNULL(RED19,0.0)<>0 AND REC04='+VarToSql(Trim(wwDBEdit3.Text))+
                    ' UNION ALL '+
                    ' SELECT ''1'' AS RDD03, '+
                    '        SUBSTRING(RAB03,1,4) AS RDD04, '+
                    '        SUBSTRING(RAB03,6,11) AS RDD05, '+
                    '        SUBSTRING(RAB03,18,4) AS RDD06,RAB04 AS RDD07,RAB05 AS RDD08,RAB06 AS RDD09, '+
                    '        RAB09 AS RDD10,RAB08 AS RDD11,RAB10 AS RDD12,RAB12 AS RDD13, '+
                    '        ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0) AS RDD14, '+
                    '        RAB33 AS RDD15,RAB14 AS RDD20,RAB15 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                    '        0.0 AS RDD24,RAB32 AS RDD25,RAB13 AS RDD26,ISNULL(RAB30,0.0) AS RDD27 '+
                    ' FROM ACRAA '+
                    ' INNER JOIN ACRAB ON ACRAA.RAA01=ACRAB.RAB01 '+
                    ' WHERE ACRAA.CONFORM_CODE=''Y'' AND ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0)>0.0 AND ACRAA.RAA06='+VarToSql(Trim(wwDBEdit3.Text))+
                    ' UNION ALL '+
                    ' SELECT ''2'' AS RDD03, '+
                    '        SUBSTRING(RBB03,1,4) AS RDD04, '+
                    '        SUBSTRING(RBB03,6,11) AS RDD05, '+
                    '        SUBSTRING(RBB03,18,4) AS RDD06,RBB04 AS RDD07,RBB05 AS RDD08,RBB06 AS RDD09, '+
                    '        RBB08 AS RDD10,(-1)*RBB07 AS RDD11,RBB09 AS RDD12,RBB13 AS RDD13, '+
                    '        (-1)*(ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)) AS RDD14, '+
                    '        RBB34 AS RDD15,RBB15 AS RDD20,RBB16 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                    '        0.0 AS RDD24,RBB33 AS RDD25,RBB14 AS RDD26,(-1)*ISNULL(RBB31,0.0) AS RDD27 '+
                    ' FROM ACRBA '+
                    ' INNER JOIN ACRBB ON ACRBA.RBA01=ACRBB.RBB01 '+
                    ' WHERE ACRBA.CONFORM_CODE=''Y'' AND ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)>0.0 AND ACRBA.RBA06='+VarToSql(Trim(wwDBEdit3.Text))+
                    ' UNION ALL '+
                    ' SELECT ''3'' AS RDD03, '+
                    '        '''' AS RDD04, '+
                    '        RJB01 AS RDD05, '+
                    '        RJB02 AS RDD06,'''' AS RDD07,RJB03 AS RDD08,RJB16 AS RDD09,RJB14 AS RDD10,RJB13 AS RDD11,RJB15 AS RDD12,RJB05 AS RDD13, '+
                    '        ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0) AS RDD14, '+
                    '        RJB07 AS RDD15,RJB12 AS RDD20,RJB10 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                    '        0.0 AS RDD24,'''' AS RDD25,RJB11 AS RDD26,ISNULL(RJB04,0.0) AS RDD27 '+
                    ' FROM ACRJA '+
                    ' INNER JOIN ACRJB ON ACRJA.RJA01=ACRJB.RJB01 '+
                    ' WHERE ACRJA.CONFORM_CODE =''Y'' AND ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0)>0 AND ACRJA.RJA06='+VarToSql(Trim(wwDBEdit3.Text))+
                    ' UNION ALL '+
                    ' SELECT ''5'' AS RDD03,'''' AS RDD04,RAD01 AS RDD05,RAD02 AS RDD06,RAD04 AS RDD07, '+
                    '        RAD05 AS RDD08,RAD06 AS RDD09,RAD09 AS RDD10,RAD08 AS RDD11,RAD10 AS RDD12,RAD12 AS RDD13, '+
                    '        ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0) AS RDD14, '+
                    '        RAD33 AS RDD15,RAD14 AS RDD20,RAD15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAD32 AS RDD25,RAD13 AS RDD26,ISNULL(RAD30,0.0) AS RDD27 '+
                    ' FROM ACRAC '+
                    ' INNER JOIN ACRAD ON ACRAD.RAD01=ACRAC.RAC01 '+
                    ' WHERE ACRAC.CONFORM_CODE=''Y'' AND ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0)>0 AND ACRAC.RAC06='+VarToSql(Trim(wwDBEdit3.Text))+
                    ' UNION ALL '+
                    ' SELECT ''6'' AS RDD03,'''' AS RDD04,RAF01 AS RDD05,RAF02 AS RDD06,RAF04 AS RDD07, '+
                    '        RAF05 AS RDD08,RAF06 AS RDD09,RAF09 AS RDD10,(-1)*ISNULL(RAF08,0.0) AS RDD11,RAF10 AS RDD12,RAF12 AS RDD13, '+
                    '        (-1)*(ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)) AS RDD14, '+
                    '        RAF33 AS RDD15,RAF14 AS RDD20,RAF15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAF32 AS RDD25,RAF13 AS RDD26,(-1)*ISNULL(RAF30,0.0) AS RDD27 '+
                    ' FROM ACRAE '+
                    ' INNER JOIN ACRAF ON ACRAF.RAF01=ACRAE.RAE01 '+
                    ' WHERE ACRAE.CONFORM_CODE=''Y'' AND ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)>0 AND ACRAE.RAE06='+VarToSql(Trim(wwDBEdit3.Text)));

    QryTmpB.Open;
    if QryTmpB.RecordCount>0 then
    begin
      QryTmpB.First;
      While not QryTmpB.Eof do
      begin
        if vJE-QryTmpB.FieldByName('RDD14').AsFloat-QryTmpB.FieldByName('RDD24').AsFloat>0 Then
        begin
          QryDetail.Append;
          QryDetail.FieldByName('RDD03').AsString :=QryTmpB.FieldByName('RDD03').AsString;
          QryDetail.FieldByName('RDD04').AsString :=QryTmpB.FieldByName('RDD04').AsString;
          QryDetail.FieldByName('RDD05').AsString :=QryTmpB.FieldByName('RDD05').AsString;
          QryDetail.FieldByName('RDD06').AsString :=QryTmpB.FieldByName('RDD06').AsString;
          QryDetail.FieldByName('RDD07').AsString :=QryTmpB.FieldByName('RDD07').AsString;
          QryDetail.FieldByName('RDD08').AsString :=QryTmpB.FieldByName('RDD08').AsString;
          QryDetail.FieldByName('RDD09').AsString :=QryTmpB.FieldByName('RDD09').AsString;
          QryDetail.FieldByName('RDD10').AsString :=QryTmpB.FieldByName('RDD10').AsString;
          QryDetail.FieldByName('RDD11').AsFloat :=QryTmpB.FieldByName('RDD11').AsFloat;
          QryDetail.FieldByName('RDD12').AsFloat :=QryTmpB.FieldByName('RDD12').AsFloat;
          QryDetail.FieldByName('RDD13').AsString :=QryTmpB.FieldByName('RDD13').AsString;
          QryDetail.FieldByName('RDD14').AsFloat :=QryTmpB.FieldByName('RDD14').AsFloat+QryTmpB.FieldByName('RDD24').AsFloat;
          QryDetail.FieldByName('RDD15').AsFloat :=QryTmpB.FieldByName('RDD15').AsFloat;
          QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
          QryDetail.FieldByName('RDD19').AsString :=vSKFS;
          QryDetail.FieldByName('RDD20').AsString :=QryTmpB.FieldByName('RDD20').AsString;
          QryDetail.FieldByName('RDD21').AsString :=QryTmpB.FieldByName('RDD21').AsString;
          QryDetail.FieldByName('RDD22').AsString :=QryTmpB.FieldByName('RDD22').AsString;
          QryDetail.FieldByName('RDD23').AsString :=QryTmpB.FieldByName('RDD23').AsString;
          QryDetail.FieldByName('RDD24').AsFloat :=QryTmpB.FieldByName('RDD24').AsFloat;
          QryDetail.FieldByName('RDD25').AsString :=QryTmpB.FieldByName('RDD25').AsString;
          QryDetail.FieldByName('RDD26').AsString :=QryTmpB.FieldByName('RDD26').AsString;
          QryDetail.FieldByName('RDD27').AsFloat :=QryTmpB.FieldByName('RDD27').AsFloat;
          vJE :=vJE-QryTmpB.FieldByName('RDD14').AsFloat-QryTmpB.FieldByName('RDD24').AsFloat;
          QryTmpB.Next;
        end
        else
        begin
          QryDetail.Append;
          QryDetail.FieldByName('RDD03').AsString :=QryTmpB.FieldByName('RDD03').AsString;
          QryDetail.FieldByName('RDD04').AsString :=QryTmpB.FieldByName('RDD04').AsString;
          QryDetail.FieldByName('RDD05').AsString :=QryTmpB.FieldByName('RDD05').AsString;
          QryDetail.FieldByName('RDD06').AsString :=QryTmpB.FieldByName('RDD06').AsString;
          QryDetail.FieldByName('RDD07').AsString :=QryTmpB.FieldByName('RDD07').AsString;
          QryDetail.FieldByName('RDD08').AsString :=QryTmpB.FieldByName('RDD08').AsString;
          QryDetail.FieldByName('RDD09').AsString :=QryTmpB.FieldByName('RDD09').AsString;
          QryDetail.FieldByName('RDD10').AsString :=QryTmpB.FieldByName('RDD10').AsString;
          QryDetail.FieldByName('RDD11').AsFloat :=QryTmpB.FieldByName('RDD11').AsFloat;
          QryDetail.FieldByName('RDD12').AsFloat :=QryTmpB.FieldByName('RDD12').AsFloat;
          QryDetail.FieldByName('RDD13').AsString :=QryTmpB.FieldByName('RDD13').AsString;
          QryDetail.FieldByName('RDD14').AsFloat :=vJE;
          QryDetail.FieldByName('RDD15').AsFloat :=QryTmpB.FieldByName('RDD15').AsFloat;
          QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
          QryDetail.FieldByName('RDD19').AsString :=vSKFS;
          QryDetail.FieldByName('RDD20').AsString :=QryTmpB.FieldByName('RDD20').AsString;
          QryDetail.FieldByName('RDD21').AsString :=QryTmpB.FieldByName('RDD21').AsString;
          QryDetail.FieldByName('RDD22').AsString :=QryTmpB.FieldByName('RDD22').AsString;
          QryDetail.FieldByName('RDD23').AsString :=QryTmpB.FieldByName('RDD23').AsString;
          QryDetail.FieldByName('RDD24').AsFloat :=QryTmpB.FieldByName('RDD24').AsFloat;
          QryDetail.FieldByName('RDD25').AsString :=QryTmpB.FieldByName('RDD25').AsString;
          QryDetail.FieldByName('RDD26').AsString :=QryTmpB.FieldByName('RDD26').AsString;
          QryDetail.FieldByName('RDD27').AsFloat :=QryTmpB.FieldByName('RDD27').AsFloat;          
          Break;
        end;
      end;
    end;
  finally
    QryTmpB.Close;
    QryTmpB.Free;
  end;
             
end;


procedure TfrmACRDCD.printClick(Sender: TObject);
begin
  //inherited;

end;

procedure TfrmACRDCD.A41Click(Sender: TObject);
begin
  inherited;
  if (DSMaster.DataSet.IsEmpty) or (DSDetail.DataSet.IsEmpty) then
  begin
    Application.MessageBox('记录为空,打印无效.','提示信息',MB_IconInformation+MB_OK);
    Abort;
  end;

  try
    QryMaster.DisableControls;
    frxReport1.Report.LoadFromFile(GetLogDir('Rpt')+'ACRDCDA.FR3');
    frxReport1.ShowReport(True);
    QryMaster.EnableControls;
  except
    on E:Exception do
       begin
         messagedlg('报表文件不存在,单据打印失败 ! '+#10#13+E.Message,mtError,[MBOK],0);
         Abort;
       end;
  end;
 
end;

procedure TfrmACRDCD.N1Click(Sender: TObject);
begin
  inherited;
  if (DSMaster.DataSet.IsEmpty) or (DSDetail.DataSet.IsEmpty) then
  begin
    Application.MessageBox('记录为空,打印无效.','提示信息',MB_IconInformation+MB_OK);
    Abort;
  end;

  try
    QryMaster.DisableControls;
    frxReport1.Report.LoadFromFile(GetLogDir('Rpt')+'ACRDCDB.FR3');
    frxReport1.ShowReport(True);
    QryMaster.EnableControls;
  except
    on E:Exception do
       begin
         messagedlg('报表文件不存在,单据打印失败 ! '+#10#13+E.Message,mtError,[MBOK],0);
         Abort;
       end;
  end;
   
end;

procedure TfrmACRDCD.wwDBCDRDD04CustomDlg(Sender: TObject);
Var
  sResult:String;
  sl:TStringList;
  i:integer;
  QryTmpB,QryTmpA:TADOQuery;
  vSKRQ:Variant; //收款日期
  vSKFS:String; //收款方式 
begin
  inherited;
  if Trim(wwDBEdit3.Text)='' Then
  begin
    Application.MessageBox('客户编号不能为空!','提示信息',MB_IconInformation+MB_OK);
    abort;
  end;

  if not Assigned(frmACRECDHELP) then
  begin
    frmACRECDHELP := TfrmACRECDHELP.Create(Application);
    frmACRECDHELP.sWhere :=' REC04='+VarToSql(Trim(wwDBEdit3.Text))+' AND ISNULL(RED28,0.0)-ISNULL(RED19,0.0)<>0 ';

    frmACRECDHELP.ShowModal;
    sResult:=frmACRECDHELP.rtnHelpFieldName;
    frmACRECDHELP.Free;
  end;

  try
    QryTmpA:=TADOQuery.Create(nil);
    QryTmpA.Connection:=DllAdoCn;
    QryTmpA.EnableBCD :=False;
    QryTmpA.Close;
    QryTmpA.SQL.Clear;
    QryTmpA.SQL.Add(' SELECT RDA04,RDA05,RDA06,RDA08,RDA09,RDA12,RDA14 '+
                    ' FROM ACRDA '+
                    ' WHERE ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));
    QryTmpA.Open;
    vSKRQ := QryTmpA.FieldByName('RDA06').AsVariant;       //收款日期
    vSKFS := Trim(QryTmpA.FieldByName('RDA14').AsString);  //收款方式
  finally
    QryTmpA.Close;
    QryTmpA.Free;
  end;
   
  if sResult<>'' Then
  begin
    sl:=TStringList.Create;
    sl.Delimiter :=';';
    sl.DelimitedText := Trim(sResult);
    if sl.Count=1 then
    begin
      try
        QryTmpB:=TADOQuery.Create(nil);
        QryTmpB.Connection:=dlladocn;
        QryTmpB.EnableBCD :=False;
        QryTmpB.Close;
        QryTmpB.SQL.Clear;
        QryTmpB.SQL.Add(' SELECT RED03 AS RDD03, '+
                        '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,1,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN '''' END RDD04, '+
                        '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,6,11) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,1,11) END RDD05, '+
                        '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,18,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,13,4) END RDD06, '+
                        '        RED08 AS RDD07,RED09 AS RDD08,RED10 AS RDD09,RED11 AS RDD10,RED13 AS RDD11,RED12 AS RDD12,'''' AS RDD13, '+
                        '        ISNULL(RED13,0.0)*ISNULL(RED12,0.0)+ISNULL(RED26,0.0)-ISNULL(RED19,0.0) AS RDD14,RED19 AS RDD15,RED06 AS RDD20,'+
                        '        RED05 AS RDD21,RED01 AS RDD22,RED02 AS RDD23,0.0 AS RDD24,RED29 AS RDD25,RED30 AS RDD26,RED28 AS RDD27 '+
                        ' FROM ACRED '+
                        ' INNER JOIN ACREC ON ACREC.REC01=ACRED.RED01 '+
                        ' WHERE ACREC.CONFORM_CODE=''Y'' AND ISNULL(RED28,0.0)-ISNULL(RED19,0.0)<>0 AND RED01+''-''+RED02='+VarToSql(Trim(sl.Strings[0])));
        QryTmpB.Open;
        if QryTmpB.RecordCount >0 Then
        begin
          QryDetail.Edit;
          QryDetail.FieldByName('RDD03').AsString :=QryTmpB.FieldByName('RDD03').AsString;
          QryDetail.FieldByName('RDD04').AsString :=QryTmpB.FieldByName('RDD04').AsString;
          QryDetail.FieldByName('RDD05').AsString :=QryTmpB.FieldByName('RDD05').AsString;
          QryDetail.FieldByName('RDD06').AsString :=QryTmpB.FieldByName('RDD06').AsString;
          QryDetail.FieldByName('RDD07').AsString :=QryTmpB.FieldByName('RDD07').AsString;
          QryDetail.FieldByName('RDD08').AsString :=QryTmpB.FieldByName('RDD08').AsString;
          QryDetail.FieldByName('RDD09').AsString :=QryTmpB.FieldByName('RDD09').AsString;
          QryDetail.FieldByName('RDD10').AsString :=QryTmpB.FieldByName('RDD10').AsString;
          QryDetail.FieldByName('RDD11').AsFloat :=QryTmpB.FieldByName('RDD11').AsFloat;
          QryDetail.FieldByName('RDD12').AsFloat :=QryTmpB.FieldByName('RDD12').AsFloat;
          QryDetail.FieldByName('RDD13').AsString :=QryTmpB.FieldByName('RDD13').AsString;
          QryDetail.FieldByName('RDD14').AsFloat :=QryTmpB.FieldByName('RDD14').AsFloat;
          QryDetail.FieldByName('RDD15').AsFloat :=QryTmpB.FieldByName('RDD15').AsFloat;
          QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
          QryDetail.FieldByName('RDD19').AsString :=vSKFS;
          QryDetail.FieldByName('RDD20').AsString :=QryTmpB.FieldByName('RDD20').AsString;
          QryDetail.FieldByName('RDD21').AsString :=QryTmpB.FieldByName('RDD21').AsString;
          QryDetail.FieldByName('RDD22').AsString :=QryTmpB.FieldByName('RDD22').AsString;
          QryDetail.FieldByName('RDD23').AsString :=QryTmpB.FieldByName('RDD23').AsString;
          QryDetail.FieldByName('RDD24').AsFloat :=QryTmpB.FieldByName('RDD24').AsFloat;
          QryDetail.FieldByName('RDD25').AsString :=QryTmpB.FieldByName('RDD25').AsString;
          QryDetail.FieldByName('RDD26').AsString :=QryTmpB.FieldByName('RDD26').AsString;
          QryDetail.FieldByName('RDD27').AsFloat :=QryTmpB.FieldByName('RDD27').AsFloat;
        end;
      finally
        QryTmpB.Close;
        QryTmpB.Free;
      end;
    end
    else
    begin
      for i:=1 to sl.Count-1 do
      begin
        if i=1 then
        begin
          try
            QryTmpB:=TADOQuery.Create(nil);
            QryTmpB.Connection:=dlladocn;
            QryTmpB.EnableBCD :=False;
            QryTmpB.Close;
            QryTmpB.SQL.Clear;
            QryTmpB.SQL.Add(' SELECT RED03 AS RDD03, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,1,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN '''' END RDD04, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,6,11) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,1,11) END RDD05, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,18,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,13,4) END RDD06, '+
                            '        RED08 AS RDD07,RED09 AS RDD08,RED10 AS RDD09,RED11 AS RDD10,RED13 AS RDD11,RED12 AS RDD12,'''' AS RDD13, '+
                            '        ISNULL(RED13,0.0)*ISNULL(RED12,0.0)+ISNULL(RED26,0.0)-ISNULL(RED19,0.0) AS RDD14,RED19 AS RDD15,RED06 AS RDD20, '+
                            '        RED05 AS RDD21,RED01 AS RDD22,RED02 AS RDD23,0.0 AS RDD24,RED29 AS RDD25,RED30 AS RDD26,RED28 AS RDD27 '+
                            ' FROM ACRED '+
                            ' INNER JOIN ACREC ON ACREC.REC01=ACRED.RED01 '+
                            ' WHERE ACREC.CONFORM_CODE=''Y'' AND ISNULL(RED28,0.0)-ISNULL(RED19,0.0)<>0 AND RED01+''-''+RED02='+VarToSql(Trim(sl.Strings[0])));
            QryTmpB.Open;
            if QryTmpB.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmpB.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmpB.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmpB.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmpB.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmpB.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmpB.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmpB.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmpB.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmpB.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmpB.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmpB.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmpB.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmpB.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmpB.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmpB.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmpB.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmpB.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmpB.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmpB.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmpB.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmpB.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmpB.Close;
            QryTmpB.Free;
          end;
        end
        else
        begin
          QryDetail.Append;
          try
            QryTmpB:=TADOQuery.Create(nil);
            QryTmpB.Connection:=dlladocn;
            QryTmpB.EnableBCD :=False;
            QryTmpB.Close;
            QryTmpB.SQL.Clear;
            QryTmpB.SQL.Add(' SELECT RED03 AS RDD03, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,1,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN '''' END RDD04, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,6,11) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,1,11) END RDD05, '+
                            '        CASE WHEN (RED03=''1'' OR RED03=''2'') THEN SUBSTRING(RED07,18,4) WHEN (RED03=''3'' OR RED03=''5'' OR RED03=''6'' ) THEN SUBSTRING(RED07,13,4) END RDD06, '+           
                            '        RED08 AS RDD07,RED09 AS RDD08,RED10 AS RDD09,RED11 AS RDD10,RED13 AS RDD11,RED12 AS RDD12,'''' AS RDD13, '+
                            '        ISNULL(RED13,0.0)*ISNULL(RED12,0.0)+ISNULL(RED26,0.0)-ISNULL(RED19,0.0) AS RDD14,RED19 AS RDD15,RED06 AS RDD20, '+
                            '        RED05 AS RDD21,RED01 AS RDD22,RED02 AS RDD23,0.0 AS RDD24,RED29 AS RDD25,RED30 AS RDD26,RED28 AS RDD27 '+
                            ' FROM ACRED '+
                            ' INNER JOIN ACREC ON ACREC.REC01=ACRED.RED01 '+
                            ' WHERE ACREC.CONFORM_CODE=''Y'' AND ISNULL(RED28,0.0)-ISNULL(RED19,0.0)<>0 AND RED01+''-''+RED02='+VarToSql(Trim(sl.Strings[i-1])));
            QryTmpB.Open;
            if QryTmpB.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmpB.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmpB.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmpB.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmpB.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmpB.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmpB.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmpB.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmpB.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmpB.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmpB.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmpB.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmpB.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmpB.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmpB.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmpB.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmpB.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmpB.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmpB.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmpB.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmpB.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmpB.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmpB.Close;
            QryTmpB.Free;
          end;
        end;
      end;
    end;
  end;
end;

procedure TfrmACRDCD.wwDBCDRDD04KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
Var
  vSKRQ:Variant; //收款日期
  vSKFS:String; //收款方式
  QryTmp,QryTmpA:TADOQuery;
  sResult:String;
  sl:TStringList;
  i:integer;     
begin
  inherited;
  if QryDetail.State in [dsEdit,dsInsert] Then
  begin
    if Trim(wwDBEdit3.Text)='' Then
    begin
      Application.MessageBox('客户编号不能为空!','提示信息',MB_IconInformation+MB_OK);
      abort;
    end;

    try
      QryTmpA:=TADOQuery.Create(nil);
      QryTmpA.Connection:=DllAdoCn;
      QryTmpA.EnableBCD :=False;
      QryTmpA.Close;
      QryTmpA.SQL.Clear;
      QryTmpA.SQL.Add(' SELECT RDA04,RDA05,RDA06,RDA08,RDA09,RDA12,RDA14 '+
                      ' FROM ACRDA '+
                      ' WHERE ACRDA.CONFORM_CODE=''Y'' AND RDA11=''2'' AND RDA01='+VarToSql(Trim(QryMaster.FieldByName('RDC09').AsString)));
      QryTmpA.Open;
      vSKRQ := QryTmpA.FieldByName('RDA06').AsVariant;       //收款日期
      vSKFS := Trim(QryTmpA.FieldByName('RDA14').AsString);  //收款方式
    finally
      QryTmpA.Close;
      QryTmpA.Free;
    end;

    if Key = VK_F3 then //销货
    begin
      if not Assigned(frmACRAABHELP) then
      begin
        frmACRAABHELP := TfrmACRAABHELP.Create(Application);
        frmACRAABHELP.sWhere :=' RAA06='+VarToSql(Trim(wwDBEdit3.Text))+' AND ACRAA.CONFORM_CODE=''Y'' AND ISNULL(ACRGA.RGA25,'''')<>''Y'' AND ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0)>0 ';
        frmACRAABHELP.ShowModal;
        sResult:=frmACRAABHELP.rtnHelpFieldName;
        frmACRAABHELP.Free;
      end;

      if sResult<>'' Then
      begin
        sl:=TStringList.Create;
        sl.Delimiter :=';';
        sl.DelimitedText := Trim(sResult);
        if sl.Count=1 then
        begin
          try
            QryTmp:=TADOQuery.Create(nil);
            QryTmp.Connection:=dlladocn;
            QryTmp.EnableBCD :=False;
            QryTmp.Close;
            QryTmp.SQL.Clear;
            QryTmp.SQL.Add(' SELECT ''1'' AS RDD03, '+
                           '        SUBSTRING(RAB03,1,4) AS RDD04, '+
                           '        SUBSTRING(RAB03,6,11) AS RDD05, '+
                           '        SUBSTRING(RAB03,18,4) AS RDD06,RAB04 AS RDD07,RAB05 AS RDD08,RAB06 AS RDD09, '+
                           '        RAB09 AS RDD10,RAB08 AS RDD11,RAB10 AS RDD12,RAB12 AS RDD13, '+
                           '        ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0) AS RDD14, '+
                           '        RAB33 AS RDD15,RAB14 AS RDD20,RAB15 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                           '        0.0 AS RDD24,RAB32 AS RDD25,RAB13 AS RDD26,RAB30 AS RDD27 '+
                           ' FROM ACRAA '+
                           ' INNER JOIN ACRAB ON ACRAA.RAA01=ACRAB.RAB01 '+
                           ' WHERE ACRAA.CONFORM_CODE=''Y'' AND ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0)>0.0 AND ACRAB.RAB01+''-''+ACRAB.RAB02='+VarToSql(Trim(sl.Strings[0])));
            QryTmp.Open;
            if QryTmp.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmp.Close;
            QryTmp.Free;
          end;
        end
        else
        begin
          for i:=1 to sl.Count-1 do
          begin
            if i=1 then
            begin
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''1'' AS RDD03, '+
                               '        SUBSTRING(RAB03,1,4) AS RDD04, '+
                               '        SUBSTRING(RAB03,6,11) AS RDD05, '+
                               '        SUBSTRING(RAB03,18,4) AS RDD06,RAB04 AS RDD07,RAB05 AS RDD08,RAB06 AS RDD09, '+
                               '        RAB09 AS RDD10,RAB08 AS RDD11,RAB10 AS RDD12,RAB12 AS RDD13, '+
                               '        ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0) AS RDD14, '+
                               '        RAB33 AS RDD15,RAB14 AS RDD20,RAB15 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS RDD24,RAB32 AS RDD25,RAB13 AS RDD26,RAB30 AS RDD27 '+
                               ' FROM ACRAA '+
                               ' INNER JOIN ACRAB ON ACRAA.RAA01=ACRAB.RAB01 '+
                               ' WHERE ACRAA.CONFORM_CODE=''Y'' AND ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0)>0.0 AND ACRAB.RAB01+''-''+ACRAB.RAB02='+VarToSql(Trim(sl.Strings[0])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end
            else
            begin
              QryDetail.Append;
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''1'' AS RDD03, '+
                               '        SUBSTRING(RAB03,1,4) AS RDD04, '+
                               '        SUBSTRING(RAB03,6,11) AS RDD05, '+
                               '        SUBSTRING(RAB03,18,4) AS RDD06,RAB04 AS RDD07,RAB05 AS RDD08,RAB06 AS RDD09, '+
                               '        RAB09 AS RDD10,RAB08 AS RDD11,RAB10 AS RDD12,RAB12 AS RDD13, '+
                               '        ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0) AS RDD14, '+
                               '        RAB33 AS RDD15,RAB14 AS RDD20,RAB15 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS RDD24,RAB32 AS RDD25,RAB13 AS RDD26,RAB30 AS RDD27 '+
                               ' FROM ACRAA '+
                               ' INNER JOIN ACRAB ON ACRAA.RAA01=ACRAB.RAB01 '+
                               ' WHERE ACRAA.CONFORM_CODE=''Y'' AND ISNULL(RAB30,0.0)-ISNULL(RAB33,0.0)-ISNULL(RAB37,0.0)>0.0 AND ACRAB.RAB01+''-''+ACRAB.RAB02='+VarToSql(Trim(sl.Strings[i-1])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end;
          end;
        end;
      end;
    end;

    if Key = VK_F5 then //销退
    begin
      if not Assigned(frmACRBABHELP) then
      begin
        frmACRBABHELP := TfrmACRBABHELP.Create(Application);
        frmACRBABHELP.sWhere :=' RBA06='+VarToSql(Trim(wwDBEdit3.Text))+' AND ACRBA.CONFORM_CODE=''Y'' AND ISNULL(ACRGA.RGA25,'''')<>''Y'' AND ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)>0 ';
        frmACRBABHELP.ShowModal;
        sResult:=frmACRBABHELP.rtnHelpFieldName;
        frmACRBABHELP.Free;
      end;

      if sResult<>'' Then
      begin
        sl:=TStringList.Create;
        sl.Delimiter :=';';
        sl.DelimitedText := Trim(sResult);
        if sl.Count=1 then
        begin
          try
            QryTmp:=TADOQuery.Create(nil);
            QryTmp.Connection:=dlladocn;
            QryTmp.EnableBCD :=False;
            QryTmp.Close;
            QryTmp.SQL.Clear;
            QryTmp.SQL.Add(' SELECT ''2'' AS RDD03, '+
                           '        SUBSTRING(RBB03,1,4) AS RDD04, '+
                           '        SUBSTRING(RBB03,6,11) AS RDD05, '+
                           '        SUBSTRING(RBB03,18,4) AS RDD06,RBB04 AS RDD07,RBB05 AS RDD08,RBB06 AS RDD09, '+
                           '        RBB08 AS RDD10,(-1)*RBB07 AS RDD11,RBB09 AS RDD12,RBB13 AS RDD13, '+
                           '        (-1)*(ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)) AS RDD14, '+
                           '        RBB34 AS RDD15,RBB15 AS RDD20,RBB16 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                           '        0.0 AS RDD24,RBB33 AS RDD25,RBB14 AS RDD26,(-1)*ISNULL(RBB31,0.0) AS RDD27 '+
                           ' FROM ACRBA '+
                           ' INNER JOIN ACRBB ON ACRBA.RBA01=ACRBB.RBB01 '+
                           ' WHERE ACRBA.CONFORM_CODE=''Y'' AND ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)>0.0 AND ACRBB.RBB01+''-''+ACRBB.RBB02='+VarToSql(Trim(sl.Strings[0])));
            QryTmp.Open;
            if QryTmp.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmp.Close;
            QryTmp.Free;
          end;
        end
        else
        begin
          for i:=1 to sl.Count-1 do
          begin
            if i=1 then
            begin
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''2'' AS RDD03, '+
                               '        SUBSTRING(RBB03,1,4) AS RDD04, '+
                               '        SUBSTRING(RBB03,6,11) AS RDD05, '+
                               '        SUBSTRING(RBB03,18,4) AS RDD06,RBB04 AS RDD07,RBB05 AS RDD08,RBB06 AS RDD09, '+
                               '        RBB08 AS RDD10,(-1)*RBB07 AS RDD11,RBB09 AS RDD12,RBB13 AS RDD13, '+
                               '        (-1)*(ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)) AS RDD14, '+
                               '        RBB34 AS RDD15,RBB15 AS RDD20,RBB16 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS RDD24,RBB33 AS RDD25,RBB14 AS RDD26,(-1)*ISNULL(RBB31,0.0) AS RDD27 '+
                               ' FROM ACRBA '+
                               ' INNER JOIN ACRBB ON ACRBA.RBA01=ACRBB.RBB01 '+
                               ' WHERE ACRBA.CONFORM_CODE=''Y'' AND ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)>0.0 AND ACRBB.RBB01+''-''+ACRBB.RBB02='+VarToSql(Trim(sl.Strings[0])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end
            else
            begin
              QryDetail.Append;
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''2'' AS RDD03, '+
                               '        SUBSTRING(RBB03,1,4) AS RDD04, '+
                               '        SUBSTRING(RBB03,6,11) AS RDD05, '+
                               '        SUBSTRING(RBB03,18,4) AS RDD06,RBB04 AS RDD07,RBB05 AS RDD08,RBB06 AS RDD09, '+
                               '        RBB08 AS RDD10,(-1)*RBB07 AS RDD11,RBB09 AS RDD12,RBB13 AS RDD13, '+
                               '        (-1)*(ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)) AS RDD14, '+
                               '        RBB34 AS RDD15,RBB15 AS RDD20,RBB16 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS RDD24,RBB33 AS RDD25,RBB14 AS RDD26,(-1)*ISNULL(RBB31,0.0) AS RDD27 '+
                               ' FROM ACRBA '+
                               ' INNER JOIN ACRBB ON ACRBA.RBA01=ACRBB.RBB01 '+
                               ' WHERE ACRBA.CONFORM_CODE=''Y'' AND ISNULL(RBB31,0.0)-ISNULL(RBB34,0.0)-ISNULL(RBB38,0.0)>0.0 AND ACRBB.RBB01+''-''+ACRBB.RBB02='+VarToSql(Trim(sl.Strings[i-1])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end;
          end;
        end;
      end;   
    end;
   
    if Key = VK_F6 then //其它
    begin
      if not Assigned(frmACRJABHELP) then
      begin
        frmACRJABHELP := TfrmACRJABHELP.Create(Application);
        frmACRJABHELP.sWhere :=' RJA06='+VarToSql(Trim(wwDBEdit3.Text))+' AND ISNULL(ACRGA.RGA25,'''')<>''Y'' AND ACRJA.CONFORM_CODE=''Y'' AND ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0)>0 ';
        frmACRJABHELP.ShowModal;
        sResult:=frmACRJABHELP.rtnHelpFieldName;
        frmACRJABHELP.Free;
      end;

      if sResult<>'' Then
      begin
        sl:=TStringList.Create;
        sl.Delimiter :=';';
        sl.DelimitedText := Trim(sResult);
        if sl.Count=1 then
        begin
          try
            QryTmp:=TADOQuery.Create(nil);
            QryTmp.Connection:=dlladocn;
            QryTmp.EnableBCD :=False;
            QryTmp.Close;
            QryTmp.SQL.Clear;
            QryTmp.SQL.Add(' SELECT ''3'' AS RDD03,'+
                           '        '''' AS RDD04, '+
                           '        RJB01 AS RDD05, '+
                           '        RJB02 AS RDD06,'''' AS RDD07,RJB03 AS RDD08,RJB16 AS RDD09,RJB14 AS RDD10,RJB13 AS RDD11,RJB15 AS RDD12,RJB05 AS RDD13, '+
                           '        ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0) AS RDD14, '+
                           '        RJB07 AS RDD15,RJB12 AS RDD20,RJB10 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                           '        0.0 AS RDD24,'''' AS RDD25,RJB11 AS RDD26,RJB04 AS RDD27 '+
                           ' FROM ACRJA '+
                           ' INNER JOIN ACRJB ON ACRJA.RJA01=ACRJB.RJB01 '+
                           ' WHERE ACRJA.CONFORM_CODE =''Y'' AND ACRJB.RJB01+''-''+ACRJB.RJB02='+VarToSql(Trim(sl.Strings[0])));
            QryTmp.Open;
            if QryTmp.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmp.Close;
            QryTmp.Free;
          end;
        end
        else
        begin
          for i:=1 to sl.Count-1 do
          begin
            if i=1 then
            begin
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''3'' AS RDD03,'+
                               '        '''' AS RDD04, '+
                               '        RJB01 AS RDD05, '+
                               '        RJB02 AS RDD06,'''' AS RDD07,RJB03 AS RDD08,RJB16 AS RDD09,RJB14 AS RDD10,RJB13 AS RDD11,RJB15 AS RDD12,RJB05 AS RDD13, '+
                               '        ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0) AS RDD14, '+
                               '        RJB07 AS RDD15,RJB12 AS RDD20,RJB10 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS  RDD24,'''' AS RDD25,RJB11 AS RDD26,RJB04 AS RDD27 '+
                               ' FROM ACRJA '+
                               ' INNER JOIN ACRJB ON ACRJA.RJA01=ACRJB.RJB01 '+
                               ' WHERE ACRJA.CONFORM_CODE =''Y'' AND ACRJB.RJB01+''-''+ACRJB.RJB02='+VarToSql(Trim(sl.Strings[0])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end
            else
            begin
              QryDetail.Append;
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''3'' AS RDD03,'+
                               '        '''' AS RDD04, '+
                               '        RJB01 AS RDD05, '+
                               '        RJB02 AS RDD06,'''' AS RDD07,RJB03 AS RDD08,RJB16 AS RDD09,RJB14 AS RDD10,RJB13 AS RDD11,RJB15 AS RDD12,RJB05 AS RDD13, '+
                               '        ISNULL(RJB04,0.0)-ISNULL(RJB07,0.0)-ISNULL(RJB09,0.0) AS RDD14, '+
                               '        RJB07 AS RDD15,RJB12 AS RDD20,RJB10 AS RDD21,'''' AS RDD22,'''' AS RDD23, '+
                               '        0.0 AS RDD24,'''' AS RDD25,RJB11 AS RDD26,RJB04 AS RDD27 '+
                               ' FROM ACRJA '+
                               ' INNER JOIN ACRJB ON ACRJA.RJA01=ACRJB.RJB01 '+
                               ' WHERE ACRJA.CONFORM_CODE =''Y'' AND ACRJB.RJB01+''-''+ACRJB.RJB02='+VarToSql(Trim(sl.Strings[i-1])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end;
          end;
        end;
      end;   
    end;

    if Key = VK_F7 then //其它销货
    begin
      if not Assigned(frmACRACDHELP) then
      begin
        frmACRACDHELP := TfrmACRACDHELP.Create(Application);
        frmACRACDHELP.sWhere :=' RAC06='+VarToSql(Trim(wwDBEdit3.Text))+' AND ISNULL(ACRGA.RGA25,'''')<>''Y'' AND ACRAC.CONFORM_CODE=''Y'' AND ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0)>0 ';
        frmACRACDHELP.ShowModal;
        sResult:=frmACRACDHELP.rtnHelpFieldName;
        frmACRACDHELP.Free;
      end;

      if sResult<>'' Then
      begin
        sl:=TStringList.Create;
        sl.Delimiter :=';';
        sl.DelimitedText := Trim(sResult);
        if sl.Count=1 then
        begin
          try
            QryTmp:=TADOQuery.Create(nil);
            QryTmp.Connection:=dlladocn;
            QryTmp.EnableBCD :=False;
            QryTmp.Close;
            QryTmp.SQL.Clear;
            QryTmp.SQL.Add(' SELECT ''5'' AS RDD03,'''' AS RDD04,RAD01 AS RDD05,RAD02 AS RDD06,RAD04 AS RDD07, '+
                           '        RAD05 AS RDD08,RAD06 AS RDD09,RAD09 AS RDD10,RAD08 AS RDD11,RAD10 AS RDD12,RAD12 AS RDD13, '+
                           '        ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0) AS RDD14, '+
                           '        RAD33 AS RDD15,RAD14 AS RDD20,RAD15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAD32 AS RDD25,RAD13 AS RDD26,RAD30 AS RDD27 '+
                           ' FROM ACRAC '+
                           ' INNER JOIN ACRAD ON ACRAD.RAD01=ACRAC.RAC01 '+
                           ' WHERE ACRAC.CONFORM_CODE=''Y'' AND ACRAD.RAD01+''-''+ACRAD.RAD02='+VarToSql(Trim(sl.Strings[0])));
            QryTmp.Open;
            if QryTmp.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmp.Close;
            QryTmp.Free;
          end;
        end
        else
        begin
          for i:=1 to sl.Count-1 do
          begin
            if i=1 then
            begin
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''5'' AS RDD03,'''' AS RDD04,RAD01 AS RDD05,RAD02 AS RDD06,RAD04 AS RDD07, '+
                               '        RAD05 AS RDD08,RAD06 AS RDD09,RAD09 AS RDD10,RAD08 AS RDD11,RAD10 AS RDD12,RAD12 AS RDD13, '+
                               '        ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0) AS RDD14, '+
                               '        RAD33 AS RDD15,RAD14 AS RDD20,RAD15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAD32 AS RDD25,RAD13 AS RDD26,RAD30 AS RDD27 '+
                               ' FROM ACRAC '+
                               ' INNER JOIN ACRAD ON ACRAD.RAD01=ACRAC.RAC01 '+
                               ' WHERE ACRAC.CONFORM_CODE=''Y'' AND ACRAD.RAD01+''-''+ACRAD.RAD02='+VarToSql(Trim(sl.Strings[0])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end
            else
            begin
              QryDetail.Append;
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''5'' AS RDD03,'''' AS RDD04,RAD01 AS RDD05,RAD02 AS RDD06,RAD04 AS RDD07, '+
                               '        RAD05 AS RDD08,RAD06 AS RDD09,RAD09 AS RDD10,RAD08 AS RDD11,RAD10 AS RDD12,RAD12 AS RDD13, '+
                               '        ISNULL(RAD30,0.0)-ISNULL(RAD33,0.0)-ISNULL(RAD37,0.0) AS RDD14, '+
                               '        RAD33 AS RDD15,RAD14 AS RDD20,RAD15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAD32 AS RDD25,RAD13 AS RDD26,RAD30 AS RDD27 '+
                               ' FROM ACRAC '+
                               ' INNER JOIN ACRAD ON ACRAD.RAD01=ACRAC.RAC01 '+
                               ' WHERE ACRAC.CONFORM_CODE=''Y'' AND ACRAD.RAD01+''-''+ACRAD.RAD02='+VarToSql(Trim(sl.Strings[i-1])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end;
          end;
        end;
      end; 
    end;

    if Key = VK_F8 then //其它折让
    begin
      if not Assigned(frmACRAEFHELP) then
      begin
        frmACRAEFHELP := TfrmACRAEFHELP.Create(Application);
        frmACRAEFHELP.sWhere :=' RAE06='+VarToSql(Trim(wwDBEdit3.Text))+' AND ISNULL(ACRGA.RGA25,'''')<>''Y'' AND ACRAE.CONFORM_CODE=''Y'' AND ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)>0 ';
        frmACRAEFHELP.ShowModal;
        sResult:=frmACRAEFHELP.rtnHelpFieldName;
        frmACRAEFHELP.Free;
      end;
   
      if sResult<>'' Then
      begin
        sl:=TStringList.Create;
        sl.Delimiter :=';';
        sl.DelimitedText := Trim(sResult);
        if sl.Count=1 then
        begin
          try
            QryTmp:=TADOQuery.Create(nil);
            QryTmp.Connection:=dlladocn;
            QryTmp.EnableBCD :=False;
            QryTmp.Close;
            QryTmp.SQL.Clear;
            QryTmp.SQL.Add(' SELECT ''6'' AS RDD03,'''' AS RDD04,RAF01 AS RDD05,RAF02 AS RDD06,RAF04 AS RDD07,'+
                           '        RAF05 AS RDD08,RAF06 AS RDD09,RAF09 AS RDD10,(-1)*ISNULL(RAF08,0.0) AS RDD11,RAF10 AS RDD12,RAF12 AS RDD13, '+
                           '        (-1)*(ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)) AS RDD14, '+
                           '        RAF33 AS RDD15,RAF14 AS RDD20,RAF15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAF32 AS RDD25,RAF13 AS RDD26,'+
                           '        (-1)*ISNULL(RAF30,0.0) AS RDD27'+
                           ' FROM ACRAE '+
                           ' INNER JOIN ACRAF ON ACRAF.RAF01=ACRAE.RAE01 '+
                           ' WHERE ACRAE.CONFORM_CODE=''Y'' AND ACRAF.RAF01+''-''+ACRAF.RAF02='+VarToSql(Trim(sl.Strings[0])));
            QryTmp.Open;
            if QryTmp.RecordCount >0 Then
            begin
              QryDetail.Edit;
              QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
              QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
              QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
              QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
              QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
              QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
              QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
              QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
              QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
              QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
              QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
              QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
              QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
              QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
              QryDetail.FieldByName('RDD19').AsString :=vSKFS;
              QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
              QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
              QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
              QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
              QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
              QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
              QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
              QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
            end;
          finally
            QryTmp.Close;
            QryTmp.Free;
          end;
        end
        else
        begin
          for i:=1 to sl.Count-1 do
          begin
            if i=1 then
            begin
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''6'' AS RDD03,'''' AS RDD04,RAF01 AS RDD05,RAF02 AS RDD06,RAF04 AS RDD07,'+
                               '        RAF05 AS RDD08,RAF06 AS RDD09,RAF09 AS RDD10,(-1)*ISNULL(RAF08,0.0) AS RDD11,RAF10 AS RDD12,RAF12 AS RDD13, '+
                               '        (-1)*(ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)) AS RDD14, '+
                               '        RAF33 AS RDD15,RAF14 AS RDD20,RAF15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAF32 AS RDD25,RAF13 AS RDD26,(-1)*ISNULL(RAF30,0.0) AS RDD27 '+
                               ' FROM ACRAE '+
                               ' INNER JOIN ACRAF ON ACRAF.RAF01=ACRAE.RAE01 '+
                               ' WHERE ACRAE.CONFORM_CODE=''Y'' AND ACRAF.RAF01+''-''+ACRAF.RAF02='+VarToSql(Trim(sl.Strings[0])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;
            end
            else
            begin
              QryDetail.Append;
              try
                QryTmp:=TADOQuery.Create(nil);
                QryTmp.Connection:=dlladocn;
                QryTmp.EnableBCD :=False;
                QryTmp.Close;
                QryTmp.SQL.Clear;
                QryTmp.SQL.Add(' SELECT ''6'' AS RDD03,'''' AS RDD04,RAF01 AS RDD05,RAF02 AS RDD06,RAF04 AS RDD07,'+
                               '        RAF05 AS RDD08,RAF06 AS RDD09,RAF09 AS RDD10,(-1)*ISNULL(RAF08,0.0) AS RDD11,RAF10 AS RDD12,RAF12 AS RDD13, '+
                               '        (-1)*(ISNULL(RAF30,0.0)-ISNULL(RAF33,0.0)-ISNULL(RAF37,0.0)) AS RDD14, '+
                               '        RAF33 AS RDD15,RAF14 AS RDD20,RAF15 AS RDD21,'''' AS RDD22,'''' AS RDD23,0.0 AS RDD24,RAF32 AS RDD25,RAF13 AS RDD26,(-1)*ISNULL(RAF30,0.0) AS RDD27 '+
                               ' FROM ACRAE '+
                               ' INNER JOIN ACRAF ON ACRAF.RAF01=ACRAE.RAE01 '+
                               ' WHERE ACRAE.CONFORM_CODE=''Y'' AND ACRAF.RAF01+''-''+ACRAF.RAF02='+VarToSql(Trim(sl.Strings[i-1])));
                QryTmp.Open;
                if QryTmp.RecordCount >0 Then
                begin
                  QryDetail.Edit;
                  QryDetail.FieldByName('RDD03').AsString :=QryTmp.FieldByName('RDD03').AsString;
                  QryDetail.FieldByName('RDD04').AsString :=QryTmp.FieldByName('RDD04').AsString;
                  QryDetail.FieldByName('RDD05').AsString :=QryTmp.FieldByName('RDD05').AsString;
                  QryDetail.FieldByName('RDD06').AsString :=QryTmp.FieldByName('RDD06').AsString;
                  QryDetail.FieldByName('RDD07').AsString :=QryTmp.FieldByName('RDD07').AsString;
                  QryDetail.FieldByName('RDD08').AsString :=QryTmp.FieldByName('RDD08').AsString;
                  QryDetail.FieldByName('RDD09').AsString :=QryTmp.FieldByName('RDD09').AsString;
                  QryDetail.FieldByName('RDD10').AsString :=QryTmp.FieldByName('RDD10').AsString;
                  QryDetail.FieldByName('RDD11').AsFloat :=QryTmp.FieldByName('RDD11').AsFloat;
                  QryDetail.FieldByName('RDD12').AsFloat :=QryTmp.FieldByName('RDD12').AsFloat;
                  QryDetail.FieldByName('RDD13').AsString :=QryTmp.FieldByName('RDD13').AsString;
                  QryDetail.FieldByName('RDD14').AsFloat :=QryTmp.FieldByName('RDD14').AsFloat;
                  QryDetail.FieldByName('RDD15').AsFloat :=QryTmp.FieldByName('RDD15').AsFloat;
                  QryDetail.FieldByName('RDD18').AsVariant :=vSKRQ;
                  QryDetail.FieldByName('RDD19').AsString :=vSKFS;
                  QryDetail.FieldByName('RDD20').AsString :=QryTmp.FieldByName('RDD20').AsString;
                  QryDetail.FieldByName('RDD21').AsString :=QryTmp.FieldByName('RDD21').AsString;
                  QryDetail.FieldByName('RDD22').AsString :=QryTmp.FieldByName('RDD22').AsString;
                  QryDetail.FieldByName('RDD23').AsString :=QryTmp.FieldByName('RDD23').AsString;
                  QryDetail.FieldByName('RDD24').AsFloat :=QryTmp.FieldByName('RDD24').AsFloat;
                  QryDetail.FieldByName('RDD25').AsString :=QryTmp.FieldByName('RDD25').AsString;
                  QryDetail.FieldByName('RDD26').AsString :=QryTmp.FieldByName('RDD26').AsString;
                  QryDetail.FieldByName('RDD27').AsFloat :=QryTmp.FieldByName('RDD27').AsFloat;
                end;
              finally
                QryTmp.Close;
                QryTmp.Free;
              end;      
            end;
          end;
        end;
      end;
    end;
  end;   
end;

initialization
  RegisterClass(TfrmACRDCD);
finalization
  UnRegisterClass(TfrmACRDCD);

end.

0 0
原创粉丝点击