Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Bild in andere Datenbank kopieren (https://www.delphipraxis.net/166354-bild-andere-datenbank-kopieren.html)

blondervolker 9. Feb 2012 09:35

Datenbank: ADO Access • Version: 4 • Zugriff über: Delphi

Bild in andere Datenbank kopieren
 
Liste der Anhänge anzeigen (Anzahl: 2)
Hab mal wieder die A...Karte.

Hab ein Bild von einer Datenbank 1 und Text in die andere Datenbank 2 kopiert.Das geht wunderbar.

Aber habe ich in einem Datensatz in der Datenbank1 kein Bild,bekomme ich eine Fehlermeldung:--->>> Das Format wird in der Zwischenablage nicht unterstützt.

Was habe ich falsch gemacht? :oops:

Code:
Delphi-Quellcode:
procedure TForm1.bernahmederDatenindieJobdatenbank1Click(Sender: TObject);
begin
Form17.Show;
Form17.ADOTable1.Insert;
Clipboard.Assign(DBImage1.Picture);
Form17.DBImage1.PasteFromClipboard;
Clipboard.Clear;//Bild1
DBEdit10.SelectAll;
DBEdit10.CopyToClipboard;
Form17.DBEdit10.PasteFromClipboard;
Clipboard.Clear; //Telefon

Form17.ADOTable1.Post;
end;

Sharky 9. Feb 2012 09:41

AW: Bild in andere Datenbank kopieren
 
Warum machst Du das denn mit copy/paste?
Das finde ich mehr als unsauber. Lese die Daten aus der einen Datenbank, speichere sie in einem passenden Objekt, und speichere sie dann in der anderen Datenbank.

Je nach dem kannst Du das zwichenspeichern auch weglassen.

blondervolker 9. Feb 2012 09:58

AW: Bild in andere Datenbank kopieren
 
Mag unsauber sein.Aber wie kann ich es anders machen mit zwischenspeichern? Hab ich noch nicht gemacht.Weiß nicht wie es geht.:oops:

Perlsau 9. Feb 2012 10:06

AW: Bild in andere Datenbank kopieren
 
Zitat:

Zitat von blondervolker (Beitrag 1150046)
Das Format wird in der Zwischenablage nicht unterstützt.
Was habe ich falsch gemacht? :oops:

Genau das, was die Fehlermeldung dir sagt: Du hast versucht, in die Zwischenablage ein Format hineinzukopieren, das diese nicht unterstützt.

Das Clipboard ist dem Anwender vorbehalten und sollte nicht dazu mißbraucht werden, Daten hin- und herzuschaufeln. Den Text des Quell-Edits kannst du in eine String-Variable kopieren und dem Ziel-Edit zuweisen. Das Bild des Quell-Bitmaps kopierst du in eine lokale Bitmap-Variable und weist dieses dem Ziel-Bitmap zu.

Sir Rufo 9. Feb 2012 17:11

AW: Bild in andere Datenbank kopieren
 
:shock: Von welchem Baum muss man denn naschen um auf so eine Idee zu kommen?

Delphi-Quellcode:
procedure TForm1.bernahmederDatenindieJobdatenbank1Click(Sender: TObject);
begin
  Form17.Show;
  Form17.ADOTable1.Insert;
 
  Form17.DBImage.Picture.Assign( DBImage1.Picture );
  Form17.DBEdit10.Value := DBEdit10.Value;

  Form17.ADOTable1.Post;
end;
Wenn da kein Bild ist, dann braucht man ja auch kein Bild zu übergeben, bzw. dann schmeißt das Zuweisen (Assign) eben eine Exception.
Also sollte man vor dem Zuweisen prüfen, ob es was zum Zuweisen gibt.

Hört sich komisch an? - Ist aber so! :mrgreen:

blondervolker 9. Feb 2012 18:41

AW: Bild in andere Datenbank kopieren
 
Ja in meinem Hinterstübchen hatte ich die Jdee...Aber ich erde es gleich
mal probieren.:-D

Danke

blondervolker 10. Feb 2012 13:02

AW: Bild in andere Datenbank kopieren
 
Guten Taaaccchhhhh,:-D

aber wo soll ich denn diese Exeption einfügen?
Habe kein Plan,weil ich bisher noch nie eine eingebaut habe...:oops:

:oops:

Sir Rufo 10. Feb 2012 18:26

AW: Bild in andere Datenbank kopieren
 
Zitat:

Zitat von blondervolker (Beitrag 1150313)
aber wo soll ich denn diese Exeption einfügen?

Wieso willst du denn jetzt eine Exception einbauen? Reicht dir nicht die, die da schon kommt?

DeddyH 10. Feb 2012 18:27

AW: Bild in andere Datenbank kopieren
 
Doppelt hält eben besser :mrgreen:

NickelM 22. Feb 2012 03:21

AW: Bild in andere Datenbank kopieren
 
Versuch es mal mit Picture.Graphic auf nil zuprüfen . Soviel ich weis sollte es Überprüfen, ob ein Image zugewiessen wurde. In Graphic steckt die abgeleiteten Klasse von den Bildern. z.b TPingImage für Pngs, TJpegImage für Jpgs, und auch TBitmap was auch von Graphic abstammt.
Habe es getestet mit Bitmaps und Pngs. Sollte funkten.

Delphi-Quellcode:
procedure TForm1.bernahmederDatenindieJobdatenbank1Click(Sender: TObject);
begin
  Form17.Show;
  Form17.ADOTable1.Insert;
 
  if DBImage1.Picture.Graphic <> nil then //Wenn nicht zugewiessen also kein Bild
  Form17.DBImage.Picture.Assign( DBImage1.Picture );
  Form17.DBEdit10.Value := DBEdit10.Value;

  Form17.ADOTable1.Post;
end;

Furtbichler 22. Feb 2012 06:57

AW: Bild in andere Datenbank kopieren
 
Also wenn ich Daten aus einer Tabelle in eine andere kopieren will, dann mache ich das so:
Delphi-Quellcode:
NewTable.Insert;
NewTable['PictureFieldName'] := OldTable['OtherPictureFieldName'];
NewTable.Post;
ich weiss jetzt nicht genau, ob das mit Bildern auch geht, aber wenn nicht so, dann eben über Blob-Felder und Streams.
Auf jeden Fall benötige ich für das Kopieren von Daten garantiert keine visuellen Steuerelemente.

blondervolker 22. Feb 2012 07:38

AW: Bild in andere Datenbank kopieren
 
Guten Morgen,

vielen Dank für die Hilfe.:thumb:

Aber mein Problem ist,dass wenn ich in der ersten Datenbank
kein Bild habe kommt dann eine Fehlermeldung.

Ich bin nur zu dussellich diese zu unterdrücken.:oops:

Weil ich es noch nie gemacht habe.

Sir Rufo 22. Feb 2012 07:52

AW: Bild in andere Datenbank kopieren
 
Vielleicht kann man das Feld mit den Bilddaten ja fragen ob es leer ist :zwinker:
Dann würde es keine Exception geben

DeddyH 22. Feb 2012 07:53

AW: Bild in andere Datenbank kopieren
 
Das DBImage wird ja wohl aus der ersten Datenbank befüllt. Nun könnte man auf die Idee kommen, das dahinterliegende Dataset einmal zu fragen, ob das entsprechende Feld NULL ist oder nicht. Falls ja, gibt es nichts zu kopieren. Oder man geht den noch einfacheren Weg und schaut in der Hilfe nach, welche Eigenschaften so ein TDBImage besitzt. Delphi-Referenz durchsuchenTDBImage.Field wäre evtl. ein passender Kandidat.

Iwo Asnet 22. Feb 2012 12:40

AW: Bild in andere Datenbank kopieren
 
Die Variante vom Furtbichler dürfte auch mit nicht existenten Bildern klarkommen, da dann der Wert Null sein düfte.


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