Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild aus Access DB auslesen und verarbeiten - *.png (https://www.delphipraxis.net/183094-bild-aus-access-db-auslesen-und-verarbeiten-%2A-png.html)

Jens Hartmann 11. Dez 2014 05:33

Datenbank: Access • Version: 2007 • Zugriff über: TADOQuery

Bild aus Access DB auslesen und verarbeiten - *.png
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich habe aktuell folgendes Problem.

Ich habe in eine Access Datenbank in einer Tabelle Symbole eingebunden. Var. 1 als OLE-Objekt und Var. 2 als Anlage. Öffne ich diese Tabelle über ein TADOTable, ist zu mindestens mal das öffnen möglich. Ich möchte allerdings einen anderen Weg gehen. Dieser ist wie folgt aufgebaut.

TADOQuery - in welcher eine Tabelle abgefragt wird

SQL-Code:
SELECT * FROM MV_BMA
In dieser Query habe ich alle erforderlichen Felder hinzugefügt. Unter diesen Feldern befindet sich auch der Verweis auf die Tabelle "Symbole". Zusätzlich habe ich daher der Query über den Feldeditor ein "Neues Feld" hinzugefügt. Diese habe ich "Symbole" genannten und als "Nachschlagen" deklariert.

Über die Verbindung der Verweise (Primarykey etc.) möchte ich nun das passende *png zum jeweiligen Recordset laden.

Um die TADOTable zu öffnen, habe ich das
Delphi-Quellcode:
"Active := true"
in die
Delphi-Quellcode:
"Before Open"
und das
Delphi-Quellcode:
"Active := false"
in die
Delphi-Quellcode:
"AfterClose"
Methode der Query integriert.

Delphi-Quellcode:
procedure TDMReportData.qryRingTopologieBeforeOpen(DataSet: TDataSet);
begin
  tblSymbole.Active := true;
end;

procedure TDMReportData.qryRingTopologieAfterClose(DataSet: TDataSet);
begin
  tblSymbole.Active := false;
end;
Öffne ich jetzt die Query, kommt eine seltsame Fehlermeldung. Siehe Anhang.

Weiß jemand woran das liegt. Geht das mit Bilder als "Nachschlagen" nicht?

Danke und Gruß Jens

Perlsau 11. Dez 2014 06:51

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Die Fehlermeldung besagt: Wenn das Feld Symbole in der Tabelle Symbole die PNG-Grafiken enthält, kann es nicht als Primary Key zum Verknüpfen mit dem Feld Symbole in deiner Haupttabelle dienen. Hast du denn in der Tabelle Symbole auch einen Primary Key festgelegt?

Dejan Vu 11. Dez 2014 07:30

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Wie genau ist das Nachschlagefeld definiert?
Wie genau ist die Tabelle definiert, die die Bilder enthält?

Theoretisch wäre es denkbar, das Blob-Felder kein Lookupfeld sein können, da sie anders gehandhabt werden.

Kommt die Fehlermeldung wirklich, wenn man ein Blob-Feld als PK-Feld definiert?

Jumpy 11. Dez 2014 07:55

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Warum holst du die zusätzliche Spalte aus der anderen Tabelle nicht mit einem einfachen Left Join in die Query mit rein?

Sir Rufo 11. Dez 2014 08:27

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Genau so ist es, diese ganzen Blob Felder können dafür nicht verwendet werden.

Einzige Chance ist ein ClientDataSet, wo man alles zusammen/nacheinander hineinlädt

Dejan Vu 11. Dez 2014 09:07

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Zitat:

Zitat von Jumpy (Beitrag 1282992)
Warum holst du die zusätzliche Spalte aus der anderen Tabelle nicht mit einem einfachen Left Join in die Query mit rein?

Verbrät das nicht unnötig Speicher (bei mehrfacher Verwendung eines Bildes). Nicht, das wir nicht genug davon hätten... Ich mein ja nur.

Wäre schon schön, wenn man das -sagen wir es geschwollen- resourcensparender umsetzen könnte. Mit DevExpress z.B. geht das, weil dort das Lookup auch im Grid abgebildet werden kann bzw. sollte (mehr Möglichkeiten).

Jumpy 11. Dez 2014 09:56

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Zitat:

Zitat von Dejan Vu (Beitrag 1283008)
Zitat:

Zitat von Jumpy (Beitrag 1282992)
Warum holst du die zusätzliche Spalte aus der anderen Tabelle nicht mit einem einfachen Left Join in die Query mit rein?

Verbrät das nicht unnötig Speicher (bei mehrfacher Verwendung eines Bildes). Nicht, das wir nicht genug davon hätten... Ich mein ja nur.

Wäre schon schön, wenn man das -sagen wir es geschwollen- resourcensparender umsetzen könnte. Mit DevExpress z.B. geht das, weil dort das Lookup auch im Grid abgebildet werden kann bzw. sollte (mehr Möglichkeiten).

Wenn man mehr über den Zweck des Ganzen wüßte...
Die auch gefallenen Stichworte nachschlagen/Nachschlagefeld implizieren ja irgendwie eine 1 zu n Verbindung, wo dann ein Bild ggf. mehrfach verwendet würde und da hast du dann sicher recht.

Bei einer 1 zu 1 Verknüpfung, wo einfach nur die Bilder in eine andere Tabelle "ausgelagert" sind wäre das vielleicht egal.

Jenachdem mach es vllt. auch Sinn die reinen Daten ohne Bild zu holen und sich nur die Bilder die man braucht dazuzuladen.

Dejan Vu 11. Dez 2014 11:26

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Zitat:

Zitat von Jumpy (Beitrag 1283022)
...implizieren ja irgendwie eine 1 zu n Verbindung, wo dann ein Bild ggf. mehrfach verwendet würde und da hast du dann sicher recht.

Zitat:

Zitat von Dejan Vu (Beitrag 1283008)
...(bei mehrfacher Verwendung eines Bildes)...

;-)

Dessenungeachtet ist es schade, das gerade Bildchen nicht als Lookupfeld zu taugen scheinen.

Jumpy 11. Dez 2014 12:52

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Wie ist das denn eigentlich in Access selber, also wenn man das auch als Front-End benutzt? Kann man da die OLE-Felder direkt in ein Formular oder sowas einbinden?

Jens Hartmann 11. Dez 2014 13:27

AW: Bild aus Access DB auslesen und verarbeiten - *.png
 
Zitat:

Zitat von Jumpy
Warum holst du die zusätzliche Spalte aus der anderen Tabelle nicht mit einem einfachen Left Join in die Query mit rein?

Zitat:

Zitat von Sir Rufo
Genau so ist es, diese ganzen Blob Felder können dafür nicht verwendet werden.

Einzige Chance ist ein ClientDataSet, wo man alles zusammen/nacheinander hineinlädt

Mag sein, werde ich später mal probieren. Vielleicht Grundlegend nochmal beschrieben. Ich habe eine Tabelle mit Einträgen und jeweils einem Feld "Typ" sowie ein Tabelle "Symbole". In der Tabelle Symbole sind die Bilder gespeichert und über den Typ möchte ich diese zur Ergebnismenge holen. Es gibt ca. 20 Bilder, welche jedoch 10.000 mal benötigt werden.

Daher wollte ich das ganze recht einfach über eine Table Komponente lösen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:27 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