Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Feld nicht gefunden obwohl vorhanden! (https://www.delphipraxis.net/198913-feld-nicht-gefunden-obwohl-vorhanden.html)

skoschke 10. Dez 2018 12:47

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:
    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
Ich habe keine Ahnung, wo ich suchen könnte!
Wenn ich in die DB schaue ist die Spalte zugang da und mit ??? gefüllt!

Tips?

Ciao
Stefan

Jasocul 10. Dez 2018 13:01

AW: Feld nicht gefunden obwohl vorhanden!
 
Ändere den Source mal wie folgt:
Delphi-Quellcode:
    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
Wenn du den Fehler nicht mehr bekommst, ist der Fehler in den Bereich, wo du noch was mit mit den anderen Feldern machst.
Falls der Fehler aber immer noch da ist, kann ich spontan nicht sagen, was das sein kann.

mkinzler 10. Dez 2018 13:03

AW: Feld nicht gefunden obwohl vorhanden!
 
Vielleicht tritt der Fehler auch bei der Variable settings auf.

Jasocul 10. Dez 2018 13:05

AW: Feld nicht gefunden obwohl vorhanden!
 
Zitat:

Zitat von mkinzler (Beitrag 1420465)
Vielleicht tritt der Fehler auch bei der Variable settings auf.

War auch mein erster Gedanke. Aber dann hätte ja schon der Compiler gemeckert.

mkinzler 10. Dez 2018 13:07

AW: Feld nicht gefunden obwohl vorhanden!
 
Zitat:

War auch mein erster Gedanke. Aber dann hätte ja schon der Compiler gemeckert.
Es kommt darauf an, was hinter settings steckt.

skoschke 10. Dez 2018 13:39

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:

settings.passwort := FDQuery.FieldByName('passwort').AsString;
settings.zugang := FDQuery.FieldByName('zugang').AsString;
//... weitere Felder lesen
settings.passwort := Decrypt(settings.passwort);
Und der Fehler ist weg :-)

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!

Jasocul 10. Dez 2018 14:11

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.

hoika 10. Dez 2018 16:07

AW: Feld nicht gefunden obwohl vorhanden!
 
Hallo,
das sehe ich auch so.
Versuche lieber, den Fehler zu finden.

scrat1979 10. Dez 2018 19:24

AW: Feld nicht gefunden obwohl vorhanden!
 
Vielleicht kommt dein Decrypt ja nicht mit Sonderzeichen klar. Nur so als Hinweis....

skoschke 12. Dez 2018 06:13

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:

Vielleicht gibt es irgendwelche Ereignisse (z.B. OnChange), die dort etwas auslösen.
Nein, gibt es definitiv nicht!

Ciao
Stefan


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz