Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Access 2010 Datenbank blaeht sich auf wegen Bildern unter "Bild einfügen"

349 views
Skip to first unread message

Elisabeth Reuter

unread,
Feb 25, 2011, 11:42:33 AM2/25/11
to
Hallo,

ich habe das Problem, dass sich bei mir die Datenbank aufbläht, weil ich in
einem Bericht per Code die Bilder tausche. Ich hatte da beim Bild die
Eigenschaft "Freigeben" ausgewählt statt verknüpft.

Jetzt sind in meiner Datenbank hunderte Bilder gespeichert (inlusive vielen
Duplikaten) und ich bringe sie nicht mehr wirklich weg.

Ich sehe die Bilder wenn ich bei einem Formular im Entwurfsmodus auf "Bild
einfügen" klicke und kann sie dort auch löschen - aber nur einzeln. Kann man
das auch irgendwie rationeller machen?

Beste Grüße

Elisabeth

Andreas Vogt

unread,
Feb 28, 2011, 2:51:46 PM2/28/11
to
Hallo,
Bilder sollte man nicht in Access speichern sondern nur den Bildnamen
und Bildpfad und zur Laufzeit den Bildsteuerelementen die Bilder
zuordnen per picture-Eigenschaft.

Gruß Andreas

Henry Habermacher

unread,
Mar 1, 2011, 3:53:35 AM3/1/11
to
Hallo Elisabeth

Elisabeth Reuter wrote:

Willst Du die Bilder komplett loswerden, also auch die Information, welches
Bild da drin ist? In diesem Fall kannst Du mit einem Statement der folgenden
Art arbeiten:

UPDATE DeineTabelle SET DeinBildFeld = NULL

Das löscht dann den kompletten Inhalt des Bild Feldes. Das solltest Du aber
nur tun, wenn Du vorher eine Sicherung der Datenbank gemacht hast. Könnte ja
sein, dass es nicht ganz das ist, was Du möchtest.

Gruss
Henry

Karl Donaubauer

unread,
Mar 1, 2011, 4:01:27 AM3/1/11
to

Das Löschen hat eh Henry schon beantwortet.
Wie du dann besser mit Bildern umgehen solltest, steht in

Bilder speichernhttp://www.donkarl.com?FAQ2.2

--
Servus
Karl
*********
Access-FAQ: http://www.donkarl.com

Karl Donaubauer

unread,
Mar 1, 2011, 4:52:08 AM3/1/11
to

(Mir ist vorhin ein Beitrag zu früh entfleucht. Man sollte nicht x Dinge
gleichzeitig tun. Falls ihn noch jmd. sieht, dann bitte ignorieren.)

Da du etwas von "Bilder per Code tauschen" schreibst, hast
du die Bilder vielleicht gar nicht in einer Tabelle, wie die anderen
annahmen, sondern "nur" in Bild-Steuerelementen in Berichten
und/oder (?) Formularen - du führst beides an.

Falls dem so ist und du z.B. alle Bilder in allen Bildsteuerelementen
von Formularen loswerden willst, kannst du diesen Code versuchen:

Dim frm As Object
Dim ctl As Control

For Each frm In CurrentProject.AllForms
DoCmd.OpenForm frm.Name, acDesign
For Each ctl In Forms(frm.Name).Controls
If ctl.ControlType = acImage Then
ctl.Picture = ""
'DeleteControl frm.Name, ctl.Name
End If
Next ctl
DoCmd.Close acForm, frm.Name, acSaveYes
Next frm

Mit Berichten geht das analog.
Ob du ctl.Picture = "" verwenden willst oder stattdessen
mit DeleteControl das ganze Steuerelement löscht,
musst du entscheiden.

Elisabeth Reuter

unread,
Mar 1, 2011, 4:56:41 PM3/1/11
to
> Da du etwas von "Bilder per Code tauschen" schreibst, hast
> du die Bilder vielleicht gar nicht in einer Tabelle, wie die anderen
> annahmen, sondern "nur" in Bild-Steuerelementen in Berichten
> und/oder (?) Formularen - du führst beides an.

Exakt. Ich habe ein Bildelement in einem Formular und in einem Bericht wo
ich das Bild für einen Artikel folgendermaßen austausche (in der Beim
Anzeigen Eigenschaft des jeweiligen Artikels):

Bildvorschau.Picture = CurrentProject.path & "\Fotos\" & id & ".jpg"

Dummerweise hatte ich bei Bildtyp "Freigegeben" ausgewählt. Das passiert
ganz leicht indem man bei Access 2010 das im Entwurfsmodus prominent
platzierte "Bild einfügen" verwendet und dann den Bildtyp eben nicht auf
"Verknüpft" abändert.

Klickt also vom ersten Datensatz in den zweiten und wieder zurück hat man
dann in der Bildergalerie die Access 2010 unter "Bild einfügen" anzeigt
bereits drei Bilder gespeichert. Beim nochmaligen Wechsel hin und her zwei
weitere. Es sind zwar immer die gleichen Bilder, aber das macht es nicht
weniger lästig. Und die Datenbankgröße wächst dabei immer weiter an.

Wenn also irgend jemand ein stetiges Anwachsen der Datenbank feststellt,
obwohl es sich um das Frontend handelt, und ein Komprimieren und Reparieren
absolut nichts bringt - vielleicht liegt es ja daran.

Abhilfe schafft das Ändern des Bildtyps auf "Verknüpft" oder zur Not auch
auf "Eingebettet"


> Falls dem so ist und du z.B. alle Bilder in allen Bildsteuerelementen
> von Formularen loswerden willst, kannst du diesen Code versuchen:
>
> Dim frm As Object
> Dim ctl As Control
>
> For Each frm In CurrentProject.AllForms
> DoCmd.OpenForm frm.Name, acDesign
> For Each ctl In Forms(frm.Name).Controls
> If ctl.ControlType = acImage Then
> ctl.Picture = ""
> 'DeleteControl frm.Name, ctl.Name
> End If
> Next ctl
> DoCmd.Close acForm, frm.Name, acSaveYes
> Next frm


So wie ich das verstehe, löscht der Code nur das, was im Bildsteuerelement
gespeichert ist oder sehe ich das falsch? Wenn man bei Access 2010 jedoch
wie oben beschrieben auch nur ein einziges Bildsteuerelement mit der
Eigenschaft "Freigegeben" einfügt, dann wird bei jedem Ändern des Bildes ein
neuer Eintrag in der Galerie angelegt.

Grundsätzlich ist diese Eigenschaft ja nicht schlecht, man kann damit in der
Datenbank zB. ein Foto oder Logo ein mal Speichern und in beliebig vielen
Steuerelementen verwenden. Tauscht man dann in der Galerie das Logo ein mal
aus, ist es überall geändert. Das spart Zeit und Speicherplatz.

Man muss sich eben nur davor hüten, in einem solchen Bildsteuerelement den
Inhalt häufig per Code zu ändern. Dann kann es einem nämlich passieren, dass
man eine Stunde damit verbringt immer und immer wieder folgendes zu machen

Klick auf "Bild einfügen"
Rechtsklick auf ein Bild
Klick auf "Löschen"

Beste Grüße

Elisabeth

Karl Donaubauer

unread,
Mar 1, 2011, 8:57:12 PM3/1/11
to
Elisabeth Reuter wrote:
> ...

> Ich habe ein Bildelement in einem Formular und in einem
> Bericht wo ich das Bild für einen Artikel folgendermaßen austausche
> (in der Beim Anzeigen Eigenschaft des jeweiligen Artikels):
>
> Bildvorschau.Picture = CurrentProject.path & "\Fotos\" & id & ".jpg"
>
> Dummerweise hatte ich bei Bildtyp "Freigegeben" ausgewählt. Das
> passiert ganz leicht indem man bei Access 2010 das im Entwurfsmodus
> prominent platzierte "Bild einfügen" verwendet und dann den Bildtyp
> eben nicht auf "Verknüpft" abändert.
> ...

> Abhilfe schafft das Ändern des Bildtyps auf "Verknüpft" oder zur
> Not auch auf "Eingebettet"
> ...

Ok, jetzt habe ich verstanden, was gemeint ist.

> Man muss sich eben nur davor hüten, in einem solchen
> Bildsteuerelement den Inhalt häufig per Code zu ändern. Dann kann
> es einem nämlich passieren, dass man eine Stunde damit verbringt
> immer und immer wieder folgendes zu machen
>
> Klick auf "Bild einfügen"
> Rechtsklick auf ein Bild
> Klick auf "Löschen"

Ich habe gerade kein A10 hier, aber was passiert denn beim
Import aller DB-Objekte in eine neue accdb? Gehen die Bilder
dabei verloren, wenn sie aktuell nicht verwendet werden?
Falls ja, wäre das schneller als 1 Stunde zu klicken.
Falls nein, hätte MS mal mitgedacht ;-) ... oder gar die
Importoptionen erweitert?

Elisabeth Reuter

unread,
Mar 2, 2011, 2:41:51 AM3/2/11
to
> Ich habe gerade kein A10 hier, aber was passiert denn beim
> Import aller DB-Objekte in eine neue accdb? Gehen die Bilder
> dabei verloren, wenn sie aktuell nicht verwendet werden?
> Falls ja, wäre das schneller als 1 Stunde zu klicken.
> Falls nein, hätte MS mal mitgedacht ;-) ... oder gar die
> Importoptionen erweitert?

Ich schätze, dass es so funktionieren müsste. Ich habe es aber trotzdem
händisch gemacht, weil ich mir nicht sicher war ob ich nicht vergesse, etwas
mitzukopieren, was mir nachher Probleme bereiten könnte, wenn ich nicht mehr
daran denke (zB. irgendwelche Import/Export-Optionen).

Beste Grüße

Elisabeth

0 new messages