foto invoegen/ veranderen in formulier

Wegens wat ik zei in #60.
 
Ik sloot de database en wilde toch nog 1 ding toevoegen.
Kijk eens naar dit:
Code:
Private Sub Cmb_00_Click()
    Dim img_of As Office.FileDialog
    Dim img_var As Variant
    Set img_of = Application.FileDialog(msoFileDialogFilePicker)
    
    
    img_of.Title = "Kies een foto!"
    img_of.Filters.Clear
    img_of.InitialFileName = CurrentProject.Path & "\foto's"
    img_of.Filters.Add "foto's", "*.jpg"
    
    If img_of.Show = True Then
        For Each img_var In img_of.SelectedItems
            foto.Picture = img_var
            Naam = Split(img_var, "\")
           Me.fotovar.Value = Naam(UBound(Naam))
        Next
    Else
        foto.Picture = (nopic)
        MsgBox "Kies een foto", vbInformation, "Geen foto gekozen"
    End If
End Sub
Met name deze regel:
[CODE]
img_of.InitialFileName = CurrentProject.Path & "\foto's"
 
Laatst bewerkt:
Jammer, ik had gehoopt dat edje ook echt zou stoppen met berichten posten. Maar hij is té verslaafd, vrees ik :).

Gelukkig zijn er inderdaad mensen die het wél kunnen oplossen, en hierbij dus een werkende versie.
 

Bijlagen

Even iets heel anders, maar het heeft wel degelijk met je database te maken: de opzet vind ik bepaald niet geweldig. Zeg maar: slecht. Waarom? hij is totaal niet genormaliseerd, omdat je voor elk land een aparte tabel hebt gemaakt. En voor zover ik kan zien, staat in elke tabel hetzelfde. Dat is een hele slechte aanpak in database land. In een database gebruik je voor objecten die van hetzelfde type zijn, namelijk altijd één tabel. In dit geval zijn dat, zo te zien, munten uit verschillende landen.

Wat is nu het grote nadeel van jouw aanpak? Om te beginnen: als er een nieuw land bij komt, moet je niet alleen een nieuwe tabel maken, maar ook een nieuw formulier en ook een nieuw rapport. Tenzij je dat leuk vindt om te doen, kost je dat nodeloos veel (verspilde) tijd die je veel beter aan wat anders had kunnen besteden. Elke database ontwerper (en laat ik nu maar even net doen of ik er ook een ben) kan je vertellen dat je veel makkelijker, beter en sneller kan werken als je één tabel hebt, één formulier en één rapport.

Dat vereist slechts één kleine aanpassing in je systeem: in die ene tabel komt een extra veld ([Land]). Bij het toevoegen van een nieuwe munt vul je vervolgens niet alleen de muntgegevens in, wat je nu ook doet, maar óók het juiste land. Zelf zou ik voor de landen een aparte tabel maken, waarin je naast een landcode en de landnaam ook een veld toevoegt voor de foto van de vlag bijvoorbeeld. En/of velden waarin je de landskleuren vastlegt. Met die gegevens kun je (zie verderop) het formulier opleuken als je munten van een specifiek land aan het invullen bent: je laat dan ook de vlag zien, en maakt het formulier op in de kleuren van dat land.

Hoe ga je dan, als je het zo hebt ingericht, te werk? Heel simpel: op je startformulier kun je nog steeds met de knoppen werken, of (zou ik doen) met een keuzelijst. Met één van de twee opties kies je dan een land, en vervolgens wordt het invulformulier geopend met een filter op dat land. Zodat de landinstellingen op het formulier actief zijn, en je gelijk de munten kan gaan invoeren met het juiste land geselecteerd. Kies je een ander land, dasn zie je andere kleuren en een andere vlag.
Simpel om mee te werken, en je bent niet meer afhankelijk van aparte tabellen en formulieren. Je kiest immers eerst een land uit de tabel Landen.

Deze aanpassing is nu nog (als je db actueel is) simpel te implementeren, dus ik raad je aan om dat ook echt te doen. Omdat het zo weinig werk is, wil ik dat ook wel voor je maken.

Hoe dan ook: in je huidige database is mijn oplossing (een aparte procedure voor het zoeken van een foto) vele malen handiger als de code die anderen je hebben aangereikt waarbij de code bij elke knop gezet moet worden. Dat zijn allemaal extra procedures onder knoppen die je niet nodig hebt als je met één functie werkt. Zelfs met jouw database is mijn oplossing dus een stuk simpeler, omdat je bij elke knop dezelfde functie aanroept. Wil je dan iets aanpassen, dan is dat één aanpassing, in plaats van 6 (of meer).

Maar kijk eerst maar eens hoe de oplossing werkt in Andorra, dan kun je daarna over de rest van dit bericht nadenken :).
 
Suggestie van #65 lijkt mij idd een betere aanpak want er zijn namelijk 24 landen.
 
Omdat het zo weinig werk is, wil ik dat ook wel voor je maken.
Lijkt mij ontzettend leuk om eens een voorbeeld te zien van hoe een professionele databaseontwikkelaar dit aanpakt.
 
Iets teveel eer, maar ik zal proberen om het voorbeeldje vandaag rond te krijgen. Ik ben al een heel eind op dreef :).
 
Omdat onze professionele databaseontwikkelaar heel druk is, heb ik alvast maar een beginnetje gemaakt. En zo spannend is het allemaal niet. De database bestaat nog maar uit 2 tabellen:
munt.jpg
Zoals je kunt zien heb ik ook een beetje gesnoeid in de velden. De velden Dubbel en Status zijn mijns inziens niet nodig. Je kan de waarde van die velden afleiden uit Inbezit (ik neem tenminste aan dat dat een aantal is). Dubbel is trouwens een status denk ik.
De waarde van de status is afhankelijk van Inbezit:
0 - Ontbrekend
1 - Enkel
>1 - Dubbel.

Bij het rapport kan je selecteren op Land of Status. Als je geen land invult krijg je alle landen. Bij de status moet je een status kiezen. Speel er maar eens mee.
 

Bijlagen

Vergeten te melden: ik ga ervan uit dat de plaatjes in een map "Foto's" en dat die map op zijn beurt in dezelfde map staat als waar de database staat.
 
Omdat onze professionele databaseontwikkelaar heel druk is
Die zit helaas met vervelende familie-omstandigheden. Dus ik probeer (al was het maar om even afleiding te hebben) wel mee te kijken, maar op dit moment kan ik niks toezeggen.
 
Terug
Bovenaan Onderaan