Zitat von
marabu:
Nein, @lastid - 2 wäre richtig.
Hai marabu,
so würde man denken
Aber wenn ich in deinem Beispiel oben:
Parameters.CreateParameter('@lastid', ftInteger, pdInputOutput, 0, 0);
eintrage (pdOutput durch pdInputOutput ersetzt) funktioniert es trotzdem ohne Fehler.
Wo ist der Unterschied ob das pdInputOutput via CreatParameter gesetzt wird oder ob es aus der SP kommt?
Aber irgend wie muss es daran liegen. Wenn ich meinen Code so ändere funktioniert es. Allerdings nur beim ersten Aufruf. Beim nächsten kommt eine Zugriffsverletzung in der sqloledb.dll
Delphi-Quellcode:
procedure TMain_Form.Button1Click(Sender: TObject);
begin
with DataModule1.sp_benutzer_neu do
begin
Parameters.Refresh;
Parameters.ParamByName('@lastID').Direction := pdOutput; // Direction für @lastID setzen.
Parameters.ParamValues['@vorname'] := Edit1.Text;
Parameters.ParamValues['@nachname'] := Edit2.Text;
Parameters.ParamValues['@anmeldename'] := Edit3.Text;
Parameters.ParamValues['@kennwort'] := Edit4.Text;
Prepared := True;
ExecProc;
Edit5.Text := Parameters.ParamValues['@lastID'];
end;
end;
Ich habe ja kein Problem die Parameter im Code zu definieren. Aber ich würde gerne verstehen warum es zu diesem Verhalten kommt.
Stephan B.
"Lasst den Gänsen ihre Füßchen"