Habe die Delphi-Datenbank (BDE) in MySQL exportiert und benutze in Delphi die FireDAC-Komponenten zur Verbindung mit MySQL. Die normalen Funktionen funktionieren. Für einige Reports habe ich Parameter verwendet. Hier gibt es Probleme. Momentan versuche ich, ein SQL-Statement in der MyAdmin-Umgebung zum Laufen zu bekommen. Hierzu muss ich irgendwie auch die Parameter definieren. Meine Syntax sieht so aus:
SELECT * FROM Vertrag V, Haeuser H WHERE (V.Haus = H.Haus) AND (H.Haus = @Haus) AND (Mietende BETWEEN @MpLfdA AND @MpLfdE) ORDER BY V.MietBeginn
cmd.Parameters.AddWithValue("@Haus", "xyz");
Die letzte Zeile wird nicht akzeptiert bei der Ausführung. Was muss ich da ändern? Merci im Voraus.
Ich hatte mal ähnliche Probleme. Geändert hatte ich es auf cmd.Parameters.Add("@Haus",MySqlDbType.VarChar).Value = "xyz" Ist aber keine Garantie, dass das bei Dir auch funzt. Wenn nicht, definiere mal bitte genauer, was er nicht akzeptiert.
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'cmd.Parameters.Add("@Haus",MySqlDbType.VarChar).Value = "xyz"
In meinem DELPHI-Programm werden alle SQL-Statements akzeptiert, auch die Parameter-Festlegungen. Bei der Ausführung überspringt das Programm dann die Sequenz, wo dieser VIEW eingesetzt ist, ... while not FData.V_MPI_Lfd.EOF do ... vermutlich deshalb, weil dier VIEW in der Datenbank fehlerhaft ist und keine Datensätze vorhanden sind.
Da liegt offenbar ein Syntax-Fehler in Deinem Quellcode vor. Ich vermute stark, Du hast ein schließendese Gänsefüßchen vergessen. Der Parameter-Befehl scheint im SQL-Command noch zu stecken - damit kann MySQL natürlich nichts anfangen.
Bei Dir scheint der Parameter noch im SQL-Command zu stehen. Vielleicht fehlt nur ein schließendes Gänsefüßchen? Mit Delphi bin ich nicht so firm, aber solche Geschichten schauen eigentlich in allen .Net-Sprachen ähnlich aus (hier Visual Basic.Net):
cmd.CommandText = "SELECT * FROM Vertrag V, Haeuser H " & _ "WHERE (V.Haus = H.Haus) AND (H.Haus = @Haus) " & _ "AND (Mietende BETWEEN @MpLfdA AND @MpLfdE) " & _ "ORDER BY V.MietBeginn" cmd.Parameters.AddWithValue("@Haus", "xyz")
cmd.Parameters.Add("@Haus",MySqlDbType.VarChar).Value = "xyz"
Ist aber keine Garantie, dass das bei Dir auch funzt. Wenn nicht, definiere mal bitte genauer, was er nicht akzeptiert.