![]() |
Datenbank: sqlite • Version: ? • Zugriff über: FDQuery
Feld nicht gefunden obwohl vorhanden!
Hallo,
bei folgendem Code (Ausschnitt) wird das Feld "zugang" beim Lesen nicht gefunden, obwohl vorher beschrieben wurde!
Delphi-Quellcode:
Ich habe keine Ahnung, wo ich suchen könnte!
FDQuery.SQL.Text := 'Select * from Settings';
FDQuery.Open; if FDQuery.RecordCount = 0 then begin FDQuery.Append; FDQuery.Edit; FDQuery.FieldByName('zugang').AsString := '???'; // Beschreiben ohne Fehlermeldung FDQuery.Post; end; //... hier werden noch andere Felder gelesen // Zugang lesen settings.zugang := FDQuery.FieldByName('zugang').AsString; // <-- hier kommt Fehler, das Feld "zugang" wurde nicht gefunden Wenn ich in die DB schaue ist die Spalte zugang da und mit ??? gefüllt! Tips? Ciao Stefan |
AW: Feld nicht gefunden obwohl vorhanden!
Ändere den Source mal wie folgt:
Delphi-Quellcode:
Wenn du den Fehler nicht mehr bekommst, ist der Fehler in den Bereich, wo du noch was mit mit den anderen Feldern machst.
FDQuery.SQL.Text := 'Select * from Settings';
FDQuery.Open; if FDQuery.RecordCount = 0 then begin FDQuery.Append; FDQuery.Edit; FDQuery.FieldByName('zugang').AsString := '???'; // Beschreiben ohne Fehlermeldung FDQuery.Post; end; settings.zugang := FDQuery.FieldByName('zugang').AsString; //... hier werden noch andere Felder gelesen Falls der Fehler aber immer noch da ist, kann ich spontan nicht sagen, was das sein kann. |
AW: Feld nicht gefunden obwohl vorhanden!
Vielleicht tritt der Fehler auch bei der Variable settings auf.
|
AW: Feld nicht gefunden obwohl vorhanden!
Zitat:
|
AW: Feld nicht gefunden obwohl vorhanden!
Zitat:
|
AW: Feld nicht gefunden obwohl vorhanden!
settings ist nur ein Record...
Jasocul hat recht! Bei den Feldern, welche vorher gelesen werden, ist auch eines ala
Delphi-Quellcode:
settings.passwort := Decrypt(FDQuery.FieldByName('passwort').AsString);
wobei Decrypt nur eine einfache Entschlüsselungsroutine ist, die an dem Feld nichts tut! Neue Variante:
Delphi-Quellcode:
Und der Fehler ist weg :-)settings.passwort := FDQuery.FieldByName('passwort').AsString; settings.zugang := FDQuery.FieldByName('zugang').AsString; //... weitere Felder lesen settings.passwort := Decrypt(settings.passwort); Danke für den Denkanstoß! Ciao Stefan Nachtrag: Der Code vom Anfang des Threads hat jahrelang funktioniert, erst nach einer Änderung im Programm an einer ganz anderen Stelle (Optik, die nichts mit dem DB-Handling zu tun hat!) kam der beschriebene Fehler! |
AW: Feld nicht gefunden obwohl vorhanden!
Das würde ich nicht ignorieren!
Du solltest genau prüfen, warum du diesen Fehler hattest. Wenn das Decrypt den Fehler verursacht hat, macht es auch irgendwas mit dem Feld, der Query, ... . Dann kann es beim nächsten Mal wieder zu Problemen kommen. Oder der Fehler liegt doch noch woanders und es ist nur zufällig durch deine Änderung korrigiert worden. In dem Fall können Programmänderungen an dieser Stelle zu weiteren unvorhersehbaren Fehlern führen. Vielleicht gibt es irgendwelche Ereignisse (z.B. OnChange), die dort etwas auslösen. |
AW: Feld nicht gefunden obwohl vorhanden!
Hallo,
das sehe ich auch so. Versuche lieber, den Fehler zu finden. |
AW: Feld nicht gefunden obwohl vorhanden!
Vielleicht kommt dein Decrypt ja nicht mit Sonderzeichen klar. Nur so als Hinweis....
|
AW: Feld nicht gefunden obwohl vorhanden!
Nein, das Decrypt hat da keine Probleme!
Ich vermute der Compiler hat (scheinbar nur manchmal und warum auch immer) ein Problem den DB-Zugriff als Parameter einer Funktion weeiterzugeben:
Delphi-Quellcode:
settings.passwort := Decrypt(FDQuery.FieldByName('passwort').AsString);
Zitat:
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 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 by Thomas Breitkreuz