全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1082
推到 Plurk!
推到 Facebook!

ADO 如何處理回傳多個的 RecordSet -- 冷飯重炒

尚未結案
mike0518tw
一般會員


發表:5
回覆:5
積分:2
註冊:2004-03-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-31 11:05:35 IP:218.68.xxx.xxx 未訂閱
dear all , 小弟遇到的問題 ,有點不知如何處理 ,有先進可以解答一下嬤 ...在大陸孤軍奮戰中的 Michael ----mssql :: Store Procedure 處理如下 store proceudre B as begin select * from Tableb end stroe procedure A as begin select * from tableA exec B end stroe procedure C as begin select * from tableA select * from tableB end ============================================================= List I: //delphi 6 :: 使用 ADOSProcedure 去呼叫 store proceudre A ADOSProcedure.storeprocedurename := 'A' ADOSProcedure.open //可以取得 tableA的資料 for i:= 0 to ADOSProcedure.record-1 do begin tmpst:= ADOSProcedure.fileds[0].asstring; ADOSProcedure.next; end; ADOSProcedure.recordset :=ADOSProcedure.nextrecordset(a); 這時候會出現 'ADOSProcedure recorset isnot open' 的 exception ,於是就無法取得 TableB的資料 ------------------------------------------------------------- List II: //delphi 6 :: 使用 ADOSProcedure 去呼叫 store proceudre A ADOSProcedure.storeprocedurename := 'C' ADOSProcedure.open //可以取得 tableA的資料 for i:= 0 to ADOSProcedure.record-1 do begin tmpst:= ADOSProcedure.fileds[0].asstring; ADOSProcedure.next; end; ADOSProcedure.recordset :=ADOSProcedure.nextrecordset(a); //可以取得 tableB的資料 for i:= 0 to ADOSProcedure.record-1 do begin tmpst:= ADOSProcedure.fileds[0].asstring; ADOSProcedure.next; end; =============================================================== 如果使用 sql query analyzer 或者是 EMS MS SQL Manager 不管是呼叫 stroeprocedure A 或 C 都可以正確顯示在畫面 兩個 record set 真是讓人想不懂怎麼弄的 !! 發表人 - mike0518tw 於 2005/05/31 11:39:29
shieh2700
高階會員


發表:0
回覆:127
積分:100
註冊:2002-06-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-24 21:00:41 IP:61.229.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var
  qry:TADOQuery;
  res:_Recordset;
  i:integer;
begin
  qry:=TADOQuery.Create(self);
  qry.ConnectionString :=
    'Provider=SQLOLEDB.1;Integrated Security=SSPI;' 
    'Persist Security Info=False;Initial Catalog=pubs;' 
    'Data Source=.';
  qry.SQL.Add('SELECT * FROM jobs');
  qry.SQL.Add('SELECT * FROM authors');
  qry.Open;
  ShowMessage(qry.Fields[0].AsString);
  res:=qry.NextRecordset(i);
  ShowMessage(res.Fields[0].Value);
  res.Close;
  qry.Close;
end;
mike0518tw
一般會員


發表:5
回覆:5
積分:2
註冊:2004-03-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-14 11:02:09 IP:60.28.xxx.xxx 未訂閱
procedure aa(dataset : TCustomADODataSet); var res : _RecordSet; begin ..... res := dataset.Recordset; while (not varisnull(res)) and (not varisempty(res)) and (res<>nil) do begin if res.Fields.Count<=0 then begin res := dataset.NextRecordset(a); continue; end; ..... do something res := dataset.NextRecordset(a); end; end;
系統時間:2024-05-11 19:08:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!