AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bild aus Access DB auslesen und verarbeiten - *.png

Bild aus Access DB auslesen und verarbeiten - *.png

Ein Thema von Jens Hartmann · begonnen am 11. Dez 2014 · letzter Beitrag vom 12. Dez 2014
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#1

Bild aus Access DB auslesen und verarbeiten - *.png

  Alt 11. Dez 2014, 06:33
Datenbank: Access • Version: 2007 • Zugriff über: TADOQuery
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

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 "Active := true" in die "Before Open" und das "Active := false" in die "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
Miniaturansicht angehängter Grafiken
fehler.jpg  
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

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

  Alt 11. Dez 2014, 07:51
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?
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#3

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

  Alt 11. Dez 2014, 08:30
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?
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#4

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

  Alt 11. Dez 2014, 08:55
Warum holst du die zusätzliche Spalte aus der anderen Tabelle nicht mit einem einfachen Left Join in die Query mit rein?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

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

  Alt 11. Dez 2014, 09:27
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

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

  Alt 11. Dez 2014, 10:07
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).
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#7

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

  Alt 11. Dez 2014, 10:56
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.
Ralph
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#8

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

  Alt 11. Dez 2014, 12:26
...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 mehrfacher Verwendung eines Bildes)...


Dessenungeachtet ist es schade, das gerade Bildchen nicht als Lookupfeld zu taugen scheinen.
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.733 Beiträge
 
Delphi 6 Enterprise
 
#9

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

  Alt 11. Dez 2014, 13:52
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?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Jens Hartmann
Jens Hartmann

Registriert seit: 11. Jan 2009
Ort: Wilnsdorf
1.439 Beiträge
 
Delphi XE2 Professional
 
#10

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

  Alt 11. Dez 2014, 14:27
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 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.
Jens Hartmann
Das Leben selber ist zu kurz, also nutze jeden Tag wie er kommt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:35 Uhr.
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