Moin liebe Experten,
ich hänge gerade an einem Problem fest, bei dem ich nicht sicher bin ob es eine Lösung gibt Vielleicht kennt ihr da den entscheidenden Tip?
Es geht um MS-
SQL Datenbankzugriffe über
ADO.
Entweder enthalte ich das Ergebnis aus einer ADOQuery:
Delphi-Quellcode:
ADOQuery.First
ADOQuery.Fields.Fields[0].AsString;
oder als Ergebnis des Aufrufs einer Stored Procedure:
Delphi-Quellcode:
StoredProc := TADOStoredProc.Create(self);
...ausführen...
StoredProc.First;
StoredProc.Fields.Fields[0].AsString;
Soweit ich sehen kann wird mit genau den selben Befehlen auf diese unterschiedlichen Recordsets zugegriffen. Nun schreibe ich gerade an verschiedenen Funktionen, die mal Daten von einer Stored Procedure und mal Ergebnisdaten von einem ADOQuery bekommen sollen und würde diese Ergebnisse gerne abkapseln.
Ungefähr so:
Delphi-Quellcode:
function TfrmSQL.DBResult(is_adoquery_not_sprecordset: Boolean): Variant;
begin
if is_adoquery_not_sprecordset then
result := ADOQuery AS AdoStoredProc;
else
result := StoredProc;
end;
Variant geht natürlich nicht...
Ungültive Typen 'variant' und 'TADOStoredProc'
Aufrufen würde ich das ganze dann gerne ungefähr so:
Delphi-Quellcode:
DBResult(True).First;
DBResult(True)..Fields.Fields[0].AsString;
Hoffe das war halbwegs verständlich ausgedrückt. Denke ich da jetzt gerade völlig falsch? Bin heute noch nicht so wach
Wäre über Tips dankbar