Eigentlich sollte es so funktionieren.
Vielleicht probierst du nochmal folgendes:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm4.SpeedButton2Click(Sender: TObject); var T : String; begin Try OpenPictureDialog1.Execute; T := OpenPictureDialog1.Filename; DataModule2.PersonalDataSet.Edit; DBImage1.Picture.LoadFromFile(T); DataModule2.PersonalDataSet.Post; except DataModule2.PersonalDataSet.Cancel; MessageBox(0,'Sie haben kein Bild geladen','Abbruch',16); end; end; |
Im Prinzip also vorher den Datensatz in den Edit-Modus bringen.
Das Post direkt dahinter muss theoretisch nicht sein, aber ich habe schon Fälle erlebt, wo man beim Verlassen eines datenbanksensitiven Feldes ein Cancel verursacht. Dann nützt das spätere Post nichts mehr.
Grundsätzlich:
Warum speicherst du Bilder in der Datenbank? Der Zugriff ist langsamer, als über die direkte Datei und bläht die DB auch nur unnötig auf.
Wenn du also keinen wichtigen Grund hast, empfehle ich, die Bilder nicht in der DB zu speichern.