Hallo Flippo,
die Fehlermeldung bezieht sich nicht auf den Rumpf deiner Stored Procedure, denn die funktioniert ja unter bestimmten Bedingungen. Es geht mehr um die Parameter. Die von der Komponente müssen genau mit denen aus der SP-Deklaration übereinstimmen - Richtung und Typ, evtl. auch Größe.
Folgende Vorgehensweise ist ratsam:
(1) TDAOStoredProc über den Object Inspector konfigurieren.
(2) Insbesondere die Parameter korrekt typisieren.
(3) Prepared auf True setzen
Speziell das mehrfache Setzen von Prepared auf True ist unnötig. Es passiert nach dem ersten Mal auch nichts mehr, weil der
VCL Code unsinnige Änderungen an Properties außer Acht lässt.
Hier noch ein paar Denkanstöße:
Delphi-Quellcode:
procedure TDataModel.GetMapping(const param1, param2: string; strings: TStrings);
var
id: Integer;
begin
with myStoredProc do
begin
Parameters.ParamValues['param1'] := param1;
Parameters.ParamValues['param2'] := param2;
Open;
while not Eof do
begin
id := GetId(param1, 'STR', FieldByName('TheValue').AsInteger);
strings.Values[FieldByName('TheName')] := IntToStr(id);
Next;
end;
Close;
end;
end;
Getippt und nicht getestet.
Freundliche Grüße