Waarde Tekstvak invullen na selectie Keuzelijsten

  • Onderwerp starter Onderwerp starter EGeen
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

EGeen

Gebruiker
Lid geworden
21 mrt 2008
Berichten
84
Goedendag,

In navolging van me vorige vraagje stuit ik op het volgende probleem.

- 1 tabel
- 1 formulier met 6 veschillende keuzelijsten met invoervakken en 2 tekstvakken
- De gegevens voor de keuzelijsten zijn verkregen uit die ene tabel met de SELECT DISTINCT functie.

Het moet als volgt komen:

Na het invullen van 6 verschillende keuzelijsten(met invoervak) moet na het invullen van het laatste tekstvak (tekstvak aantal (zelf in te vullen)) de laatste tekstvak automatisch worden ingevult.
In deze laatste tekstvak komt de prijs te staan van het product die net doormiddel van de keuzelijsten is geselecteerd. Hoe doe ik dit automatisch?

Ik had al iets in me hoofd als:

CbPrijs.Value = Select Prijzen.Value From Prijzen Where "Prijzen.Soort = CbSoort.Value" And Prijzen.Merk = CbMerk.Value" etc...

Tabel heet dus "Prijzen"
de Cb'tjes zijn de keuzelijsten

Of kan dit beter via een query waarvan ik dan niet precies weet hoe deze inelkaar moet worden gestoken?
 
Er vanuitgaande dat het tekstvak Aantal txtAantal heet en het tekstvak Totaal txtTotaal, en je prijs dus cbPrijs, moet je het volgende doen op de gebeurtenis <Na bijwerken> van het tekstvak txtAantal.

Me.txtTotaal=me.txtAantal.Value * cbPrijs

Dan wordt bij elke wijziging op het vak Aantal de prijs opnieuw berekend.
Waarschijnlijk niet nodig, maar je weet maar nooit:
Me.txtTotaal.Requery
er nog bij zetten, als de totalen niet meeveranderen.
 
De totaalprijs moet ik hierna nog even doen, maar daar kom ik denk ik wel uit, in ieder geval met deze instructie vast wel :D.

Het gaat erom om de goede prijs te zoeken uit de tabel met de ingegeven waarden van de keuzelijsten.
De keuzelijst van bijvoorbeeld merken wordt ingevult doormiddel van Select Distinct Prijzen.Merken From Prijzen.

In deze tabel staan dus alle producten en prijzen. Enkel moet nu de prijs van het gekozen product (via de 6 keuzelijsten) na invulling van de laatste tekstvak (het aantal) de prijs worden bijgezocht in de tabel. ( en worden weergegeven in het tekstvak CbPrijs):o
 
Alle invuldingen op het formulier is iets Cb :p
Keuzelijsten:
CbSoort, CbMerk, CbProducten, CbGlans, CbInhoud, CbKleur,

Tekstvakken:
CbAantal (het aantal dat de klant meeneemt)
CbPrijs (hier moet de prijs automatisch komen te staan)
 
Waar sla je dan de prijzen op?
Normaal gesproken heb je een tabel Produkten, met daarin o.a. de prijs. Ik stel me zo voor, dat je prijs bij jou in de tabel Inhoud staat?
 
Ik heb maar "1" tabel. Hierin staan alle gegevens van de producten. Dus ook de prijs.
Enkel moet de prijs automatisch worden weergegeven in het formulier van het gekozen product.

Tabel = Knipsel 1
Formulier = Knipsel 2
 

Bijlagen

  • Knipsel1.JPG
    Knipsel1.JPG
    30 KB · Weergaven: 107
  • Knipsel2.JPG
    Knipsel2.JPG
    33,8 KB · Weergaven: 111
Als alles uit één tabel komt, dan kun je met veel minder keuzelijsten uit de voeten. Want al die keuzelijsten peuren hun gegevens dan toch ook uit diezelfde tabel? In dat geval zou ik de gegevens ophalen in tekstvakken door in die tekstvakken te verwijzen naar de overige waarden uit een van de andere keuzelijsten. Dat doe je door in het besturingselement van (bijv) de prijs de formule: =cbMerk.Column(3) te zetten, waarbij in dit voorbeeld de prijs in kolom 4 van de keuzelijst staat. (omdat kolom 1 Column(0) is...)
 
Ik heb op deze manier ervoor gekozen omdat er anders moet worden gekozen uit een lijst van om na bij de 1000 producten. Als die in 1 keuzelijst moet worden gekozen is een beetje onhandig. Op deze manier kan je een selectie maken per soort product etc.. De gekozen producten worden opgeslagen in een orderdetailtabel voor een bepaalde klant. Hierachter moet daarom de prijs bij worden gezocht aangezien deze anders geen factuurbedrag kan worden opgemaakt.
 
