코드 중복으로 인해 일반적인 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;
은 누군가가 전에이 문제를 극복하고 적절한 답을 알거나 도움이되는 내용으로 저를 안내 할 수 있습니다 했습니까? 내가 미친 장난 모르는