Autor Beitrag
Martin99
Hält's aus hier
Beiträge: 4

Win 2000
D7 Prof, D8 Architect
BeitragVerfasst: Di 07.12.04 13:33 
Ich verwende BDP für den Datenzugriff auf eine MSSQL-Datenbank. Für einfache SQL-Statements funktioniert dies auch ohne Probleme. Wenn das SQL-Statement aber eine Subquery enthält, erhalte ich immer die Fehlermeldung:

SQL State: 42000, SQL Error Code: 0
Parameter information cannot be derived from SQL Statements with sub-select queries. Set parameter information before preparing command.

Irgendwie passt diese Meldung nicht, denn ich mache genau das, was ich gemäss dieser Meldung tun soll: :? Ich definiere zuerst den Commandtext (SQL-Statement), definiere danach die Parameter und füge sie zum Command-Objekt hinzu und schliesslich rufe ich MyCommand.Prepare auf.

Beispielcode:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
var
   MyCommand: BDPCommand;
   MyParm1, MyParm2: BDPParameter;
begin
   ...
   MyCommand.CommandText := 'Select * from Table1 where Field1 = ? and Field2 = ' +
                            '(Select Field1 from Table2 where Field2 = ?)';
   MyCommand.ParamCount := 2;
   MyParam1 := BDPParameter.Create; 
   MyParam1.BdpType := Borland.Data.Common.BdpType.String;
   MyParam1.BdpSubType := Borland.Data.Common.BdpType.Unknown;
   MyParam1.Value := 'ABC';
   MyParam1.ParamName := 'Table1_Field1';
   MyCommand.Parameters.Add(MyParam1);
   MyParam2 := BDPParameter.Create; 
   MyParam2.BdpType := Borland.Data.Common.BdpType.Int32;
   MyParam2.BdpSubType := Borland.Data.Common.BdpType.Unknown;
   MyParam2.Value := 2;
   MyParam2.ParamName := 'Table2_Field2';
   MyCommand.Parameters.Add(MyParam2);
   MyCommand.Prepare;


Was muss ich tun, damit das BDP-Commandobjekt auch Select-Statements mit Subqueries akzeptiert? :?:

Martin

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.