Hi,
ich habe folgendes Problem:
Ich arbeite mit der Community Editon Delphi 10.4 von Emarcadero unter Windows 11.
in meinem Projekt benutze ich eine sqlite Datenbank. Die Tabellen sind via Datamodule eingebunden.
In einer der Tabellen speichere ich Bilder und verknüpfe die später mit einer anderen Tabelle, die Tags für die Bilder enthält.
Wenn ich ein Bild im Projekt auswähle, habe ich keine Probleme dieses in der Tabelle zu finden und alles läuft normal.
Wenn ich ein Bild im Projekt auswähle, dass noch nicht in der Tabelle 'pics' vorhanden ist, bekomme ich nach dem SELECT-Statement beim OPEN den Fehler
"QPics: Type mismatch for field 'id_pics', expecting: LargeInt actual: WideMemo. "
Wie gesagt, mit vorhandenem Bild läuft die Abfrage völlig normal. Das heißt, es kann nicht an der Datenbank an sich liegen. Die ist zum Zeitpunkt des OPEN geöffnet, aktiv etc...
Hier mal ein Auszug aus dem Sourcecode:
//images available?
if ListBox1.Count > 0 then //Das Bild wird beim Programmstart ausgewaehlt und in eine Listbox geladen
begin
if Datmod.Datamodule1.SQLConn.Connected = false then FSlideShow.open_SQLConn;
l_picname:= ListBox1.Items[ListBox1.ItemIndex];
//get picID for selected image from ListBox
with Datmod.Datamodule1.QPics do
begin
with SQL do
begin
CLEAR;
ADD('SELECT * FROM pics');
ADD('WHERE picname = icname');
Params.ParamByName('picname').AsString := l_picname;
end;
Open; // Hier kommt der Fehler - eine Abfrage auf IsEmpty ist schon nicht mehr moeglich
if Datmod.Datamodule1.Qpics.IsEmpty then
showmessage('No records found!')
Hier die Datentypen der Tabelle pics:
QPics: TSQLQuery;
QPicsid_pics: TLargeintField;
QPicspicname: TWideMemoField;
QPicspicdate: TWideMemoField;
QPicsfavorite: TWideMemoField;
QPicsremarks: TWideMemoField;
QPicsdrive: TLargeintField;
Der Fehler kommt übrigens bei allen anderen Tabellen der Datenbank bei gleicher Situation (Element nicht in der DB vorhanden) vor.
Es muss doch der Versuch möglich sein, die Tabelle mit dem ausgewählten Bild zu lesen und dann zu checken, ob das Bild vorhanden ist oder nicht, oder?
Ich hoffe alle notwendigen Informationen mitgegeben zu haben und natürlich, dass mir hier geholfen werden kann.
Vielen Dank
Andreas
ich habe folgendes Problem:
Ich arbeite mit der Community Editon Delphi 10.4 von Emarcadero unter Windows 11.
in meinem Projekt benutze ich eine sqlite Datenbank. Die Tabellen sind via Datamodule eingebunden.
In einer der Tabellen speichere ich Bilder und verknüpfe die später mit einer anderen Tabelle, die Tags für die Bilder enthält.
Wenn ich ein Bild im Projekt auswähle, habe ich keine Probleme dieses in der Tabelle zu finden und alles läuft normal.
Wenn ich ein Bild im Projekt auswähle, dass noch nicht in der Tabelle 'pics' vorhanden ist, bekomme ich nach dem SELECT-Statement beim OPEN den Fehler
"QPics: Type mismatch for field 'id_pics', expecting: LargeInt actual: WideMemo. "
Wie gesagt, mit vorhandenem Bild läuft die Abfrage völlig normal. Das heißt, es kann nicht an der Datenbank an sich liegen. Die ist zum Zeitpunkt des OPEN geöffnet, aktiv etc...
Hier mal ein Auszug aus dem Sourcecode:
//images available?
if ListBox1.Count > 0 then //Das Bild wird beim Programmstart ausgewaehlt und in eine Listbox geladen
begin
if Datmod.Datamodule1.SQLConn.Connected = false then FSlideShow.open_SQLConn;
l_picname:= ListBox1.Items[ListBox1.ItemIndex];
//get picID for selected image from ListBox
with Datmod.Datamodule1.QPics do
begin
with SQL do
begin
CLEAR;
ADD('SELECT * FROM pics');
ADD('WHERE picname = icname');
Params.ParamByName('picname').AsString := l_picname;
end;
Open; // Hier kommt der Fehler - eine Abfrage auf IsEmpty ist schon nicht mehr moeglich
if Datmod.Datamodule1.Qpics.IsEmpty then
showmessage('No records found!')
Hier die Datentypen der Tabelle pics:
QPics: TSQLQuery;
QPicsid_pics: TLargeintField;
QPicspicname: TWideMemoField;
QPicspicdate: TWideMemoField;
QPicsfavorite: TWideMemoField;
QPicsremarks: TWideMemoField;
QPicsdrive: TLargeintField;
Der Fehler kommt übrigens bei allen anderen Tabellen der Datenbank bei gleicher Situation (Element nicht in der DB vorhanden) vor.
Es muss doch der Versuch möglich sein, die Tabelle mit dem ausgewählten Bild zu lesen und dann zu checken, ob das Bild vorhanden ist oder nicht, oder?
Ich hoffe alle notwendigen Informationen mitgegeben zu haben und natürlich, dass mir hier geholfen werden kann.
Vielen Dank
Andreas
Comment