![]() |
bilder in datenbank- wie?
Hallo,
ich habe mit paradox eine datenbank angelegt. in dem dazugehörigen form habe ich ein db-image feld angelegt. nun möchte ich, dass man bei der späteren programmausführung hingehen kann und bilder (jpeg) von der hd, diskette, cdrom aussuchen und in die datenbank eingabe-maske hinzufügen kann. ich habe ein datei-menü erstellt, das "bild einfügen" heisst. wenn ich das ausführe, wird der datei-browser geöffnet und man kann sich die jpeg´s angucken und auswählen. mein problem ist, dass ich das ausgewählte bild aber nicht in das db-image feld einlesen kann bzw. auch abspeichern. Am Ende soll das Programm so aussehen, dass ich zu jedem Datensatz den ich eingegeben habe auch ein Bild abgespeichert werden kann. Die Bilder sollen nicht von vorne herein in der Datenbank sein, sondern nach und nach je nach Bedarf hinzugefügt werden. Wie mache ich das? Kann mir jemand den Code dazu geben? Ich kriege es irgendwie nicht hin. Bin auch noch nicht so gut in Delphi (benutze D5) Danke im Voraus |
Hi,
ich würd nach dem Aussuchen des Bildes es in ein Verzeichnis kopieren lassen, und den Pfad dann in der DB abspeichern. Sonst wir die DB so gross. Dein Vorhaben sollte aber mit
Code:
zu machen sein.
dbimage1.picture.LoadFromFile("Dateiname");
MFg Thomas |
Danke für die Antwort.
Dass die DB zu groß wird, ist egal. Noch eine Frage zu Deinem Code: ("Dateiname") Kann ich das so übernehmen, oder muss an dieser Stelle der Name des Bildes stehen? |
Du musst in da wo jetzt Dateiname steht den Pfad+Dateinamen des Bildes einfügen, also wahrscheinlich:
Code:
dbimage1.picture.loadfromfile(opendialog1.filename);
|
Danke, ist jetzt klar. Das mache ich im Laufe der Programmierung. Aber wenn das Programm nun fertig ist und ich es quasi weitergegeben habe, dann kann doch der Anwender, wenn er das Programm laufen lässt, keine Bilder mehr hinzufügen. (Die ich eingegeben habe, die sind drin, weil ich die ja mit weitergebe)
Aber ich möchte das Programm so schreiben, dass man nachher bei jedem Programmaufruf immer wieder neue Bilder hinzufügen kann, ohne wieder neue Pfadangaben programmieren zu müssen. Klar wächst die DB, aber das macht nichts, solange man nicht Tausende von Bildern dazulädt. Wie mache ich das denn? Zur Info: Ich programmiere eine Datenbank zur Verwaltung von -bitte nicht lachen- Überraschungseiern. Die Eingabe der Daten ist kein Problem, nur soll zu jeder Figur ein Bild hinzu. Und da die Figuren immer mehr werden, werden die Bilder immer mehr und ich möchte halt nicht jedesmal, wenn ein neues Bild hinzu kommt, das Programm neu schreiben bzw. ergänzen müssen. |
Hallo jackal,
grundsätzlich funktioniert das Einfügen eines Datensatzes über die Sequenz:
Code:
Dabei habe ich angenommen, dass die Felder über den Feldeditor der Anwendung hinzugefügt wurden. In deinem speziellen Fall gibt es ein Blob Feld, das nach Hinzufügung über den Feldeditor ein TBlobField Objekt erzeugt. Heißt dein Feld in der DB z.B. "DasBild" und deine Tabelle "MyTable", dann wird das Feld "MyTableDasBild" erzeugt.
try
MyTable.Append; MyTableField1.Value := ...; ... MyTableFieldn.Value := ...; MyTable.Post; except on E:exception do begin ShowMessage('Fehler beim Einfügen: '+E.Message); MyTable.Cancel; end end; Dann kannst du mit Assign oder mit LoadFromFile diesem Feld einen Wert zuweisen:
Code:
Und drin isses :D.
try
MyTable.Append; ... MyTableDasBild.LoadFromFile(opendialog1.filename); MyTable.Post; except on E:exception do begin ShowMessage('Fehler beim Einfügen: '+E.Message); MyTable.Cancel; end end; |
@MrSpock
Vielen Dank für deine Hilfe, mit deiner Unterstützung klappts :D jackal |
Hallo Jackal, hatte vor einiger Zeit das selbe Problem wie Du. Vieleicht siehst Du dir mal folgenden Beitrag an, ![]() hat mir viel weiter geholfen. :!: Ach ja ich weiß nicht ob man es dir schon gesagt hat, aber mit der DBImage Komponente kannst Du nur *.BMP Dateien anzeigen lassen. Aber wie gesagt sieh dir den Link an. :!: Cu Scotch. :coder: PS. Wenn du ne kleine Demo brauchst mußt du bescheit sagen. Die habe ich mit der hilfe die ich bekommen habe unter D6 erstellt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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