首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

TADOQuery用法解决方法

2013-03-06 
TADOQuery用法在TADOQuery的语句上面输入如下:Select * from TableaSelect * from Tableb那么会出来两个结

TADOQuery用法
在TADOQuery的语句上面输入如下:
Select * from Tablea
Select * from Tableb
那么会出来两个结果集,可是在DELPHI中如何可以获取其中一个?在SQL中会分成两个窗口来显示,但是DELPHI只显示了第一条语句的结果。请问要如何操作才可以把这样的语句绑定?

[解决办法]

引用:
还是无人知道怎么做的吗?

delphi的query不支持多结果集, 只能分开处理.

存储过程要想适用于delphi, 就对返回结果做下处理

[解决办法]
1、TClientDataSet可以,我就是这样用的,注意返回值是OleVariant类型,获得返回值后,可以这样操作:
cds1,cds2,cds3,cds4,cds5:TClientDataSet;
cds1.Data := vData1;
cds2.Data := vData2;
cds3.Data := vData3;
cds4.Data := vData4;
cds5.Data := vData5;
TDataSource.DataSet=TClientDataSet就可以了
2、但是如果你一定要用TADOQuery,那么你直接qry_tmp.RecordSet := NextRecordset(i_Rst);
3、代码
function GetStastic_DoingQuery(var vData1, vData2, vData3,
  vData4, vData5: OleVariant): Boolean;
var
  i_Rst:Integer;
  s_Depart,s_Finished:String;
  s_ProcCode,s_MapNo,s_PlanDate:String;
  qry_tmp:TADOQuery;
  dsp_tmp:TDataSetProvider;
begin
  Result     := False;
  s_Depart   := Depart;
  s_Finished := Finished;
  s_ProcCode := ProcCode;
  s_MapNo    := MapNo;
  s_PlanDate := PlanDate;
  try          
    qry_tmp:=TADOQuery.Create(nil);
    dsp_tmp:=TDataSetProvider.Create(nil);
    dsp_tmp.DataSet := qry_tmp;
    with adq_SQL do begin
      Close;
      SQL.Clear;
      SQL.Add('exec 存储过程名称及参数列表');
      if s_PlanDate<>'' then
        SQL.Add(','+quotedstr(s_PlanDate));
      Open;                           
      qry_tmp.RecordSet := RecordSet;
      vData1 := dsp_tmp.Data;
      qry_tmp.RecordSet := NextRecordset(i_Rst);
      vData2 := dsp_tmp.Data;
      qry_tmp.RecordSet := NextRecordset(i_Rst);
      vData3 := dsp_tmp.Data;
      qry_tmp.RecordSet := NextRecordset(i_Rst);
      vData4 := dsp_tmp.Data;
      qry_tmp.RecordSet := NextRecordset(i_Rst);
      vData5 := dsp_tmp.Data;
    end;
    Result := True;
  finally
    if Assigned(qry_tmp) then
      qry_tmp.Free;
    if Assigned(dsp_tmp) then
      dsp_tmp.Free;
  end;
end;

热点排行