ADO 如何處理回傳多個的 RecordSet -- 冷飯重炒 |
尚未結案
|
mike0518tw
一般會員 發表:5 回覆:5 積分:2 註冊:2004-03-24 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |