AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Bilder aus Datenbank (nur pfad) anzeigen..
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder aus Datenbank (nur pfad) anzeigen..

Ein Thema von SKolberg · begonnen am 17. Mär 2005 · letzter Beitrag vom 27. Okt 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#1

Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 17. Mär 2005, 09:12
Datenbank: MySQL auf Linux • Version: 4.0.22 • Zugriff über: ZeosLib
Hallo,
Ich habe ein MySQL Server dort sind in einer tabelle Artikel hinterlegt in einer anderen die Bilder dazu, weil es mehrere Bilder geben kann
habe ich den PrimaryKey in die bilder DB mit eingefügt damit er zu [(Artikel1; Id 10) (Id 10 = Bild 1; Bild 2; ....)] abrufen soll.
Nun habe ich 2 Probleme,
1. Wie zeige ich die Bilder die in der DB nur als Pfad hinterlegt sind in einem DBImage an??
2. Wie Bringe ich ihm bei die Bilder der Artikelzugehörigkeit nach anzuzeigen da es ja mehrere geben kann,
dazu müssen sie ja gefiltert werden bzw. müsste man sie über einen DBNavigator witerblättern können..oder?


Danke im voraus, Steve
Steve Kolberg
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#2

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 17. Mär 2005, 09:15
Dürfte so nicht gehen. Du musst ein "normales" TImage" nehmen, und das Bild über den Pfad aus dem DB-Feld dort reinladen.
Alternativ mit einer ImageList arbeiten und einen eigenen "Blätter"-Algorithmus schreiben.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 17. Mär 2005, 09:22
Hast du da vielleicht ein paar tips bzw. links die ich mir anschauen kann? Bin ziemlicher newbie in Delphi.

Danke
Steve Kolberg
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.016 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 17. Mär 2005, 09:32
2 Datenmengen (Artikel, Bilder) über die ID verknüpfen (siehe Delphi OH)
Dann hast du beim Blättern in der Artikelmenge immer in der Detail-Menge die Bilder für den gewählten Artikel.
In das AfterScroll-Event der Bildermenge fügst du dann ein
ArtikelImage.Picture.LoadFromFile(BilderDataSet.FieldByName('BildPfad').AsString) ein und verbindest nen Navigator mit deiner Bilder-Datenmenge.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 15. Jul 2005, 08:46
So ich habe jetzt mal einiges hier probiert allerdings komme ich trotz alledem nicht wirklich weiter...

Ich habe auf dem Form ein TDBEdit (IDNr) in dem steht die ID aus der Tabelle Datenblatt, nun soll er mir alle Sätze aus der Tabelle Produktinfos auflisten die die ArtikelNr = IDNr haben. Ich habe schon versucht einen TDBGrid mit Filter zu benutzen allerdings (so scheint mir) kann ich den Filter nur auf eine Tabelle beschränken und ihm nicht sagen Filter: ArtikelBez = IdNr.Text.

In der Tabelle Produktinfos sind 3 Felder:
ID = Primqry Key
Bild = Vollständiger Pfad der Bilder
ArtikelBez = ID des Datensatzes aus Tabelle Datenblatt

Letzendlich soll er mir alle Pfade in die Listbox laden die als ArtikelBez die Zahl der IDNr.Text haben da es zu einem Produkt mehrere Bilder geben kann. Alternativ sollte er die Pfade direkt in eine Imagelist laden damit ich sie in einem TImage anzeigen lassen kann...

Den letzten Code den ich probiert habe war der:

Delphi-Quellcode:
procedure TDatenn.OnChangePage(Sender:TObject);
begin
    ImageList1.Clear;
    ListBox1.Clear;

    SDIAppForm.ZQuery1.SQL.Text :='SELECT * FROM produktinfos WHERE ArtikelNr = :Bilder';
    SDIAppForm.ZQuery1.ParamByName('Bilder').AsString:=IDNr.Text;
    SDIAppForm.ZQuery1.Open;
    ListBox1.Items.Add(SDIAppForm.ZQuery1.SQL.Text);
end;
Bei diesem Code bekomme ich allerdings eine Fehlermeldung "Field 'Berechtigungen' not found" das Feld Berechtigungen ist aber in der Tabelle User die ich hier meines wissens nach nicht anspreche.


Mfg, Steve
Steve Kolberg
  Mit Zitat antworten Zitat
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 18. Jul 2005, 08:12
Ich habe am WE nochmal nachgeguckt allerdings schein er den Param nicht anzunehemn zumindest sehe ich ihn nicht auf dem Hauptformular, also habe ich einen neuen ZQuery aufs Datenblatt genommen. Den Param nimmt er auch an allerdings bekomme ich keine Einträge in die ListBox.


Keiner einen Vorschlag?


Mfg, Steve
Steve Kolberg
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 18. Jul 2005, 09:10
Hai SKolberg,

zu erst einmal wegen deiner Fehlermeldung:
Kann es sein das Du bei deinem SDIAppForm.ZQuery1 über den FeldEditor (rechter Mausklick auf die Query-Kompo) Felder aus einer anderen Tabelle zugewiesen hast? Das ist nämlich ein typischer Fehler.

