![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: BDE
SQL Fehler too many actual parameter
Hallo,
bei kleineren Programmen arbeite ich immer noch mit der BDE und Paradox, oder MyBase - ist halt schnell und bequem. (Delphi 7 Enterprise) Bei einer Datenbank X.db mit 25 Feldern funktionieren SQL Abfragen wie: SELECT * FROM X.db und SELECT 'Vorname', 'Nachname' FROM X.db einwandfrei. Sobald ich aber dem SELECT mehr als 12 Feldnamen hinzufüge erhalte ich die Fehlermeldung "too many actual parameters". Hat die BDE oder das Local SQL von Delphi hier eine Begrenzung? Wenn ja, läßt sich diese aufheben? Ich könnte ja mit SELECT * arbeiten und die erhaltenen Daten dann auf die benötigten Felder reduzieren - aber das ist eine unelegante Bastelei. Dank im Voraus für jede Antwort. |
Re: SQL Fehler too many actual parameter
Zitat:
Richtig:
SQL-Code:
Feldnamen, die ein Problem darstellen werden in doppelte Anführungszeichen gesetzt.
SELECT Vorname, Nachname, "31Datum" FROM X.db
Generell sollte man aber die problematischen Feldnamen meiden wie die Pest, so dass man die doppelten Anführungszeichen nicht braucht. Hier noch ein Beispiel, wie man einfache Anführungszeichen in der Feldliste benützen kann:
SQL-Code:
Hier werden 2 Tabellen mit UNION ALL zu einem Ergebnis vereint.
SELECT *, 'A' AS Satzart FROM TabelleA
UNION ALL SELECT *, 'B' AS Satzart FROM TabelleB Damit man noch weiss, welche Datensätze aus welcher Tabelle stammen, wird einfach noch ein künstliches Feld (Name: Satzart) hinzugeführt. |
Re: SQL Fehler too many actual parameter
Dank für die schnelle Antwort.
Natürlich gehören in die SQL keine Anführungszeichen. Die Anführungszeichen waren versehentlich nur in meinem verkürztem Text der Anfrage. Mein echter Code sah so aus:
Delphi-Quellcode:
Da waren durchs Kopieren bei einem Feld Anführungszeichen hineingerutscht.
SQL.Add('SELECT Hr.ZUNAME, Hr.VORNAME, Hr.STRASSE, Hr.PLZ, Hr.ORT,');
SQL.Add('Hr.Titel, Hr.JAHRGANG, Hr.GebDat, Hr.GESCHL, Hr.NR, Hr.INFO'); SQL.Add('Hr.BANK, 'Hr.KTOINHABER', Hr.EMAIL'); SQL.Add('FROM "' + DataPath + 'hr.DB" Hr'); if HrIsActive then begin SQL.Add('INNER JOIN "' + SemPath + 'Beleg.DB" Beleg'); SQL.Add('ON (Hr.NR = Beleg.NR)'); end; Auch bei mehrfachem Kontrollieren habe ich den Fehler stets überlesen. Schon lustig: Durch meine fehlerhafte Anfrage und der Antwort darauf habe ich den Fehler nun sofort lokalisiert. Nochmals Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz