![]() |
Datenbank: Firebird • Version: 1.5 • Zugriff über: ZEOS Libary 7.1.2
Probleme mit SELECT und Strings
Hi,
Irgendwie scheine ich irgendetwas nicht ganz verstanden zu haben. Ich versuche mittels Zeos und firebird diese Abfrage zu Starten:
Code:
Die Ausführung sieht so aus
SELECT * FROM Tabelle WHERE MeinFeld = 'String'
Delphi-Quellcode:
Die Exception
Query.sql.clear;
Query.sql.add(...); Query.open; // hier tritt Dann der Fehler auf Query.first;
Code:
Ich habe irgendwie keine Ahnung ...
... Exception class $C0000005 with Message 'Access violaton at 0x1003ba5b: read of address 0x00000000'
Danke für Hilfe Puke EDIT: Passiert nur bei Strings!!! |
AW: Probleme mit SELECT und Strings
Es sihet eher danach aus, dass die Komponente nicht instantiiert ist.
|
AW: Probleme mit SELECT und Strings
Ich habe die Abfrage schon einmal auf Integer umgewandelt! Ohne Probleme...
Das kann nicht das Problem sein :( |
AW: Probleme mit SELECT und Strings
Ist das wirklich die Query? Oder soll das nur ein Beispiel sein?
|
AW: Probleme mit SELECT und Strings
Zitat:
|
AW: Probleme mit SELECT und Strings
Zeig' doch mal bitte, was Du hier genau machst:
Delphi-Quellcode:
Bei .add passiert doch was anderes als ... und das SQL-Statement steht bestimmt nicht genauso anstelle der ...
Query.sql.add(...);
Es könnte also z. B. so aussehen:
Delphi-Quellcode:
oder eher so?
Query.sql.add('SELECT * FROM Tabelle WHERE MeinFeld = ''String''');
Delphi-Quellcode:
oder vielleicht mit Parameter?
Query.sql.add('SELECT * FROM Tabelle WHERE MeinFeld = ' + QuotedStr('String'));
Delphi-Quellcode:
ok, dann fehlt in Deinem Beispiel noch das Befüllen des Parameters, dass sollte aber nicht zu dem auftretenden Fehler führen, sondern eher zu einem ungültigen SQL-Statement.
Query.sql.add('SELECT * FROM Tabelle WHERE MeinFeld = :Suchbegriff');
Wenn es mit Integer funktioniert und nicht mit Zeichenfolgen, dann liegt der Fehler genau in an der Stelle, die Du uns durch ... verheimlichst. Ohne eine Info über die drei ??? (achne, dass sind ja schöne Kinderbücher ;-)), also ohne den Inhalt der drei ... können wir bestenfalls die :glaskugel: bemühen, die Erfolgsaussichten tendieren jedoch gegen 0. |
AW: Probleme mit SELECT und Strings
Zitat:
|
AW: Probleme mit SELECT und Strings
Zitat:
|
AW: Probleme mit SELECT und Strings
Sollte eigentlich nur ein Beispiel sein:oops:. Na dann:
Delphi-Quellcode:
Ich gehe davon aus das die Exception vom Open ausgeht, weil beim durchgehen der Prozedur mit dem Debugger bleibt der dort hängen!
Function TFireBird.DoRelationExists(IN_Table: String; IN_Data: WideString; Var OUT_Index: Integer):Boolean;
Begin [...] // Wenn ich hier das StringFeld durch ein IntegerFeld ersetze und die Werte anpasse funktioniert es // einwandfrei. Nur der Sinn kommt dann abhanden ... SendSQlSelect('SELECT * FROM ' + IN_Table + ' WHERE ' + IN_Table + 'Name = ''' + IN_Data + ''''; [...] End; Procedure TFireBird.SendSQLSelect(IN_Command: String); Begin FdbquerySelect.SQL.Clear; FdbquerySelect.SQL.Add(IN_Command); FdbquerySelect.Open; // Debugger gibt hier den Fehler aus!!! FdbquerySelect.First; End; Das Objekt wird während des constructors instanziiert und bleibt bis zum destructor vorhanden. |
AW: Probleme mit SELECT und Strings
Mir fällt als erstes ein fehlendes Leerzeichen bzw. Punkt vor dem 'Namen =' auf. Dadurch wird der Inhalt von IN_TABLE mit 'Name' kombiniert. Heißt das Datenbankfeld wirklich so?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 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