Gegeven van keuzelijst naar tabel kopieren

Status
Niet open voor verdere reacties.

pat007

Gebruiker
Lid geworden
10 feb 2008
Berichten
51
Ik heb 2 keuzelijsten gemaakt in een formulier. De 2de keuzelijst gaat kijken wat er in de eerste staat en zet dan de tweede kolom in zijn veld.

Eigenschappen 1ste keuzelijst
Naam lstcil1
Besturings elemeneten bron= deur cil 1
rijbron :qprijs
Eigenschappen 2de keuzelijst
Naam txtprijs1
Besturings elemeneten bron=[lstcil1].[column](1)

Hoe kan ik nu de gegevens van de 2de keuzelijst naar een tabel kopieren.

Naam tabel
tbl adres
veldnaam : deur cil 1
veldnaam : cil 1 prijs

Mvg,µ-

Patrick
 
Je 'kopieert' geen gegevens van een keuzelijst naar een tabel, maar je koppelt de keuzelijst. Je slaat dus de keuze op in het veld dat je opgeeft in de eigenschappen van de keuzelijst op het tabblad <Gegevens>, regel <Besturingselementbron>.
 
octafish,
besturingselemenetenbron staat bij mij op =[lstcil1].[column](1), dit is 2de kolom van de eerste keuzelijst.
dit gegeven zou ik in de tabel adres onder veldnaam cil 1 prijs willen hebben.
moet ik nog iet voor de besturingselementenbron plaatsen?

Mvg,
Patrick
 
Nee, je zult de code zefs moeten weghalen ;) Want je kunt maar één besturingselementbron gebruiken. De oplossing is overigens vrij simpel: je moet de gekozen waarde uit de eerste keuzelijst aan de tweede toewijzen. Overigens snap ik niet waarom je twee keuzelijsten gebruikt; voor zover ik kan uitmaken levert de eerste keuzelijst één waarde op, de gekozen waarde. Daarvan zet je vervolgens de tweede kolom als waarde op de tweede. Dat lijkt mij weinig keuze voor een keuzelijst (één waarde namelijk). Zelf gebruik ik, als ik een waarde uit een keuzelijst op een formulier wil laten zien/opslaan, dus gewoon een tekstvak. Overigens geldt daar hetzelfde probleem voor, want ook dat kent maar één besturingselementbron. Dus de oplossing is hetzelfde...

Je moet een actie maken op de eerste keuzelijst op de gebeurtenis <Na bijwerken>. Deze actie wijst de tweede kolomwaarde van de keuzelijst toe aan het tekstvak. Dat ziet er zo uit: Me.txtprijs1.Value=Me.lstcil1.Value. Door de waarde toe te wijzen n.a.v. een actie op de keuzelijst, betekent dat je op het tekstvak geen formule meer nodig hebt. Je kunt de Besturingsbron dus gebruiken voor het veld [prijs]
 
Octafich,

Dat is goed gevonden, maar hij geef in het tweede veld dezelfde waarde als in de eerst.
In het tweede veld moet het gegeven van de tweede kolom komen.
In zal een bijlage meesturen, zo word het misschien duidelijker.

Mvg,

Patrick
 

Bijlagen

Ik zal je uitleggen wat je verkeerd hebt gedaan, en wat je moet doen om het aan te passen, da's beter dan dat ik het voor je verbeter:

1. De keuzelijst heeft maar één veld. Dat houdt dus in, dat je ook maar één veld kunt tonen op een tekstveld: hetzelfde veld als in je keuzelijst. Voeg dus het veld Prijs toe aan de query.
2. Komt vanwege 1: de eigenschap <Aantal kolommen> van de keuzelijst staat op 1. Ook dat betekent, dat je maar één kolom kunt opvragen in een tekstveld. Maak daar 2 van.
3. De code die je hebt gemaakt (Me.txtprijs1.Value = Me.lstcil1.Value) pakt de <Afhankelijke kolomwaarde); dat is meestal de waarde die de keuzelijst zelf ook al laat zien. Ergo: dubbelop...
4. De code van de keuzelijst moet je veranderen in: Me.txtprijs1.Value = Me.lstcil1.Column(1)

Waarom Column(1)? Omdat Access begint te tellen bij 0. Dus 1 is eigenlijk de tweede kolom...
 
