Automatisch invullen van een tekstveld

Status
Niet open voor verdere reacties.

Htt_wng

Gebruiker
Lid geworden
9 jul 2005
Berichten
58
Ik volg op dit moment een opleiding bedrijfskundig informatica en ben nu bezig met een 3e jaarstage bij een handelsorganisatie.
De directie heeft mij gevraagd om in Acces een calculatie formulier op te maken. Wat ik wil is dat een op basis van een selectie uit een keuzelijst de juiste prijs krijgt op een tekstveld. ik heb hieronder een printscreen toegevoegd van de tabel en van het formulier. Uiteindelijk is het de bedoeling dat wanneer de verschillende artikelen zijn uitkozen de prijzen bij elkaar worden opgeteld en dit word weergegeven in tekstvak met de totaalprijs.
Ik hoop dat iemand mij hierbij kan helpen

Schermafbeelding 2013-01-04 om 12.28.06.png
Schermafbeelding 2013-01-04 om 12.19.29.png
 
Je kunt de prijs uit de keuzelijst halen, als je hem tenminste in de Rijbron van de keuzelijst hebt gezet. Stel dat het derde veld in de keuzelijst de prijs is, dan geef je het tekstvak als Besturingselementbron: =Keuzelijst.Column(2).
 
Dank je voor het bericht OctaFish. Maar het is nog steeds niet gelukt.
Ik heb de 1e keuzelijst de naam kzlrecept1 gegeven. Ik heb ook de prijs in het rijbron gezet.
hieronder heb ik paar screenshots toegevoegd om het wat duidelijker te maken.

Wanneer ik nu een artikel kiest in de keuzelijst kzlrecpet1 word er in de tekstvak #Naam? te staan.
Schermafbeelding 2013-01-04 om 13.55.59.pngSchermafbeelding 2013-01-04 om 13.55.36.pngSchermafbeelding 2013-01-04 om 13.55.13.png
 
Laatst bewerkt:
Je bent al tijdje lid van HelpMij, dus je zou kunnen weten dat nodeloos. quooten niet nodig is, en ook niet erg op prijs wordt gesteld. Als je reageert op een bericht, hoef je dat niet te quooten, dus graag de quoot verwijderen!
Je probleem komt doordat je niet overal een waarde hebt voor de prijs. Er valt dan dus niks weer te geven. Gebruik de Nz functie eens om een leeg veld om te zetten naar het getal 0 en kijk dan of het veld wel gevuld wordt.
 
OctaFish het is me gelukt heel erg bedankt voor je reactie. Volgende stap is optellen van alle prijzen voor een totaal prijs. Weetje jij toevallig hoe je dat moet doen??? Dus van alle tekstvelden waar een prijs in staat moet een totaal bedrag uit komen in een andere tekstveld.
ps ik heb de quote verwijderd
 
Ik zag het :thumb:
Een totaaltje kun je simpel maken door de tekstvakken bij elkaar op te tellen. Dus als <Besturingselementbron> een formule als: =[Tekstvak1]+[tekstvak2] zou al moeten werken. Enige probleem: een formulier wordt eenmalig opgebouwd; de tekstvelden worden dus bij het bladeren door de records vernieuwd/gevuld met de tabelgegevens, en verder niet. Dus als je iets invuld in een tekstveld, dan gebeurt er niks met het veld waar de formule in staat,omdat die berekening al gemaakt is.
Je moet derhalve een herberekening laten uitvoeren op het tekstveld waar het totaal in moet komen. Zelf gebruik ik de <Bij wijzigen> gebeurtenis van de velden die het totaalbedrag bepalen. In die gebeurtenis zet je dan de formule die het totaalveld vult. Zo'n formule ziet er dan uit als: Me.Totaalveld = Me.Tekstvak1 + tekstvak2. Bijkomend voordeel is dat je de <Besturingselementbron> van het Totaal vrijhoudt om aan een tabel te koppelen.
 
Het is me niet gelukt om het totaal bedrag uit te laten rekenen. volgens mij vergeet ik nog iets. ik heb hier onder een paar printscreen toegevoegd. Ik heb bij de velden die de totaal bedrag bepaald (dus de velden waar de prijs in staat van het product) het volgende gedaan. <gebeurtenis> <bij wijzigen> Me.totaal = Me.off_prijs3 + off_prijs2. Wanneer ik dit gedaan heb word er niks in het tekstveld totaal weergegeven.
Schermafbeelding 2013-01-07 om 12.28.32.pngSchermafbeelding 2013-01-07 om 12.28.24.pngSchermafbeelding 2013-01-07 om 12.28.05.pngSchermafbeelding 2013-01-07 om 12.36.50.png
 
Laatst bewerkt:
Je hbt de code bij een gebeurtenis gezet, maar geen gebeurtenis aangemaakt. In beginsel kun je volstaan met het wegknippen van de formule die er nu staat, en dan op de knop met de drie puntjes te klikken. Vervolgens kies je dan <Gebeurtenisprocedure>. Nu kom je in het VBA scherm, waar je de echte code moet maken. In jouw geval: plakken. Er komt dan te staan:
Code:
Private Sub off_prijs3_Change()
    Me.totaal=Me.off_prijs3 + Me.off_prijs2
End Sub
En dan werkt de code. Bij elke wijziging van off_prijs3 zal het totaal opnieuw worden berekend. Overigens heb je nu nog geen foutcontrole, dus de berekening wordt ook uitgevoerd als je tekst invoert. Daar zou ik dus ook een check op maken.
 
Het is gelukt met het optellen van de prijzen voor een totaal bedrag echter word er verkeerd opgeteld. Dit terwijl ik in het tabel heb aangegeven dat het veldnaam prijs een gegevenstype numeriek moet zijn. Het optellen van het totaal bedrag gaat als volgt

bijvoorbeeld
off_prijs3 = 120
off_prijs2 = 420
totaal = 120420

Schermafbeelding 2013-01-07 om 16.35.01.png
 
Ik zou de veldeigenschap op Valuta hebben gezet, maar goed, als het een numeriek veld is, dan zou het toch moeten werken. Maar blijkbaar vindt Access dat je twee tekstvelden hebt, en die worden dan samengevoegd, niet opgeteld. Je kunt, om alle twijfel weg te halen, de 'getallen' omzetten naar getallen.
Code:
Me.totaal=CDbl(Me.off_prijs3) + CDbl(Me.off_prijs2)
Dat zou in ieder geval wel moeten werken.
 
Het is me gelukt met het optellen. Dank je wel voor je reactie octafish. Nou terug naar de me 1e vraag dat is het automatisch invullen van van tekstvelden op basis van een keuze lijst. Ik kan op dit moment de tekst velden automatisch laten in vullen als ze uit dezelfde tabel komen als het keuzelijst. Nou heb ik iets ingewikkelder.
Op basis van mijn keuze uit de keuzelijst wil ik een gegeven oproepen die uit een andere tabel komt. Nou heb ik 2 tabellen namelijk.

Werkstroom(Wks)
Wks_ID
Wks_Werkstroom
Wks_Costumer_nummer

Costumer(Cst)
Cst_ID
Cst_Costumer_nummer
Cst_Naam

Hierboven heb ik een voorbeeld van de tabellen.

Ik heb een keuzelijst gemaakt met wks_werkstroom.
nou wil ik een tekst veld automatisch laten invullen met Cst_naam.

Normaliter zou je bij de werkstroom(wks) tabel een verwijzing geven naar het primarykey in het Costumer(cst) tabel. Maar dit is mijn situatie niet het geval deze tabellen komen rechtstreeks uit een database van een ERP systeem namelijk Exact Globe.
 
Laatst bewerkt:
Ik snap je laatste opmerking niet helemaal; wat heeft het ERP systeem ermee te maken? Als je in de keuzelijst van Werkstroom ook de tabel Customer (ik neem aan dat je Klanten bedoelt, en niet Kostuummakers ;) ) opneemt, dan kun je het veld Cst_Naam er gewoon bijzetten, en uitvragen uit de keuzelijst. Dus wat is het probleem?
 
De 2 tabellen komen rechtstreek uit een ERP systeem. Dus deze 2 tabellen heb ik niet zelf gemaakt. Ik heb alleen deze 2 tabellen gekoppeld naar acces. Ik mag dus niks veranderen aan de tabellen omdat er dan misschien conflicten kan optreden bij het ERP Systeem.

In het ERP systeem kan je bij de werkstromen een klant toevoegen.
In het formulier wil ik als je op basis van een werkstroom kiest ook gelijk de juiste klant krijg in een tekstveld. Hierdoor hoeven de verkopers hier niet alsnog de klant zoeken. Hierdoor zorg je dus dat er minder kans op fouten onstaan
 
Laatst bewerkt:
Ik snap dat je de tabellen uit het ERP hebt gekoppeld. Maar in Access kun je die twee dus prima met elkaar tegelijk gebruiken in een keuzelijst. En dat gaf ik als antwoord.
 
Wat ik heb begrepen is dat je dat wel kan doen als de gegevens uit 1 tabel komt ,maar nou komen de gegevens uit 2 tabellen. Als ik naar het wizard kijk voor het maken van een keuzelijst zie ik dat je een selectie kan maken uit gegevens van 1 tabel en niet uit 2 tabellen of ik moet iets over het hoofd hebben gezien.
 
Dat klopt; de wizard weet ook niet alles. Als de keuzelijst is gemaakt kun je hem aanpassen naar wat je maar wilt.
 
ik neem aan dat je dit bij <eigenschappen> <rijbron> want zo heb ik wel voor elkaar gekregen .
nou moet ik dus nog meer gegevens op basis van dit keuzelijst ophalen. maar ik wil dat in het keuze lijst alleen de werkstroom nummer zie en niet ook de costumer nummer of andere gegevens. Wanneer ik dus bij costumer_nummer het vinkje aanvinkt voor niet weergeven dan zie ik in het tekstveld dat automatisch zal moeten worden ingevuld ook niks.
 
Laatst bewerkt:
Dat klopt. Je ziet in de keuzelijst de velden terug die je in de query ziet. Lijkt mij ook logisch; hoewel je dat niet tegen Paul Verhoeven moet zeggen :)
Wat je moet doen, is de velden in de keuzelijst onzichtbaar maken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan