Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Bild selektieren und wo anders updaten? (https://www.delphipraxis.net/180562-bild-selektieren-und-wo-anders-updaten.html)

OrNEC 29. Mai 2014 15:03

Datenbank: SQLite • Version: 3 • Zugriff über: SQLiteSimpleDelphi-Wrappers von Tim Anderson

Bild selektieren und wo anders updaten?
 
Hallo,

ich habe folgende Frage: ich erstelle in der DB ein Datensatz, hole dessen ID und update in diese Zeile ein Bild, dass zuvor mittels OpenDialog ausgewählt wurde. Nun möchte ich ein Datensatz duplizieren, dafür erstelle ich in der DB einen neuen Datensatz und falls das Bild bleiben soll, soll es einfach nur in die neue Zeile kopiert werden. Wie mache ich das nur? Also rein logisch ist es klar, ich selektiere das Bild mit der ZeileID=n und update es in die ZeileID=n+x. Wie schreibe ich nur den Code dazu? Praktisch wäre es die COPY Funktion, aber in der SQL Sprache kann ich das ja nur mittels Select und Insert Into realisieren.

Danke!


Delphi-Quellcode:
    if srcpic = 'pic-new' then
    begin
      fs := TFileStream.Create(dest, fmOpenRead);
      try
        varid := db.GetLastInsertRowID;
        sSQL2 := 'UPDATE media SET picture = ? WHERE id_media = ' + IntToStr(varid);
        db.UpdateBlob(sSQL2, fs);
      finally
        FreeAndNil(fs);
      end;
    end else if srcpic = 'pic-sollbleiben' then
             begin
             // hier also ungefähr so -> UPDATE media SET picture = ? WHERE (select picture where id_media=n) WHERE id_media=m
             end;

mkinzler 29. Mai 2014 15:27

AW: Bild selektieren und wo anders updaten?
 
SQL-Code:
insert into media ( <Felder ohne id>) select <Felder ohne id> from media where id = :id;

OrNEC 29. Mai 2014 15:38

AW: Bild selektieren und wo anders updaten?
 
Kann man das nicht mit UPDATE lösen? INSERT INTO wird vorher für den Text verwendet, weil noch ein INSERT INTO schreibt das Bild in eine neue Zeile.

mkinzler 29. Mai 2014 15:44

AW: Bild selektieren und wo anders updaten?
 
Das Statement kopiert den Datensatz komplett,
Vielleicht wäre es sinnvoll die Bilder in einer separaten Tabelle zu speichern und diese nur zu referenzieren

OrNEC 29. Mai 2014 15:53

AW: Bild selektieren und wo anders updaten?
 
Zitat:

Zitat von mkinzler (Beitrag 1260699)
Das Statement kopiert den Datensatz komplett,
Vielleicht wäre es sinnvoll die Bilder in einer separaten Tabelle zu speichern und diese nur zu referenzieren

Ja ich verstehe, aber ich muss die Bilder immer updaten. Geht das etwa in meinem Fall nicht?

Die Anwendung und die DB werden klein sein, deswegen braucht man keine separate Tabelle. ))

OrNEC 29. Mai 2014 19:16

AW: Bild selektieren und wo anders updaten?
 
Ich glaube ich habe es, dank einem SQL-Buch von G. Kuhlmann, F. Müllmerstadt. Alles cool beschrieben. :thumb:


Delphi-Quellcode:
sSQL2 := 'UPDATE media SET picture = (SELECT picture FROM media WHERE id_media = n) WHERE id_media = ' + m);

mkinzler 30. Mai 2014 10:29

AW: Bild selektieren und wo anders updaten?
 
Zitat:

Die Anwendung und die DB werden klein sein, deswegen braucht man keine separate Tabelle. ))
Redundanz ist Redundanz und die sollte man vermeiden, unabhängig vom Platzverbrauch.

OrNEC 30. Mai 2014 10:31

AW: Bild selektieren und wo anders updaten?
 
Hast Recht, aber der Aufwand wäre riesengroß für ne Minianwendung.

p80286 30. Mai 2014 10:50

AW: Bild selektieren und wo anders updaten?
 
Zitat:

Zitat von OrNEC (Beitrag 1260763)
Hast Recht, aber der Aufwand wäre riesengroß für ne Minianwendung.

Da kann ich Dir nur Recht geben, ebenso ist es unnötig sich im Auto anzuschnallen wenn's mal nur zum Bäcker geht, oder auf einem Mororrad einen Helm zu tragen oder den Wohnungsschlüssel einzustecken wenn man mal eben schnell zum Briefkasten läuft...

Es gibt Dinge die tut "man" einfach nicht, und dazu gehört BLOB-Felder mit anderen Feldern in einer Tabelle zu mischen. Einzige Ausnahme, man ist extrem clever.

Was ist "riesengroß" beim Anlegen einer zweiten Tabelle?
Wenn man sich schon entschieden hat, ein paar Daten in einer DB unterzubringen, dann sollte man dies auch konsequent durchziehen.

Gruß
K-H

OrNEC 30. Mai 2014 11:00

AW: Bild selektieren und wo anders updaten?
 
Ist es dann vllt noch besser die Bilder gar nicht in die DB zu speichern? Einfach in ein Unterordner das ganze ablegen und fertig.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.
Seite 1 von 2  1 2      

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