Unabhängig davon wäre es zu überlegen ob Du dein Tabellendesign änderst.
Wenn ich dein Eingangsposting richtig verstehe speicherst Du alle Bilder zu einem Artikel in einem Eintrag der Tabelle produktinfos. Das würde ich auf keinen Fall machen.

Es gibt zwei Möglichkeiten.

1:n Relation (Es gibt n Bilder zu einem Artikel)
Code:
[b]artikel[/b]
---------------------
ID       - integer (PrimaryKey)
.
.

[b]produktinfos[/b]
---------------------
ID       - integer (PrimaryKey)
fk_art_id - integer (Forenkey -> artikel.ID)
bild     - string (Bildname)
Ich würde aber, um eine einfache Erweiterung des Programmes vornehmen zu können eine n:m Relation aufbauen. Dafür wird alledings eine dritte Tabelle benötigt:
Code:
[b]artikel[/b]
---------------------
ID       - integer (PrimaryKey)
info     - string
.

[b]produktinfos[/b]
---------------------
ID       - integer (PrimaryKey)
bild     - string (Bildname)

[b]art_prod_info[/b]
---------------------
fk_artikel_id - integer (ForenKey -> artike.ID)
fk_prodinf_id - integer (ForenKey -> produktinfos.ID)
Dadurch hast Du die Möglichkeit das selbe Bild verschiedenen Artikel zuordnen zu können.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 18. Jul 2005, 11:31
Danke erstmal,

Müsste ich nicht wenn ich Die Tabelle ändere, die Sätze neu eingeben? Wenn ja wäre das jetzt im nachhinein etwas
sch**** die DB läuft schon seit ca. 1 Jahr mittlerweile beträgt die Anz. der Artikel 7800 und zus. 4300 Bilder...
(Greife per MS Access drauf zu) dort bekomme ich es aber hin das er mir die Bilder, so wie sie jetzt sind richtig Filtert. Und das geht ziemlich schnell obwohl "Access + SQL = Schnarchnase" ergibt..

Ich meine wenns nun nicht anders geht würde ichs machen, aber bei den Datensätzen ist mir das etwas zu heikel zumal ich ALLE Bilder neu anlegen dürfte?!

Gibts da nicht die Möglichkeit sie so zu Filtern?

Filter: Where Daten_ID = Produktinfos_ArtikelBez??


Mfg, Steve
Steve Kolberg
  Mit Zitat antworten Zitat
Benutzerbild von SKolberg
SKolberg

Registriert seit: 20. Dez 2004
Ort: Lingen
150 Beiträge
 
Delphi 2009 Professional
 
#9

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 2. Sep 2005, 12:57
Hi,

das mit der ImageList habe ich verworfen ich lasse die betreffenden Pfade zu den Bildern jetzt in eine ListBox laden und lade sie von da in ein TImage, allerding scheitert es daran das wenn ich mehr als ein bild habe er mir immer nur das erste anzeigt:

Delphi-Quellcode:
procedure TForm2.ClickNext(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ListBox1.Items.Strings[0]);
Ich habe schon versucht mit (+ 1) zu arbeiten allerdings funktioniert das nicht...


Mfg, Steve

EDIT/ Für andere die es interessiert ich habe es so gemacht

Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);

begin
    MainForm.ZQuery2.Close;
    MainForm.ZQuery2.SQL.Text := 'SELECT * FROM produktinfos WHERE ArtikelNr LIKE :ProduktID';
    MainForm.ZQuery2.ParamCheck := True;
    MainForm.ZQuery2.ParamByName('ProduktID').AsString;
    MainForm.ZQuery2.Open;
end;


procedure TForm2.ClickNext(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ListBox1.Items.Strings[0]);

end;


procedure TForm2.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
begin
    Anzahl.Caption:= '0';
    ListBox1.Clear;
    MainForm.ZQuery2.ParamByName('ProduktID').AsString:= DBEdit1.Text;
    MainForm.ZQuery2.Refresh;

begin

   while not MainForm.ZQuery2.eof do begin
     ListBox1.Items.Add(MainForm.ZQuery2.fieldbyname('Foto').AsString);
     MainForm.ZQuery2.Next;
     Anzahl.Caption:=IntToStr(ListBox1.Items.Count);
   end;

end;
end;
Steve Kolberg
  Mit Zitat antworten Zitat
zelle

Registriert seit: 8. Mär 2005
Ort: Wolfsberg
11 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Bilder aus Datenbank (nur pfad) anzeigen..

  Alt 2. Sep 2005, 13:07
Hallo

Zitat:
procedure TForm2.ClickNext(Sender: TObject);
begin
Image1.Picture.LoadFromFile(ListBox1.Items.Strings[0]);

end;
Wenn du immer 0 drinnen stehen hast liest do auch immer nur den 1 Pfad aus.

Versuche es mal so:
Delphi-Quellcode:

Globale Variable
var
i:Integer;

procedure TForm2.ClickNext(Sender: TObject);
begin
i:=i+1;
if i > ListBox1.Items.Count then
  i:= ListBox1.Items.Count-1;

Image1.Picture.LoadFromFile(ListBox1.Items.Strings[i]);

end;
mfg
Zelle
Harald Zellacher
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:37 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