Octafich

IK heb aangepast wat je gevraagd hebt, maar deurprijs1 komt nog steeds niet tevoorschijn. Kan je me nog iets verder helpen.

Mvg,
Patrick

Ps zie bijlage
 

Bijlagen

Bij mij doet-ie het prima, al moest ik wel de VBA code nog even opnieuw koppelen aan de gebeurtenis <Na bijwerken>; op de een of andere manier was die weg.
 
Octafish,

Kan je mij nog even verder helpen met een berekening die ik niet in een rijbron krijg.
In test 1 staat de berekening, die zou ik graag in deur totaal prijs krijgen zodat ik daar een rijbron kan toewijzen. Ik ben er al 2 dagen naar opzoek.

Mvg,

Patrick
 

Bijlagen

Gelukkig voor jou heb ik geen twee dagen nodig ;) [Test 1] heb ik weggehaald, want die heb je niet nodig. De berekeningen maak je namelijk op de velden die je wilt laten berekenen. Dat zijn dus de keuzelijst (voor de prijs) en het veld [Aantal], want je vermenigvuldigt de prijs * het aantal. Het resultaat zet je weg in het veld [Deur Totaal].

Overigens zou ik maar één set op het formulieren, en geen twee. Want wat doe je nu als iemand drie deuren bestelt?
 
Otafich,

Bedankt voor uw snelle reactie, maar ik krijg uw bestand niet open.
Access 2007 geeft een fout van onbekende database indeling.
Kan je die nog eens posten.

Mvg,

Patrick
 
Ik heb 'm geopend in 2010; ik kan kijken of ik nog iets kan doen aan de compatibiliteit...
 
Verbeterde (hoop ik dan toch...) versie...
 

Bijlagen

Otafich,

Spijtig genoeg kan ik deze ook niet openen. Misschien nog een andere oplossing?

Mvg,

Patrick
 
Ik zal kijken of ik er alsnog een nieuwe versie van kan maken in een oude versie... als je begrijpt wat ik bedoel :)
 
Nu opgeslagen in een nieuwe 2003 db, dus dat moet toch lukken, mag ik hopen :) Het formulier doet het in ieder geval nog...
 

Bijlagen

Octafich,

Bedankt om mij verder te helpen. Deze gaat inderdaad goed.
Nogmaals dank u voor uw geduld met mij.

Mvg,

Patrick
 
octafish,

Ik heb nog een vraagje, ik wil een totaal som van de elementen van een deur maken.
volgens mij is dat totaal som= veldnaam1+veldnaam2+veldnaam3 + veldnaam4.
bij mij lukt dat niet wel zo

Private Sub Aantal_stijl_1_AfterUpdate()
Me.[deur stijl 1 totaal] = [aantal stijl 1] * [txtprijs4]
Me.[Sub_Totaal_Deur_1] = [aantal cil 1] * [txtprijs1] + [aantal beslag 1] * [txtprijs2] + [aantal slot 1] * [txtprijs3] + [aantal stijl 1] * [txtprijs4]

Kan dat eenvoudiger? Als de data bank af is moet ik zo'n 15 veldnamen optellen, en dat word dan onoverzichttelijk.

Mvg,

Patrick


Me.Refresh

Me.Repaint

End Sub
 

Bijlagen

In beginsel kun je de berekening alleen op deze manier maken; je moet namelijk elk veld apart berekenen en optellen bij het totaal.
Wel kun je, als je uniforme namen gebruikt, wel iets doen met een loopje. Dan moet je dus alle prijsvelden benoemen van txtprijs1 t/m txtprijs15. Ik zie niet helemaal hoe de velden [aantal slot 1] en [aantal stijl 1] in dit principe gaan vallen, omdat je die nu ook met de txtprijsvelden gebruikt. Ik denk al snel, als ik veldnamen als [aantal slot 1] en [aantal stijl 1] zie, dat er ook velden zijn met de naam [aantal slot 2] en [aantal stijl 2] etc.
Dus als daar een logica in is aan te brengen, dan kun je wel een functie maken die eerst kijkt hoeveel velden je hebt (maakt de berekening dus flexibel) en dan elk veld apart berekent en optelt bij het totaal.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan