afbeeldingen uit de db schrijven in rapport problemen

Status
Niet open voor verdere reacties.

Deech123

Gebruiker
Lid geworden
4 apr 2012
Berichten
26
Hi guys,

ik heb een vraag.
in mijn db zit een veld met vb 3 foto's, die is als tekst veld en die haal ik eruit nu op deze manier :
Code:
Dim LString As String
Dim LArray() As String
Dim intCount As Integer

LString = Me.Foto
LArray = Split(LString, ";")

            Me.img0.Visible = False
            Me.img0.Height = 0
            Me.img0.Width = 0
            Me.img1.Visible = False
            Me.img1.Height = 0
            Me.img1.Width = 0
            Me.img2.Visible = False
            Me.img2.Height = 0
            Me.img2.Width = 0
            Me.img3.Visible = False
            Me.img3.Height = 0
            Me.img3.Width = 0
            Me.img4.Visible = False
            Me.img4.Height = 0
            Me.img4.Width = 0
            Me.img5.Visible = False
            Me.img5.Height = 0
            Me.img5.Width = 0

   For intCount = LBound(LArray) To UBound(LArray)
      ikke = ("img" & (intCount))
      Me("img" & (intCount)).Picture = "D:\SITES\_dd\productimages\" & (LArray(intCount))
      Me("img" & (intCount)).Visible = True
      Me("img" & (intCount)).Height = 3401.57480315
      Me("img" & (intCount)).Width = 4818.897637795
   Next

maar dat is geen mooie oplossing.
ik had dus vaste kaders getekend met een bepaalde hoogte, dat werkt niet omdat lege foto kaders wel niet getoond worden maar ze nemen wel de ruimte in.
de kaders standard op 1X1 zet qua grote werkt ook niet, omdat de 2 rij dan gewoon bovenop de eerste rij getoond wordt.

wat ik zoek, maar niet kan vinden is dit, bij de loop mode weet ik perfect hoeveel foto's er zijn... de ene keer zijn dat er 2 de andere keer 5.
nu zou ik willen dat de foto's die gevonden zijn op dat record per 2 naast elkaar op het rapport komen.
zijn er dan 4 foto's, dan krijg je 2 rijen met telkens 2 foto's naast elkaar.
probleem met bovenstaande code is dat als er maar 2 foto's zijn er veel wit ruimte zit onder de foto's en de volgende sectie.
het instellen van te verkleinen en vergroten op ja zetten helpt niet, omdat je image box een bepaalde afmeting heeft.

heeft er iemand een oplossing om bv in pure vba foto's uit te schrijven met 2 naast elkaar en als er meer zijn dat hij iedere keer per rij er maar 2 schrijft, tot hij ze allemaal heeft verwerkt uit de loopmode?

ik hoop dat iemand mij een tip kan geven, want op het net vind ik niets terug.

alvast bedankt voor de hulp !
D.
 
Laatst bewerkt:
Zolang je met een niet-genormaliseerde tabel blijft werken (in dat komt doordat je alle foto's in één veld zet) is er geen oplossing. Die is er dus wel: een aparte tabel maken voor de foto's.
 
octaFish, ik weet wat je bedoeld, maar het is nu eenmaal de opbouw omdat die db ook gebruikt wordt om de website te vullen.
en in webpages kan perfect loopen door de foto's.

is er een methode in VBA die dit doet (dat kan volgens mij de oplossing zijn).
iedere keer dat ik dus mijn loop doe, schrijf ik in VBA zelf een picture frame uit en vul die met de foto, ipv voorgekauwde boxen te zetten in mijn rapport.
dan als er maar 3 foto's zijn bv, zullen ook maar 3 picture boxen geschreven en gemaakt worden.

anderzijds zou het goed zijn om mss een vba code te weten die ervoor zorgt dat alle picture frames die leeg zijn - dus niet werden opgevuld - gewoon verdwijnen.
nu is mijn probleem gewoon dat ik in bepaalde gevallen met teveel wit lege ruimte zit als er bv maar 1 foto is, dan heb ik 5 lege frames die op het rapport gewoon wit ruimte innemen.

snappie? :)

D.
 
is er een methode in VBA die dit doet (dat kan volgens mij de oplossing zijn).
Nee, die is er niet. Voor de upload naar de website kun je prima een query maken die de foto's naast elkaar in één record zet. Dat doe je dan op basis van die aparte tabel die je zou moeten gebruiken... Een website mag m.i. nooit de reden zijn dat je met een niet-genormaliseerde database gaat werken. De integriteit van je db moet altijd de voorrang hebben. Op basis van een goed opgezette database kun je altijd resultaten krijgen die aan een andere opzet voldoen, zoals een query die dus alle foto's naast elkaar zet in één record. Andersom is, als het al mogelijk is, alleen met heel veel inspanning en maatwerk voor elkaar te krijgen.
Dat moet je niet alleen niet willen omdat de oplossing daarmee in de papieren gaat lopen (kun je waarschijnlijk niet zelf maken dus moet je iemand inhuren, kost veel tijd want dat is inherent aan het inhuren), het is ook nog eens bijzonder onvriendelijk in het onderhoud.
 
Wat ik kan doen is gewoon een vba code schrijven die per ID van product dat fotoveld uit elkaar haalt en dan in een aparte db schrijft, die ik kan gebruiken in access?
kan je met zo'n setup wel enkel dat uitschrijven wat je nodig hebt met 2 naast elkaar? :
tbl_fotos : IDfoto, IDproduct, fotonaam, fotopath.?

uiteraard moet ik dan wss een 2de query doen die de foto's gaat inladen van die apart tabel... ik denk met een join in de eerste query dat dit in de soep gaat lopen.
hoe doe jij dat met een aparte tabel?

D.
 
Je kunt inderdaad met een Recordset (AddNew etc.) een tabel vullen vanuit een geopende tabel. Op basis van het scheidingsteken in dat fotoveld maak je dan de nieuwe records aan. In je rapport koppel je dan de 2 tabellen aan elkaar zoals je normaal gesproken ook doet; het is immers dan een gewone één-op-veel relatie. Iets lastiger wordt het op je rapport als je 2 foto's naast elkaar wilt hebben. Ik neig dan naar een subrapport dat je opmaakt als etiket, met 2 of 3 kolommen naast elkaar, afhankelijk van hoeveel foto's je tegelijk wilt zien. Dat subrapport is dan gebaseerd op de tabel met foto's en je ziet dan de foto's op basis van de koppeling. Je subrapport past zich dan aan aan het aantal foto's.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan