![]() |
AW: Fehler in SQL-Syntax
Hi TigerLilly
Zitat:
Gruss Delbor |
AW: Fehler in SQL-Syntax
Wie gesagt, gib ALLE Exceptions aus, nicht nur EDatabaseError.
|
AW: Fehler in SQL-Syntax
Der Rückgabewert der Funktion ist nur False, wenn ein Datenbankfehler geworfen wird. In anderen Fällen ist Result entweder True oder undefiniert.
(Eigentlich müsste es eine entsprechende Compilermeldung geben - Rückgabewert könnte undefiniert sein. o. ä .) Wenn FDSQLiteConnection.ExecSQL(ASQL) ausgeführt wird und keine Exception fliegt, ist der Rückgabewert der Funktion true, unabhängig davon, ob das erwartete erledigt wurde oder nicht.
Delphi-Quellcode:
function TDMLSQLite.ExecuteSQL(ASQL : String) : Boolean;
begin Result := False; try FDSQLiteConnection.ExecSQL(ASQL); // Hier sollte man noch prüfen, ob das, was in ASQL gemacht werden // soll, auch wirklich gemacht wurde. // Bei Insert, Update und Delete findet man die Anzahl der // Änderungen in RowsAffected. // Bei 'ner Tabelle, die erstellt werden sollte, könnte man noch ein // select * from tabelle // hier ausführen und nur, wenn das erfolgreich ist folgt: Result := True; except on E: EDatabaseError do begin ShowMessage('Fehler beim Ausführen des Statements:' + #13#13 + ASQL + #13#13 + E.Message); end; end; end; |
AW: Fehler in SQL-Syntax
Liste der Anhänge anzeigen (Anzahl: 1)
Hi zusammen
Ich hab mal folgendes versucht:
Delphi-Quellcode:
Das Resultat ist im Anhang ersichtlich - zum Ziel führts leider nicht.
function TDMLSQLite.ExecuteSQL(ASQL : String) : Boolean;
var ReportList: TStringlist; begin ReportList := TStringlist.Create; try try FDSQLiteConnection.ExecSQL(ASQL); FDSQLiteConnection.GetInfoReport(ReportList); if FileExists('M:\SQLite-DB Corner\ContentmasterData\GetInfoReport') then SQLiteTestMain.Memo1.Lines.LoadFromFile('M:\SQLite-DB Corner\ContentmasterData\GetInfoReport'); SQLiteTestMain.Memo1.Lines.Add('********************'); SQLiteTestMain.Memo1.Lines.AddStrings(ReportList); SQLiteTestMain.Memo1.Lines.SaveToFile('M:\SQLite-DB Corner\ContentmasterData\GetInfoReport'); Result := True; except on E: EDatabaseError do begin ShowMessage('Fehler beim Ausführen des Statements:' + #13#13 + ASQL + #13#13 + E.Message); Result := False; end; end; finally Reportlist.Free; end; end; Ich werde mal die Sache mit dem Select testen. |
AW: Fehler in SQL-Syntax
Die genaue Fehlermeldung lautet: Unknown DATABASE(!) tbl_Html.
Das heisst, die Tabelle wird angelegt, sonst hättest du eine Fehlermeldung bekommen, aber dort, wo du auf die Tabelle zugreifst ist das Problem. Dort wird der Tabellenname als Datenbankname verstanden. Zeig mal das SQL-Statement, in dem du das erste mal auf die Tabelle zugreifen möchtest. |
AW: Fehler in SQL-Syntax
Guten Morgen, TigerLilly
Das ist das Statement:
Delphi-Quellcode:
Zu den auskommentierten Zeilen:
function TDMLSQLite.CreateIndexTbl_Html_Tbl_CSS1 :String; // Index tbl_Html-tbl_CSS1 ContentMasterData.
var SQLString: String; begin SQLString := 'CREATE INDEX tbl_Html.fk_tbl_Html_tbl_CSS1_idx'+ ' ON tbl_Html (tbl_CSS_idCSS)'; Result := SQLString; end; Der erste Ausdruck diente mir dazu, den Überblick beim Aufteilen des Scripts in einzelne Funktionen zu behalten Der zweite Ausdruck: anfänglich hatte ich die DB explizit adressiert, was aber SQLite offenbar nicht akzeptiert. Heute morgen fiel mir ein: Als ich in den letzten Tagen in der Embarcadero-Help u.a. durch die Themen zu TFDScripts blätterte, fiel mir auf, dass nach dem Aufruf von TFDScripts.executeall immer auch TFDScripts.validateall aufgerufen wurde. Dementsprechend bin ich jetzt dabei, in dieser Richtung zu recherchieren. Gruss Delbor |
AW: Fehler in SQL-Syntax
Das sollte besser so lauten:
CREATE INDEX fk_tbl_Html_tbl_CSS1_idx ON tbl_Html (tbl_CSS_idCSS) Siehe hier: ![]() Das, was in der Grafik als Schema-Name bezeichnet wird, ist NICHT der Datenbankname. ![]() |
AW: Fehler in SQL-Syntax
Hi TigerLilly
Vielen Dank! Nachdem ich dies korrigiert hatte, wurde zwar noch einiges angemeckert, immer so im Stil "in der Nähe von". Nebst zuwenigen waren dies auch zuviele Leerzeichen etc. Gruss Delbor |
AW: Fehler in SQL-Syntax
:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 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