![]() |
Datenbank: SQLite • Version: 3 • Zugriff über: Lazarus, SQLite3Connection
DB neu einlesen?
Ich habe in meiner DB eine neue Spalte hinzugefügt und frage diese nun mit meiner Anwendung ab, die diese gibt mir eine Fehlermeldung aus:
Code:
Diese Spalte ist aber in der DB definitiv vorhanden und gefüllt. Erstellt ist diese auch richtig.
EDatabaseError
no such column: tbmain.number Ich vermute, dass mein Lazarus irgendwie noch an irgendwelche alte DB zugreift, aber kann das sein? Habe nur eine DB im Verzeichnis. Danke falls mir jemand weiter helfen kann. |
AW: DB neu einlesen?
Hier der ganze Code:
Delphi-Quellcode:
// Aufgaben laden
procedure TForm1.LoadJobslistByStart(aFlag: Integer; aListView: TListView); var MyItem: TListItem; n: Integer; begin try aListView.Items.BeginUpdate; aListView.Clear; SQLQuery1.Close; SQLQuery1.SQL.Text := 'SELECT tbmain.id_tbmain, ' + 'tbmain.number, ' // <------- hier die Problemstelle + 'tbmain.title, ' + 'tbmain.start, ' + 'tbmain.ende, ' + 'tbcategory.category, ' + 'tbprocessowner.processowner, ' + 'tbpriority.priority, ' + 'tbstatus.status, ' + 'tbplace.place ' + 'FROM tbmain ' + 'LEFT JOIN tbcategory ON tbmain.fk_category_id=tbcategory.id_tbcategory ' + 'LEFT JOIN tbprocessowner ON tbmain.fk_processowner_id=tbprocessowner.id_tbprocessowner ' + 'LEFT JOIN tbpriority ON tbmain.fk_priority_id=tbpriority.id_tbpriority ' + 'LEFT JOIN tbstatus ON tbmain.fk_status_id=tbstatus.id_tbstatus ' + 'LEFT JOIN tbplace ON tbmain.fk_place_id=tbplace.id_tbplace WHERE flag = '+ IntToStr(aFlag) +''; SQLQuery1.Open; while not SQLQuery1.Eof do begin MyItem := aListView.Items.Add; MyItem.Data := Pointer(SQLQuery1.FieldByName('id_tbmain').AsInteger); MyItem.Caption := IntToStr(SQLQuery1.FieldByName('number').AsInteger); MyItem.SubItems.Add(SQLQuery1.FieldByName('title').AsString); MyItem.SubItems.Add(SQLQuery1.FieldByName('priority').AsString); MyItem.SubItems.Add(DateToStr(SQLQuery1.FieldByName('start').AsDateTime)); // Prüfen, ob Datenfeld belegt if not SQLQuery1.FieldByName('ende').IsNull then MyItem.SubItems.Add(DateToStr(SQLQuery1.FieldByName('ende').AsDateTime)) else MyItem.SubItems.Add(''); MyItem.SubItems.Add(SQLQuery1.FieldByName('place').AsString); MyItem.SubItems.Add(SQLQuery1.FieldByName('category').AsString); MyItem.SubItems.Add(SQLQuery1.FieldByName('processowner').AsString); MyItem.SubItems.Add(SQLQuery1.FieldByName('status').AsString); SQLQuery1.Next; end; aListView.Items.EndUpdate; except on E: Exception do MessageDlg('Die Aufgaben konnten nicht gelesen werden!' + #13 + #13 + E.ClassName + #13 + E.Message, mtError, [mbOk], 0); end; end; |
AW: DB neu einlesen?
|
AW: DB neu einlesen?
Zitat:
trotzdem würde ich mit
Code:
mal überprüfen welche Spalten nun wirklich vorhanden sind - denn die Definition ist ja vollkommen korrekt (?).
select * from tbmain
Gruß K-H |
AW: DB neu einlesen?
Ist NUMBER kein reserviertes Token in SQLite?
Grüße Mikhal |
AW: DB neu einlesen?
Laut
![]() |
AW: DB neu einlesen?
Das Problem hat sich gelöst, es lag am falschem Verzeichnis. Hat mir aber gut getan, habe noch nie an einem Tag so viel über DBken und Lazarus gelernt. :thumb:
Danke für eine Tipps. |
AW: DB neu einlesen?
Zitat:
|
AW: DB neu einlesen?
Schreib doch das SQL über den Objektinspektor (genauer: den Property-Editor) fest in die Query und benutze für die variablen Werte Parameter. Du musst dann zur Laufzeit nur noch die Parameter befüllen, das geht um Einiges schneller.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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