sSQL:=''+qUserQueryCode+'';
                        with frmDM.qryDSelect do
                        begin
                          Close;
                          SQL.Clear;
                          SQL.Append(sSQL);   
                          try
                            Open;
                            if RecordCount > 0 then   
//这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                            begin
                              //cUser_ResultID     := FieldByName('id').AsInteger;
                              sShenpID  := FieldByName('aaa).AsString;
                              sCompany  := FieldByName('bbb).AsString;
                              sContent  := FieldByName('ccc).AsString;
                              sPrice    := FieldByName('ddd).AsInteger;                              WriteLog('从目标数据执行【'+sSQL+'】成功');
                              //result:= true;
                              UpDateJieshou(iSmsID);
                              SendResultSms(sSmsAdd,  ' 编号:'+sShenpID+','+sCompany+' 关于 '+sContent+',金额:'+IntToStr(sPrice)+'元');
//这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                            end
                            else
                            begin
                              WriteLog('从目标数据执行【'+sSQL+'】失败,未发现对应的同意结果参数值ID');
                              UpDateJieshou(iSmsID);
                              SendResultSms(sSmsAdd,  ' 数据库中没有需要您审批的信息!');
                            end;
                          except
                            on e: Exception do
                            begin
                              WriteLog('从目标数据执行【'+sSQL+'】失败,失败原因:'+e.Message);
                            end;
                          end;
                        end;
以上代码执行,如果qUserQueryCode内容部份执行出来的结果是一条,那么结果都是正常的,但如果记录是多条的,则无法正常执行后面的动作,我对DELPHI不熟,只能大致知道代码问题出在循环上,但不知道要怎么写了,求高手,帮写出来

解决方案 »

  1.   

    如果循环可以
    for i:=0 to frmDM.qryDSelect. RecordCount -1 do
    也可以用(喜欢用这种)
    while not frmDM.qryDSelect.eof do
    begin
      .....
      frmDM.qryDSelect.next;
    end;
      

  2.   


                                if RecordCount > 0 then   
    //这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                                begin
    while not eof do
    begin
                                  //cUser_ResultID     := FieldByName('id').AsInteger;
                                  sShenpID  := FieldByName('aaa).AsString;
                                  sCompany  := FieldByName('bbb).AsString;
                                  sContent  := FieldByName('ccc).AsString;
                                  sPrice    := FieldByName('ddd).AsInteger;                              WriteLog('从目标数据执行【'+sSQL+'】成功');
                                  //result:= true;
                                  UpDateJieshou(iSmsID);
                                  SendResultSms(sSmsAdd,  ' 编号:'+sShenpID+','+sCompany+' 关于 '+sContent+',金额:'+IntToStr(sPrice)+'元');
      Next;
    end;
    //这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                                end
      

  3.   

                                if RecordCount > 0 then   
    //这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                                begin
    while not eof do
    begin
                                  //cUser_ResultID     := FieldByName('id').AsInteger;
                                  sShenpID  := FieldByName('aaa).AsString;
                                  sCompany  := FieldByName('bbb).AsString;
                                  sContent  := FieldByName('ccc).AsString;
                                  sPrice    := FieldByName('ddd).AsInteger;                              WriteLog('从目标数据执行【'+sSQL+'】成功');
                                  //result:= true;
                                  UpDateJieshou(iSmsID);
                                  SendResultSms(sSmsAdd,  ' 编号:'+sShenpID+','+sCompany+' 关于 '+sContent+',金额:'+IntToStr(sPrice)+'元');
      Next;
    end;
    //这段标记中有问题,单条记录可以正确执行,如果有多条记录只执行单条记录,其余不执行;
                                end