Dat maakt voor de functie van het tekstvak dus niet uit; je gebruikt de verschillende keuzelijsten dus a.h.w. om de selectie steeds te verfijnen?
In dat geval zou ik overigens ook de keuzelijsten standaard op Disabled zetten, behalve de eerste natuurlijk. Hiermee dwing je de gebruiker om alle keuzelijsten door te lopen in de goede volgorde. Het tekstvak geef je dan als besturing: [LaatsteKeuzelijst].Column(#) waarbij # dus het nummer is van de kolom-1.
 
Als ik het zo bemerk, klinkt het goed, Ik neem aan dat u dan bedoeld dat de vergrendeling per ingevulde keuzelijst automatisch eraf gaat na invulling van de eerdere.

Dus hij moet de rij opzoeken van de laatst ingevulde keuzelijst en daar de waarde van de volgende kolom in de tekstvak zetten?.. Zou u mij dan enige tip kunnen geven hoe dit eruit komt te zien met VBA?

Hartelijk dank, u heeft in ieder geval al mij een goede zet in de richting geduwd :D
 
Okee, hopeloos, al weken zit ik te prutsen maar lukt me nog niet.

Ik heb een query gemaakt waar als het goed is maar 1 record uitkomt.
Van deze record moet de waarde (5e kolom ofzo "prijzen") van deze record gekopieerd worden naar het tekstvak in het formulier.

Hoe kopieer ik deze waarde?
(automatisch VBA)
 
Waar hangt deze query aan? Het formulier, of een keuzelijst?
 
keuzelijst.. na het invoeren van een van de laatste keuzelijsten op het formulier moet deze eigenlijk worden uitgevoerd. (in ieder geval is de bedoeling :confused:)
 
Je bedoelt: je hebt met je keuzelijsten één record gefilterd, en dat staat nu op het formulier. En nu moet er iets mee gebeuren? Opslaan, bijwerken?
En welke quey gebruik je dan nu, of wil je gebruiken?
 
Op bijgevoegd plaatje heb ik mijn formulier toonbaar.
heb een losse query die op basis van de ingevulde waardes de goede record erbijzoekt in de "Prijzendatabase". (hier staan alle producten etc etc in met de prijs)

De query moet dus als het goed is maar 1 record eruit pikken.

Nu moet eigenlijk via VBA na het invullen van het vak aantal (of prijs maar maakt volgens mij niets uit). De query worden gestart, de prijs selecteren en kopieren in het tekstvak "prijs"in het formulier..

Of moet ik me hele database omgooien dat dit niet de mooiste manier is?

Heb al wat gehoord over inner join etc.. maar volgens mij komt dat niet goed met de manier hoe ik het wil laten werken later.
 

Bijlagen

  • Knipsel.JPG
    Knipsel.JPG
    61,1 KB · Weergaven: 109
Ik neem aan, dat de prijs afhankelijk is van het gekozen produkt? Dus, als je alle keuzes hebt doorlopen, dan moet er een artikelprijs uitrollen, toch? Dat veld mis ik in je artikelenrij. Ik gebruik een vergelijkbare constructie voor mijn eigen bestellingen database, en dat ziet er uit als bijgaand plaatje.
Ik vul hierbij het veld Aantal in, waar een <Na bijwerken> op staat, die het bedrag uitrekent. (;Prijs]*[Aantal]).
Met een knop Opslaan op het hoofdformulier worden de records verder opgeslagen en verwerkt.
 

Bijlagen

  • Bestelling.jpg
    Bestelling.jpg
    11 KB · Weergaven: 85
Ah kijk! dat bedoel ik.. Het probleem is echter, er zijn ongeveer 1000 producten,

Daarom heb ik deze indeling gemaakt zodat er meerdere stappen kunnen worden doorlopen. Anders heb je een keuzelijstvak met 1000 producten, dat werkt eigenlijk niet.

Nu loop ik er dus tegenaan dat ik niet automatish een prijs heb (van 1 product) in het prijzenvak.

Dus ik krijg niet een prijs om mee te kunnen berekenen.

*hoop dat ik het zo een beetje goed uitleg*
 
Maar die prijs kun je denk ik uit de laatste keuzelijst halen? Je filtert immers steeds verder op één tabel, waar de prijs toch ook in staat? Wat ik dus doe, tis inderdaad maar een tabel met 160 artikelen, is de prijs uit de keuzelijst halen.
 
Hmm.. tjah.. zo simpel, en werkt waarschijnlijk ook nog eens best goed haha.. Zal morgen even uitproberen.. (dat ik daar niet op ben gekomen).. Enkel lijkt me het wel makkelijker dat het simpeler kan (dit aangezien er meerdere mensen mee werken en niet bij iedereen het erg soepel gaat) :D

Maar wat ik ook wil uitproberen.. hoe kan ik in een query bijvoorbeeld de waarde van de 5e kolom (de kolom prijzen) van de eerste record selecteren?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan