![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TQuery
Bilder in die Paradoxtabelle speichern ?
hallo,
möchte bilder in die paradoxtabelle speichern, hab in der suche nicht sehr viel gefunden, mit ttable gehts ja so
Delphi-Quellcode:
aber wie geht das mit TQuery ?
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; mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Da es eine Beschränkung für die Größe einer paradoxtabelle gibt, ist es imho nicht empfehlenswert Bilder in eine Paradox-DB zu speichern. Besser wäre es eine andere DB zu verwenden oder nur die Bilder extern zu speicher nund nur die Datenpfade in der Tabelle abzulegen. Willst du das aber trotzdem in Paradox machen, verwende UpdateSQL, dann gehts wie bei einer TTable.
|
Re: Bilder in die Paradoxtabelle speichern ?
hallo,
ich möchte nur zum lernen einmal die bilder in die paradoxtabelle speichern mit tquery Zitat:
Delphi-Quellcode:
zu Tqueryaufruf
MyTableDasBild.LoadFromFile(opendialog1.filename);
Delphi-Quellcode:
Query1.SQL.Text := 'SELECT * FROM bilder
nicht klar ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Den Einsatz eine UpdateObjekts haben wir dir schon
![]() |
Re: Bilder in die Paradoxtabelle speichern ?
das mit den UpdateObjekts ist ja klar aber da habe ich mit dbedits gearbeitet und konnte
schreiben
Delphi-Quellcode:
aber ich muß ja den code:
query.append od query.post
Delphi-Quellcode:
irgenwie unterkriegen ?
LoadFromFile(opendialog1.filename);
mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
LoadFromFile ist eine Methode von TBlobField. Oder auch von TParameter. Du kannst also mal dies versuchen:
Delphi-Quellcode:
Query.Sql:text := 'insert into tabelle (dasBild) values (:bild);';
... Query.ParamByName('bild').LoafFromFile (opendialog1.filename; ftBlobField); |
Re: Bilder in die Paradoxtabelle speichern ?
hallo
fogende info: meine datenbankdatei heißt bilder.db, mein feld wo die bilder rein sollen heißt Bilder ! ich hab es so versucht aber ohne erfolg :
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin Query1.Close; Query1.SQL.Text := 'insert into bilder (Bilder) values (:bild);'; Query1.ParamByName('bild').LoadFromFile (opendialog1.filename, ftBlobField); Query1.Open end; fehlermeldung :
Delphi-Quellcode:
[Fehler] Unit1.pas(46): Undefinierter Bezeichner: 'ftBlobField'
was ist da falsch ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Sorry der FieldType muß ftBlob heißen nicht ftBlobField.
|
Re: Bilder in die Paradoxtabelle speichern ?
hallo,
wenn ich den code zur laufzeit ausführe
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin Query1.Close; Query1.SQL.Text := 'insert into bilder (Bilder) values (:bild);'; Query1.ParamByName('bild').LoadFromFile (opendialog1.filename, ftBlob); Query1.Open end; kommt die fehlermeldung :
Delphi-Quellcode:
mfg vader
Datei kann nicht geöffnet werden
|
Re: Bilder in die Paradoxtabelle speichern ?
DML-Abfargen kann man nicht öffnen, da sie keine Ergebnis liefren. Statt .Open .ExecSQL verwenden.
|
Re: Bilder in die Paradoxtabelle speichern ?
Hallo ihr beiden.
Wäre nicht ftGraphic der geeignetere TBlobType? Und die Fehlermeldung bezieht sich wohl auf LoadFromFile() - vermutlich ist im Opendialog noch gar keine Datei ausgewählt worden. Grüße vom marabu |
Re: Bilder in die Paradoxtabelle speichern ?
Zitat:
Zitat:
[Edit: tags korrigiert] |
Re: Bilder in die Paradoxtabelle speichern ?
hallo,
hab viele beiträge in der suche durchgelesen, aber ich finde keinen beitrag wo man mit paradox und tquery bilder in die tabelle gespeichert hat, wisst ihr ein beispiel oder einen link ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Nimm doch den Code von oben mit Achims Ergänzugnen und stelle sicher das eine Datei im Dateidialog ausgewählt wurde (opendialog1.Execute).
[Edit: Tippfehler entfernt] |
Re: Bilder in die Paradoxtabelle speichern ?
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ein wenig Code:
Delphi-Quellcode:
marabu
procedure TDemoForm.SaveButtonClick(Sender: TObject);
var s: TStream; begin s := TMemoryStream.Create; Image.Picture.Bitmap.SaveToStream(s); with Query do begin SQL.Text := 'update biotest set graphic = :graphic where speciesno = :speciesno'; ParamByName('speciesno').Value := Table.FieldByName('SpeciesNo').Value; ParamByName('graphic').LoadFromStream(s, ftGraphic); ExecSQL; Table.Refresh; end; s.Free; end; |
Re: Bilder in die Paradoxtabelle speichern ?
hallo marabu,
dein code:
Delphi-Quellcode:
ich versteh die welt nicht mehr ??
procedure TDemoForm.SaveButtonClick(Sender: TObject);
var s: TStream; begin s := TMemoryStream.Create; Image.Picture.Bitmap.SaveToStream(s); with Query do begin SQL.Text := 'update biotest set graphic = :graphic where speciesno = :speciesno'; ParamByName('speciesno').Value := Table.FieldByName('SpeciesNo').Value; ParamByName('graphic').LoadFromStream(s, ftGraphic); ExecSQL; Table.Refresh; end; s.Free; end; 1.was bedeutet "speciesno" ist das der feldname wo die fotos rein müssen ? 2.biotest ist das der name der datenbankdatei ? 3.warum brauche ich die tablekomponente wenn ich query und updatequery habe ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Liste der Anhänge anzeigen (Anzahl: 1)
hab da einen code aufgeschnappt, und wollte das auf mein projekt umstricken
meine datenbankdatei heißt bilder.db und der feldname wo die fotos rein sollen heißt Foto ! habe mein projekt drangehängt, ich check das alles nicht, das kann doch nicht so schwer sein ein bild in die tabelle speichern ? könnte wer einmal über meine datei drüberschauen ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
In deiner Projekt wird Bezug auf einige nicht vorhanden Kompoenenten genomme. Es fehlt die TQuery-Komponente welche im Code SQLTable heißt. Die Tabelle im Query muß bilder heißen. Die Tabelle besteht ja nur aus einem Feld und ist leer deshalb:
SQL-Code:
Es wird auch Bezug auf eine nichvorhandenes Datenmodul genommen.
Insert into Bilder( foto) values( :Bild);
Vader: Auch wenn du stolz bist, ohne ein Buch nun mit ein "klein wenig Hilfe" einige Testprogramme erstellt zu haben, solltest du doch langsam gemerkt haben, das dir gewisse Grundlagen über Datenbanken fehlen. Das ist nicht böse gemeint ;-) aber du solltest den Code den dir wir hier zeigen, oder den du von woanderst her hast, nicht nur eintippen/kopieren, sondern versuchen zu verstehen. dann hättest du gesehen das wenn deine Tabelle Bilder heißt und in der Abfrage Tabelle steht nicht funktionieren kann. |
Re: Bilder in die Paradoxtabelle speichern ?
Liste der Anhänge anzeigen (Anzahl: 2)
hallo,
hab den code jetzt auf mein projekt abgeändert mußte aber eine neue tabelle anlegen ! meine datenbankdatei heißt losch.db und der feldname wo die Fotos rein sollen heißt jetzt Tennis! die jpeg habe ich auskommentiert da schreit er gleich fehler
Delphi-Quellcode:
bitte schau noch mal drüber , habe mir mühe gegeben !
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'TJPEGImage'
wenn ich jetzt auf speichern gehe in der laufzeit kommt der fehler: siehe anhang |
Re: Bilder in die Paradoxtabelle speichern ?
hab in der eile was vergessen zum ausbessern
die datenbankdatei heißt jetzt losch statt bilder !!!
Delphi-Quellcode:
mfg vader
query1.SQL.Text := 'Insert into losch Set Tennis= :Bild ';
|
Re: Bilder in die Paradoxtabelle speichern ?
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids, DBGrids, DBCtrls, DBTables, DB, ExtDlgs; type TForm1 = class(TForm) Query1: TQuery; DataSource1: TDataSource; UpdateSQL1: TUpdateSQL; DBImage1: TDBImage; DBGrid1: TDBGrid; Button1: TButton; Button2: TButton; Button3: TButton; OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin query1.append; end; procedure TForm1.Button2Click(Sender: TObject); var blob : TMemoryStream; // jpeg : TJPEGImage; bmp : TBitmap; s: String; begin blob := TMemoryStream.Create(); // jpeg := TJPEGImage.Create; bmp := TBitmap.Create; TRY if OpenpictureDialog1.Execute then begin s :=ExtractFileExt(OpenPictureDialog1.FileName); if uppercase(s) = '.BMP' then begin bmp.loadfromfile(OpenPictureDialog1.FileName); blob.Clear; bmp.saveToStream(blob); end else begin // jpeg.LoadFromFile(OpenPictureDialog1.FileName); blob.Clear; // jpeg.SaveToStream(blob); end; // query1.SQL.Text := 'Update Tabelle Set Foto = :Bild where ID = :id'; query1.SQL.Text := 'Insert into losch( Tennis) values( :Bild);'; query1.ParamByName('bild').LoadFromStream(blob,ftGraphic); // query1.ParamByName('id').AsInteger := DM.FahrerID.AsInteger; query1.ExecSQL; end; Finally freeandnil(blob); // freeandnil(jpeg); freeandnil(bmp); DBImage1.LoadPicture; END end; end. |
Re: Bilder in die Paradoxtabelle speichern ?
super danke,
das funktoniert, aber es wäre nicht schlecht auch mit den jpeg's die fehlermeldung :
Delphi-Quellcode:
warum erkennt er 'TJPEGImage' nicht ?
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'TJPEGImage'
mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Dazu mußt du die Unit jpegimage von der Delphi-CD nachinstallieren.
|
Re: Bilder in die Paradoxtabelle speichern ?
du schreibst:
Zitat:
mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Nein, das Package befindet sich auf der CD. Suche mal auf der Inst-Cd nach jpg oder jpeg
|
Re: Bilder in die Paradoxtabelle speichern ?
Liste der Anhänge anzeigen (Anzahl: 1)
hallo,
das habe ich gefunden,siehe anhang ! wie muß ich das installieren ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Am besten kopierst du die .bpl .dcp und .map-datei in dein bpl-Verzeichnis und fügst die bpl deinen Packages hinzu.
|
Re: Bilder in die Paradoxtabelle speichern ?
Liste der Anhänge anzeigen (Anzahl: 1)
es kommt der fehler, siehe anhang !
ich glaub ich habe das schon drauf auf der platte, aber ich muß es richtig aufrufen in meinen programm ? mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Ja,, das package war wohl schon installiert! Zum testen kannst du ja mal versuchen ein Jpeg-Bild in eine TImage-Komponente zu Laden. Sollte dann gehen.
|
Re: Bilder in die Paradoxtabelle speichern ?
ja,ich kann ein jpg in ein Timage laden , aber wieso kommt dann der fehler, wie ich im beitrag #22 geschrieben
habe ?
Delphi-Quellcode:
mfg vader
[Fehler] Unit1.pas(44): Undefinierter Bezeichner: 'TJPEGImage'
|
Re: Bilder in die Paradoxtabelle speichern ?
Hi,
hast Du die Unit JPEG in Deiner Uses-Liste? mfG mirage228 |
Re: Bilder in die Paradoxtabelle speichern ?
hallo,
JPEG habe ich in uses aufgenommen,dann hat er auch den code kompiliert
Delphi-Quellcode:
er läßt mich auch posten, aber wenn ich das jpeg dann in der dbimage anschauen will kommt der fehler
procedure TForm1.Button2Click(Sender: TObject);
var blob : TMemoryStream; jpeg : TJPEGImage; bmp : TBitmap; s: String; begin blob := TMemoryStream.Create(); jpeg := TJPEGImage.Create; bmp := TBitmap.Create; TRY if OpenpictureDialog1.Execute then begin s :=ExtractFileExt(OpenPictureDialog1.FileName); if uppercase(s) = '.BMP' then begin bmp.loadfromfile(OpenPictureDialog1.FileName); blob.Clear; bmp.saveToStream(blob); end else begin jpeg.LoadFromFile(OpenPictureDialog1.FileName); blob.Clear; jpeg.SaveToStream(blob); end; // query1.SQL.Text := 'Update Tabelle Set Foto = :Bild where ID = :id'; query1.SQL.Text := 'Insert into losch( Tennis) values( :Bild);'; query1.ParamByName('bild').LoadFromStream(blob,ftGraphic); // query1.ParamByName('id').AsInteger := DM.FahrerID.AsInteger; query1.ExecSQL; end; Finally freeandnil(blob); freeandnil(jpeg); freeandnil(bmp); DBImage1.LoadPicture; END end;
Delphi-Quellcode:
mfg vader
bitmap ist ungültig
|
Re: Bilder in die Paradoxtabelle speichern ?
Mit Paradox und Blob sollte man sehr vorsichtig sein.
Damit bin ich schon vor 8 Jahren in der Hochzeit der BDE auf die Nase gefallen. Paradox hat einen nie beseitigten Handlingfehler bei Blobs. Irgendwann kommt dann die Meldung Blob kann nicht gelesen werden und ist dann irreversibel zerschossen. Wenn die Blob unbedingt in der Datenbank gespeichert werden soll, dann sollte man auf eine andere Datenbank ausweichen. Firebird hat z.B. keinerlei Probleme mit Blob. Gruß Peter |
Re: Bilder in die Paradoxtabelle speichern ?
Trotz Einbinden der Unit Jpeg ist es mir noch nie gelunden, Jpegs direkt aus einem BLOB-Feld in TDBImage anzuzeigen. Ich erhielt immer eine Fehlermeldung (keine gültige Bitmap oder ähnlich). Deshalb verwende ich immer TImage und weise TImage im Ereignis AfterScroll des Datasets das Jpeg-File aus dem Blob-Feld zu.
Ansonsten kann auch ich nur anraten, bei Paradox keine Blob-Felder zu verwenden, weil auch ich nur schlechte Erfahrungen damit gemacht habe. Grüße Mikhal |
Re: Bilder in die Paradoxtabelle speichern ?
ok,überredet
ich lasse die finger mit dem abspeichern in die paradox !!! aber wie geht das, das ich nur den pfad in der datenbank habe zu dem foto ?? MFG VADER |
Re: Bilder in die Paradoxtabelle speichern ?
Delphi-Quellcode:
In der Unit SysUtils findest du diese Funktion, sie extrahiert den Pfad aus dem Dateinamen.
function ExtractFilePath(const FileName: string): string;
Grüße Mikhal |
Re: Bilder in die Paradoxtabelle speichern ?
Da liegt wohl ein Missverständnis vor - nicht der absolute Pfadanteil einer Photodatei wird in der Datenbank gespeichert, sondern der Dateiname, allenfalls mit einem relativen Pfadanteil, sollte gespeichert werden. Der absolute Bezugspunkt im Dateisystem sollte als Konfigurationsparameter zugänglich sein, so dass man die Bilddateien nach Bedarf im Dateisystem verschieben kann, ohne dass die Referenzen in der Datenbank ungültig werden.
Grüße vom marabu |
Re: Bilder in die Paradoxtabelle speichern ?
hallo marabu,
hast du ein beispiel wie das ausschaut ? Zitat:
mfg vader |
Re: Bilder in die Paradoxtabelle speichern ?
Du entscheidest dich für ein Verzeichnis, in das du die Bilder ablegen willst, in die datenbank speicherst du dann nicht den absoluten Dtanpfad sondern nur relativ zu diesem Verzeichnis. Z.B. du hast dich entschieden, das die Bilder relativ zu 'c:\tennis' abzulegen. Ein Bild liegt nun auf c:\tennis\maenner\boris.jpg'. dann schreibst du in die Datenbank 'maenner\boris.jpg'. Den Pfad c:\tennis schreibst du zusammen mit den Datenbankparametern z.B. in eine Ini oder XML-Datei.
|
Re: Bilder in die Paradoxtabelle speichern ?
das ist alles so kompliziert diese datenbankprogrammierung, jetzt brauche ich eine xml datei oder ini mit den
datenbankparameter, eddy schreibt: Zitat:
mfg vader |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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 by Thomas Breitkreuz