我用这样的方法:
  
dsTmpDataSet:=DMFrm.procComm;--接到第一个
while dsTmpDataSet<>Nil do
Begin
  dsTmpDataSet.First;
  while not dsTmpdataSet.Eof do
  Begin
    showmessage(dsTmpDataSet.Fields[0].AsString);
    dsTmpdataSet.Next;
  End;
  if dsTmpDataSet<>DMFrm.procComm then
    dsTmpDataSet.Free;
  dsTmpDataSet:=DMFrm.procComm.NextRecordSet;--如此,但是接不到下一个了?
End;
这个能很好用,但是我怎么就不行呢?

解决方案 »

  1.   

    把dsTmpDataSet:=DMFrm.procComm.NextRecordSet;变成 dsTmpDataSet.NextRecordSet; 试试
      

  2.   


    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin with SQLStoredProc1 do begin
       Close;
       ProcedureName:='she_Rules';
       Parameters.Refresh;
       Parameters.ParamValues['@str1']:='200100200500'; 
       open;
       query1.Recordset:=Recordset; {第一个数据集}
       query2.Recordset:=NextRecordset(i);{第二个数据集} end;end;
      

  3.   


      ADODataSet1.Recordset   :=   ADOStoredProc1.NextRecordset(0);這樣
      

  4.   

    呵呵,感谢楼上的,ADO的我知道。不过这里用的是DBX的TSqlStoredProc阿,可不是ADO的。ADO是可以接收多数据集的。
    但是DBX的好像不行啊
      

  5.   

    为啥DBX的Proc执行存储过程有这么多讲究阿,不能insert() select() 而且不能有游标 否则不能返回结果集的
      

  6.   

    事实证明,DBX的就是不行,还是ADO的可行。