Einzelnen Beitrag anzeigen

Hobbycoder

Registriert seit: 22. Feb 2017
961 Beiträge
 
#1

[FMX] FDQuery.FieldByName leifert falschen String

  Alt 25. Sep 2019, 18:07
Datenbank: SQLite • Version: 3 • Zugriff über: FireDAC
Hi,

ich habe unter FMX ein Query welches eine Tabelle einer SQLite-DB abfragt. Es existiert lediglich eine Zeile in der DB.
Laut DB-Viewer befindet sich im Feld "username" ein String. (Siehe Bild DBViewer.png im Anhang)

In der Routine liefert mir FieldByName('username').AsString aber immer '0' zurück, und ich kann's mir nicht erklären. Mir ist auch nicht klar, wo er sich die '0' herholt. Wenn er irgendwas nicht lesen oder finden kann, dann sollte nur ein Leerstring kommen.

ich habe das Feld "username" schon mal umbenannt in "loginname" (vielleicht Schlüsselwort der DB), aber das änderte nichts.
Eigentlich sollte das Verhalten gar nicht möglich sein. Es tritt keine Exception auf.

Hier mal die Routine:
Delphi-Quellcode:
function TfrmTPMain.GetUsernameFromDB: string;
var
  q: TFDQuery;
begin
  Result:='';
  q:=TFDQuery.Create(nil);
  try
    q.Connection:=TPDatenmodul.conLocalsqlConnection;
    q.SQL.Text:='select * from global';
    q.Active:=True;
    if q.RecordCount>0 then
    begin
      q.First;
      Result:=q.FieldByName('loginname').AsString;
    end;
    q.Active:=False;
  finally
    q.Free;
  end;
end;
Im Anhang habe ich noch mal Screenshots vom Debug-Screen und der DB. Da kann man deutlich sehen, was q.FieldByName('loginname').AsString zurückliefert und was in der DB steht.

Wie gesagt, ich kann's mir nicht erklären.
Miniaturansicht angehängter Grafiken
code.png   dbviewer.png  
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat