2 invulvelden op een formulier koppelen

Status
Niet open voor verdere reacties.

Phi van Esch

Gebruiker
Lid geworden
19 okt 2010
Berichten
8
Maidenpost: please forgive me any format errors.

Bij ons op de zaak werken we met MS Access 2000.
Vandaag wilde ik een formulier aanpassen en liep tegen de volgende probleemstelling aan:

Selectievak A krijgt een getal
Selectievak B krijgt een getal
Onderling zijn ze aan elkaar gerelateerd: ze halen beiden hun getal uit tabel A. Ze voeden daarmee tabel B. Maar ze moeten beiden apart geselecteerd worden, omdat ze beiden een verschillend veld voeden in tabel B.

Nu is het mijn bedoeling om hiervan een enkelvoudige beweging te maken. Dus, als ik in selectievak A IDnr 15 kies, dat in selectievak B ook automagisch IDnr 15 wordt ingevuld en vice versa, zodat tabel B automatisch wordt bijgewerkt na het selecteren van één der velden.

Bijgesloten een testdb.rar met probleemstelling.
Het lijkt me dat hier een hele eenvoudige oplossing voor zou moeten bestaan, maar ik ken ze zo niet.
U wel?

Bij voorbaat dank,
Phi van Esch
 

Bijlagen

Laatst bewerkt:
Ik weet niet of ik het helemaal begrijp: je wilt twee keuzelijsten gebruiken, die elkaars waarden overnemen? Dus als je in A iets selecteert, dat B dezelfde waarde krijgt, en andersom: als je in B iets selecteert,dat A dezelfde waarde krijgt? En je wilt dat keuzelijst A wordt opgeslagen in veld A, en keuzelijst B wordt opgeslagen in veld B?
Waarom dan niet één keuzeveld, gekoppeld aan veld A, die je gebruikt om een los tekstvak te vullen dat is gekoppeld aan veld B? In die situatie hoef je maar één keer iets te kiezen.
 
Hoi Octafish,

Thanx for a reply.

Tabel A geeft enkel alle mogelijke inkoop- versus verkoopwaarden weer. Tabel B is de index van aanwezige materialen. Afhankelijk van de situatie wil ik de ene keer een inkoopwaarde selecteren en de andere keer een verkoopwaarde. Zij moeten dus beide zichtbaar zijn in de selectieprocedure en 2 velden vullen in Tabel B.

Vandaar het vice-versa effect.

Is het mogelijk om dat in een enkel selectievak te plaatsen om zodoende 2 velden te vullen? Want de waarden zijn natuurlijk altijd gekoppeld.

bvd,
Phi
 
Lijkt mij wel, want je haalt beide gegevens uit één record. Overigens, omdat de velden die je gebruikt hetzelfde RecordID gebruiken, zou je in tabelB kunnen volstaan met één veld: het ID veld uit tabelA. Is er een reden om dat niet te doen?
 
Hoi OctaFish,

thanx :)

Het gaat er mij echter om, dat de waarden uit tabel A worden ingekopiëerd. Later kunnen deze waarden nog gemanipuleerd worden, dus is het belangrijk om er losstaande gegevens van te maken. Zo haal ik waarden uit verschillende losstaande tabellen, ik kopiëer die naar de "mastertable" en gebruik die gegevens nadien voor eventuele verdere manipulatie.

In tabel B kan ik niet volstaan met 1 veld, omdat de verhouding tussen veld a en veld b niet vast is. Dus ik heb zowel veld a als veld b nodig in de database.

Het idee om beide waarden in één selectieveld weer te geven is inderdaad slim. Hoe pak ik dat aan en hoe plaats ik die waarden respectievelijk in veld a en veld b?
Kunt u mij een voorbeeld geven?

de testdb zit in mijn eerste post.

mvg,
Phi
 
Laatst bewerkt:
Ik heb het idee uitgewerkt in je testdb. Het principe is simpel: je gebruikt een onafhankelijke keuzelijst om het record op te zoeken, en na het kiezen vul je vanuit de keuzelijsten de tekstvakken, die aan de tabel zijn gekoppeld.
Kijk naar de code bij de gebeurtenis <Na bijwerken>, en het zal je hopelijk wel duidelijk worden hoe het werkt.
 

Bijlagen

Wauw, fantastisch!
Thanx :)

Ik wíst dat het simpel was :))
Dank u.
 
Laatst bewerkt:
Update: nu zit ik nog met 1 probleem:
Omdat dit een formulier is met een lijst van records (dus alle artikelen van klant nr zoveel), geeft de database elk veld waarin ik de dubbele waarde selecteer nu dezelfde waarde. Het wordt enkel in de huidige record aangepast, maar wel weergegeven in een hele rits onder elkaar. Dat is 'niet zo netjes'.

Dus, ik heb de "mastertabel" tabel B en ik ben 1 record aan het wijzigen. Beide velden, a + b, worden nu aangepast adhv de selectie die ik maak, maar in alle records die zichtbaar zijn onder elkaar, neemt het selectieveld "alijst" dezelfde waarde aan. Hoe voorkom ik dat?
Uiteraard heeft de mastertable verschillende 'unieke' velden. Dus ik zou adhv artikelnummer of iets dergelijks kunnen kiezen. Hoe kan ik voorkomen dat de hele rits wordt doorgevuld?

begrijpt u wat ik bedoel en hoe haal ik dat eruit?

Grtz,
Phi
 
Laatst bewerkt:
Eerlijk gezegd ben ik de draad kwijtgeraakt na de zin
Omdat dit een formulier is met een lijst van records (dus alle artikelen van klant nr zoveel), geeft de database elk veld waarin ik de dubbele waarde selecteer nu dezelfde waarde.
Ik begrijp dat je een doorlopend formulier gebruikt, en ik denk dat je dat op een hoofdformulier hebt staan waarin je de klanten als basis gebruikt.
Op een doorlopend formulier is het lastig werken met een onafhankelijke keuzelijst. Zeker als je dat in de Detailsectie zet. Je kunt eens proberen om de keuzelijst in de Koptekst van het subformulier te zetten. Dan kun je van daaruit een actief record in het subformulier bijwerken.
Zoiets als dit?
 

Bijlagen

Wauw man.
Geweldig, die hulp van u.
Ik was er idd een beetje bang voor; deze oplossing had ik idd in gedachten.
En u heeft duidelijk meer verstand ervan dan ik :-)
Dank u wel
 
Nog één vraagje: Waarvoor dient deze en waar gebruik ik ze?

Private Sub Form_Current()
Me.cboA.Value = DLookup("ID", "tabel A", "Alijst=" & Me.txtA)
Me.txtA.Value = Me.cboA.Column(1)
Me.txtB.Value = Me.cboA.Column(2)
End Sub

Want als ik ze invul, gewoonweg in de "reeks van formules", dan wordt deze formule aangezien als "voor bijwerken". En als ik ze invul in Form_Current krijg ik allerlei rare reacties.

Met vriendelijke groet en hartelijk bedankt,
Phi
 
Bij mij doet-ie het goed, en hij is ook misschien niet nodig in jouw geval.
Wat deze routine doet: als je door de records bladert, wil je uiteraard de juiste waarden in de velden A en B zien. Met deze code haal ik de ID waarde uit tabel A op, en stel die waarde in op de keuzelijst. Als je dus bladert, zou elk record in de tekstvelden, en in de keuzelijst de juiste waarde moeten tonen. Als je dat niet wilt (met als gevolg dat de keuzelijst iets anders kan laten zien dan de tekstvelden) kun je de code verwijderen.
 
Ajajajaja, ik snap 'm

Dat is de terugkoppeling, van 't record naar 't selectievak.
Interessant, die ga ik proberen er 'recht in te krijgen'.
Zal wel iets met namen en dergelijke te maken hebben.
Dat gaat wel lukken, thanx!
 
En nog even een bijgewerkte versie, met een doorlopend formulier.
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan