Hallo,
ich komme mit dem nativen Command Objekt nicht weiter.
"...EOle Execption.
Fehler bei einem aus mehreren Schritten bestehenden OLE DB Vorgang. Prüfen Sie die einzelnen OLE DB Statuswerte..."
<PRE>
var SQLTxT : string;
aCon : _Connection;
// aRS : _RecordSet;
aCom : _Command;
vRows : OLEVariant;
vKennzeichen : Variant;
aParam : _Parameter;
[...]
SQLTxT := 'SELECT Fahrzeuge.ID, Fahrzeuge.Kennzeichen FROM Fahrzeuge'+
'WHERE FAhrzeuge.ID = : AbfrageParameter';
CS := Datamodule1.ADOConnection1.ConnectionString;
aCon := CoConnection.create;
aCon.CursorLocation := adUseClient;
aCon.Open(CS, '', '', adConnectUnspecified);
aCom := CoCommand.create;
with aCom do
begin
Set_ActiveConnection(aCon);
CommandType := adCmdText;
Set_CommandText(SQLTxT);
//InputParameter
aParam := CreateParameter('', adInteger, adParamInput, 10,
EmptyParam);
Parameters.Append(aParam);
Parameters[0].value := AbfrageParam;//ist eine ID aus dem Programm
//OutputParameter
aParam := CreateParameter('Kennzeichen', adVarChar,
adParamOutput,50, vKennzeichen);
Parameters.Append(aParam);
Execute(vRows, EmptyParam, dExecuteNoRecords);
end;
Edit1.text := aCom.Parameters.Item[1].Value;
</PRE>
Wenn ich nur den InputParameter verwende funktioniert alles prima aber wenn ich den Outputparameter noch dazuhaben will bekomme ich die obige Fehlermeldung.
Geht das vielleicht gar nnicht mit simplem "adCmdText"? Muß das eventuell eine Stored Procedure sein? Ich habe zwar gelesen das die Parameter Direction (adParamInput, adParamOutput) mit normalen SQL Abfragen UND Stored Procedures funktionieren aber ein Beispiel mit einer normalen Abfrage und einem Ein- und einem Ausgabeparameter nicht gefunden.
Sinn des ganzen soll es sein mal zu probieren wie schnell die Ausgabe mit Outputparametern anstatt mit einem Command(Recordset) sind. Die Beispiele aus dem Buch von Herrn Kosch sind mir bekannt aber auch dort werden immer nur Stored Procedure verwendet.
Viele Grüße<BR>
Walter
ich komme mit dem nativen Command Objekt nicht weiter.
"...EOle Execption.
Fehler bei einem aus mehreren Schritten bestehenden OLE DB Vorgang. Prüfen Sie die einzelnen OLE DB Statuswerte..."
<PRE>
var SQLTxT : string;
aCon : _Connection;
// aRS : _RecordSet;
aCom : _Command;
vRows : OLEVariant;
vKennzeichen : Variant;
aParam : _Parameter;
[...]
SQLTxT := 'SELECT Fahrzeuge.ID, Fahrzeuge.Kennzeichen FROM Fahrzeuge'+
'WHERE FAhrzeuge.ID = : AbfrageParameter';
CS := Datamodule1.ADOConnection1.ConnectionString;
aCon := CoConnection.create;
aCon.CursorLocation := adUseClient;
aCon.Open(CS, '', '', adConnectUnspecified);
aCom := CoCommand.create;
with aCom do
begin
Set_ActiveConnection(aCon);
CommandType := adCmdText;
Set_CommandText(SQLTxT);
//InputParameter
aParam := CreateParameter('', adInteger, adParamInput, 10,
EmptyParam);
Parameters.Append(aParam);
Parameters[0].value := AbfrageParam;//ist eine ID aus dem Programm
//OutputParameter
aParam := CreateParameter('Kennzeichen', adVarChar,
adParamOutput,50, vKennzeichen);
Parameters.Append(aParam);
Execute(vRows, EmptyParam, dExecuteNoRecords);
end;
Edit1.text := aCom.Parameters.Item[1].Value;
</PRE>
Wenn ich nur den InputParameter verwende funktioniert alles prima aber wenn ich den Outputparameter noch dazuhaben will bekomme ich die obige Fehlermeldung.
Geht das vielleicht gar nnicht mit simplem "adCmdText"? Muß das eventuell eine Stored Procedure sein? Ich habe zwar gelesen das die Parameter Direction (adParamInput, adParamOutput) mit normalen SQL Abfragen UND Stored Procedures funktionieren aber ein Beispiel mit einer normalen Abfrage und einem Ein- und einem Ausgabeparameter nicht gefunden.
Sinn des ganzen soll es sein mal zu probieren wie schnell die Ausgabe mit Outputparametern anstatt mit einem Command(Recordset) sind. Die Beispiele aus dem Buch von Herrn Kosch sind mir bekannt aber auch dort werden immer nur Stored Procedure verwendet.
Viele Grüße<BR>
Walter
Comment