由於代碼冗餘,我將通常的ADOQuery處理概括爲其自己的方法,並返回查詢的_RecordSet方法。 現在,當我檢查該方法中的查詢結果時,他們檢查出好的。但返回的_RecordSet似乎是空的或零(例外:EOleException項目無法在集合中找到相應的名稱或序號。) 從我收集,我似乎需要返回查詢的克隆_Recordset。到目前爲止,我已經使用Delphi2005 - 在另一種方法中使用TADOQuery結果
res := qr.Recordset.Clone(adLockUnspecified); Result := res;
,
TADOQuery.RecordSet._xClone()
方法
失敗,以及THESE方法,其中沒有工作(不認識幾個組件,版本差異我猜)嘗試。
我使用的查詢代碼:
function queryDb(const s: WideString; const dc: boolean = true): _RecordSet;
var
ds: String;
conn: TADOConnection;
qr: TADOQuery;
res: _RecordSet;
begin
Result := nil;
conn := TADOConnection.Create(nil);
qr := TADOQuery.Create(nil);
try
ds := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='
+ ExtractFilePath(Application.ExeName)
+ 'gdkp.mdb;Persist Security Info=False';
conn.ConnectionString := ds;
conn.LoginPrompt := false;
conn.Connected := true;
qr.Connection := conn;
if(dc = true)then begin
qr.DisableControls
end;
qr.SQL.Add(s);
qr.Open;
Result := qr.Recordset;
finally
conn.Free;
qr.Free;
end;
end;
已經有人克服以前這一問題,並且知道合適的答案或者可以直接對我有幫助的內容?