Seite 1 von 1

'Handhabung' von Bildern in Base

Verfasst: So 18. Nov 2018, 10:32
von D-Bert
Hallo Leute,

habe nun mit eurer Hilfe meine erste Datenbankanwendung (für meine Modelleisenbahn-Sammlung) am laufen.

Da werden auch 4 graphische Kontrollfelder verwendet um je Datensatz in einem Formular bis zu 4 Bilder, die auf einem externen Laufwerk liegen, anzuzeigen. Funktioniert einwandfrei, auch können ja 'standardmäßig' die Bilder durch Doppelklick per Auswahlfenster gewählt und der Pfad dadurch in die DB übernommen werden.

Könnte man aus dem Formular heraus ein externes Programm aufrufen (z.B. Paint etc.) um das Bild in seiner vollen Größe / Auflösung anzuzeigen und eventuell auch gleich zu bearbeiten ?

Grüße, Bert


p.s: verwende Windows-7

Re: 'Handhabung' von Bildern in Base

Verfasst: Mi 21. Nov 2018, 18:26
von F3K Total
Hallo Bert,
ja, das geht, ist aber vom Aufbau deines Formulares abhängig, hier mal ein Makro das in meinem Formular funktioniert,
Hier befindet sich der Pfad zum Bild in der Spalte URL der Datengrundlage des Formulares MainForm

Code: Alles auswählen

Sub S_open_Bitmap_Mspaint
sfolder = replace(ThisDatabasedocument.url,ThisDatabasedocument.Title,"")
oform = thiscomponent.drawpage.forms.MainForm
surl = sfolder + oform.columns.URL.getstring
sPath = convertfromurl(surl)
Shell( "mspaint.exe " & sPath,1)
End Sub
Gruß R

Re: 'Handhabung' von Bildern in Base

Verfasst: Fr 23. Nov 2018, 16:41
von D-Bert
Hallo R,

bin dir wirklich dankbar für deine Hilfe. Versuche mich einzulesen aber das Thema ist riesig, komme mir vor wie 'lost in space' :roll:

Dein Beispiel lief erstmal nicht bei mir: erste Zeile bringt Fehler, verstehe auch nicht das 'replace'. Hab' ich erstmal weggelassen und probiert und ich bekomme den Pfad in die "surl".
Dann funktioniert aber convertfromurl() nicht, sPath und surl behinhalten z.B. mit print ausgegeben immer den gleichen Inhalt, genau das was im Textfeld in der Tabelle steht.
Der Beispielcode aus der Base-Hilfe funktioniert, wandelt aber mit converttourl() den Pfad mit 3 führenden "/" um, anders als Base ihn mit der Dateiauswahlbox beim Bild-Auswählen einfügt. Auch wird dann beim shell-Aufruf der Pfad noch mit einem vorangestellten "C:\" erweitert und Paint bringt den Fehler, daß es die Datei nicht findet unter "C:\f/ ..."

Hab' mir erstmal so beholfen, daß ich den Pfad (den ich ja kenne) selbst zusammensetze und nur den Dateinamen dranhänge. Bin happy, das das jetzt so funktioniert. Mit 4 Buttons kann man so prima und schnell die Bilder ansehen.

Code: Alles auswählen

Sub S_open_Bitmap_Mspaint
oform = thiscomponent.drawpage.forms.MainForm
surl = oform.columns.Bild1.getstring
sPath = Mid(surl, 17)
Shell( "mspaint.exe f:\___H0\Fotos\" & spath,1)
End Sub
Zum Bearbeiten (z.B. Zuschneiden und die Auflösung reduzieren) muß ich noch bei geöffnetem Bild den Datensatz-Zeiger im Base-Formular von Hand verstellen, sonst kann ich das Bild in Paint nicht (unter gleichem Namen) speichern, klar: weil es in Base auch noch geöffnet ist.

Hättest du da bitte einen Tip für mich ?
(ich finde einfach keinen SQL- oder anderen Befehl, wie ich den Datensatzzeiger in der geöffneten Tabelle um eins weiterstellen kann, das könnte ich ja vor dem Shell() Befehl noch ausführen ... ideal wäre, wenn man nach der Rückkehr von Paint wieder zurück auf den gleichen Datensatz käme)
oder kann man die Bilder im Base-Formular vorübergehend 'abschalten' ?

Viele Grüße, Bert

Re: 'Handhabung' von Bildern in Base

Verfasst: Sa 24. Nov 2018, 10:29
von F3K Total
moin,
ja man kann den Datensatzzeiger verschieben z.B. mit

Code: Alles auswählen

if not oForm.next then oform.first
Gruß R

Re: 'Handhabung' von Bildern in Base

Verfasst: Mi 28. Nov 2018, 11:20
von D-Bert
Hallo R,
funktioniert prima, vielen Dank !

Habe nun noch das Warten auf das ext. PRG eingerichtet und danach wird der akt.Datensatz zurückgestellt.

Code: Alles auswählen

if not oForm.next then oform.first
Shell( "mspaint.exe f:\___H0\Fotos\" & spath, 1, "",true)
if not oForm.previous then oform.last
So kann man komfortabel die Bilder aufrufen und gleich bearbeiten, müsste eigentlich jeder mit Bildern in einer Datenbank verwenden können.
Bei mir sind das immerhin ca. 1600 Objekte/Datensätze mit mehr als 4000 Bildern.

Grüße, Bert