Invoerformulier obv andere tabel

Status
Niet open voor verdere reacties.

jokerace

Gebruiker
Lid geworden
4 sep 2013
Berichten
10
L.s.

Ik heb al een hele tijd niets meer gedaan in Access. Heb wel gezocht naar de m.i. hele simpele oplossing, maar ik kan er niet mee uit de voeten.
Ik heb een tabel met data. Nu wil ik een invoerformulier waar ik een keuze kan maken uit de waardes in kolom 1 en dat dan de waardes uit de rest van de kolommen automatisch wordt gevuld.
 
Ik snap je vraag niet helemaal, want waarop is dat invoerformulier gebaseerd? Je zegt dat je 'een tabel met data' hebt. Lijkt mij logisch, want een database zonder tabel is niet zoveel. En dat die tabel dan gegevens bevat, ach, da's zijn enige reden van bestaan, niet? :). Op die tabel maak je vrij simpel een formulier met de wizards, en dan kun je gegevens gaan invoeren/muteren. Volgens mij ben je zelf ook al zover. Maar wat bedoel je met:
Nu wil ik een invoerformulier waar ik een keuze kan maken uit de waardes in kolom 1 en dat dan de waardes uit de rest van de kolommen automatisch wordt gevuld.
 
Alvast bedankt voor je hulp

Ik wil een invoerformulier maken die de data haalt uit de bestaande tabel en wegschrijft in een nieuwe tabel. even een voorbeeld :

rij 1 tabel 1 : product | standaardeenheid | gram vet | Koolhydraten | gram eiwitten
amandelen | 100 gram | 50 | 60 | 10

Nu wil ik in het formulier "amandelen" kunnen kiezen, een invoerveld maken voor de eenheid, dus zeg 0,5 en dat er automatisch velden worden gevuld met 25 (0,5*50), 30 (0,5*60) en 5 (0,5*10)
 
Wat wil je met het invoerveld (ik neem aan tekstvak). Of bedoel je een gekoppelde keuzelijst, waarin je kiest uit een item in keuzelijst 1 en vervolgens de tweede keuzelijst vult met alleen de mogelijkheden die passen bij je eerste keuze?

Ik heb zelf hierin ook flink zitten stoeien in het begin en ik heb bijvoorbeeld bij een N.A.W. formulier als geslacht gekozen werd, dat automatisch bij het tekstvak Aanhef de juiste aanhef wordt ingevuld die past bij het geslacht. Als je zoiets bedoeld kan ik je wel op weg helpen.

mvg
Freddy
 
Je hebt dus, als ik het goed begrijp, een stamtabel met (in dit geval) producten, en je wilt in een andere tabel een product kiezen en met de gekozen waarden kunnen rekenen. Dat kan, al zou ik als ik jouw was in de nieuwe tabel alleen het ProductID opslaan, en verder niks. Want gerelateerde gegevens kun je altijd in een query laten zien. En gebruiken in berekeningen. Tenzij het om gegevens gaat die regelmatig veranderen, dan is het een ander verhaal. In een tabel Artikelen heb je een ArtikelID en een Prijs, en de prijs verandert uiteraard regelmatig. Zou je in de tabel Verkoop alleen het ArtikelID opslaan, en 3 jaar later een query maken om de verkopen te totaliseren, en je kiest in de tabel Verkoop het ArtikelID en uit de tabel Artikelen het veld Prijs, dan reken je met de op dat moment actuele prijs, en niet met de prijs die op het moment van verkoop gold. Daarom zie je dat bij verkopen niet alleen het ArtikelID in Verkoop wordt opgeslagen, maar ook Prijs. Je kunt dan altijd met de correcte prijs werken.

Vraag is dus: welke situatie is op jou van toepassing? Want het maakt een groot verschil voor de oplossing.
 
Dan zal ik de case even beter omschrijven.

Het is de bedoeling dat ik een soort eetdagboek ga bijhouden. Dus iedere dag vul ik een aantal velden in voor ontbijt, lunch, diner en tussendoor. Per dag wordt er dan een record aangemaakt met die gegevens. Hierop kan ik dan weer query's loslaten die gemiddelden berekenen over een bepaalde periode.
 
Dat had ik al begrepen :). Je kiest derhalve een product waarvan je de details weet, en kunt opzoeken in de tabel Producten. Mijn vraag was dus: veranderen die gegevens regelmatig, en is het dus nodig dat je altijd de dan geldende waarde ook opslaat, of werk je met vaste gegevens? De hoeveelheid Vet, Koolhydraten en Eiwit in amandelen zal toch niet wekelijks veranderen?
 
idd zijn het vaste gegevens. Als er wijzigingen zijn dan is het niet erg als dat overal wordt aangepast, want zoals je al zegt zullen tomaten niet ineens een dubbele voedingswaarde krijgen, hoewel met genetische manipulatie je het nooit zeker weet :D
 
In dat geval is het simpel. In je tabel Eetdagboek leg je dus een ProductID (een veld overigens dat ik niet terugzie in je voorbeeldje uit bericht #3) vast, plus de hoeveelheid. Op je formulier fEetdagboek maak je een keuzelijst met invoervak die je koppelt aan de tabel Producten, en waar je een query voor gebruikt (maakt de wizard voor je) waar alle velden in zitten die je nodig hebt, dus dat zijn vermoedelijk dan ProductID, ProductNaam, Eenheid, [gram vet], Koolhydraten, [gram eiwitten]. Waarschijnlijk wordt het veld ProductID verborgen, en dat is ook goed, want je wilt zoeken op naam en niet op een getal.

Op je formulier heb je dus de keuzelijst staan waarin je een product kiest, en een veld [Hoeveelheid] waarin je een getal typt. Daarachter zet je nu een aantal tekstvelden die je niet koppelt aan een veld. Ik heb een voorbeeldje gemaakt met wat logische veldnamen, dus dat zou je wel moeten kunnen ombouwen.
Ik heb een gebeurtenis gemaakt op het object <Aantal> waarmee je de berekening start. En hij moet ook worden gestart als je een ander product kiest, dus daar zit de procedure ook. Daarom heb ik de berekeningen in een functie gezet, anders blijf je typen.
Code:
Private Sub Aantal_Change()
    If Me.Aantal.Text & "" = "" Then
        Bijwerken 0
    Else
        Bijwerken Nz(Me.Aantal.Text, 0)
    End If
    Me.Aantal.SelStart = Me.Aantal.SelLength
End Sub

Code:
Private Sub Product_Click()
    Bijwerken Me.Aantal.Value
End Sub

Code:
Function Bijwerken(Aantal As Integer)
    Me.txtEenheid = Me.Product.Column(2)
    Me.txtVet = Me.Product.Column(3) * Aantal
    Me.txtKoolhydraten = Me.Product.Column(4) * Aantal
    Me.txtEiwit = Me.Product.Column(5) * Aantal
    Me.Refresh
End Function
 
Het eerste probleem zit 'm in je tabel [Dagboek]. Daar zit maar één veld in, en dat is een ID veld met autonummer. Dus die tabel is nu onbruikbaar. Maak daarin eerst de velden ProductID, Aantal, Datum Memo etc. aan (ik weet natuurlijk niet wat je er in wilt hebben). Dan kun je op de tabel een formulier maken, en dan kun je verder sleutelen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan