Crediteur nummer koppelen aan Naam Crediteur

Status
Niet open voor verdere reacties.

Jesse2

Gebruiker
Lid geworden
3 mei 2011
Berichten
340
Het gaat hier om 2 velden uit een invoer formulier.

Naam Crediteur word met een keuzelijst opgezocht uit het formulier: Crediteur
Crediteur nummer word ook met een keuzelijst opgezocht uit: Crediteur

nu zou ik graag als bij Crediteur een naam uit de keuzelijst word gekozen,
automatisch het juiste Crediteur nummer word ingevuld.

Jesse
 
Waarom niet één keuzelijst? Doorgaans krijg je, als je met de wizard een keuzelijst maakt, al automatisch het veld [CrediteurID] en het veld [Crediteurnaam] in je keuzelijst, waarbij het CrediteurID door Access wordt verborgen. Je kiest dus een CrediteurID, maar je ziet de Crediteurnaam. Meestal is dat al voldoende, want in je tabel hoef je alleen maar het CrediteurID op te slaan.
 
Ik begrijp het niet helemaal, ik bedoel als er een crediteur naam word ingevoerd moet hier automatisch in een ander veld een crediteur nummer worden ingevuld.
de crediteur naam en het crediteur nummer komen uit de zelfde tabel uit de zelfde record.
het crediteur nummer kan niet worden geautomatiseerd omdat dit per crediteur altijd het zelfde is.
ook word dit nummer door de gebruiker zelf bepaald bij het invullen van gegevens de crediteur in de daarvoor bestemde tabel (het nummer blijft dan ook altijd hetzelfde).
de crediteur nummer en naam komen beiden uit de boven genoemde tabel (hier staan alle gegevens van crediteur).
het invoerveld is niet voor deze tabel bedoelt maar voor een invoerveld voor facturen.
het nummer blijft dan ook altijd hetzelfde.

ik heb mijn best gedaan het uit te leggen ik hoop dat je er wijs uit kunt worden.

Jesse
 
Ik snapte eerst niet wat je bedoelde, maar gelukkig is de voorlaatste regel duidelijk genoeg:
het invoerveld is niet voor deze tabel bedoelt maar voor een invoerveld voor facturen.

In je tabel Facturen sla je hopelijk alleen het veld CrediteurID op, en niet de CrediteurNaam... Dan blijft mijn verhaal namelijk recht overeind staan: de keuzelijst die je baseert op Crediteuren bevat, als het goed is, de velden CrediteurID en CrediteurNaam. Je ziet, als je een crediteur hebt gekozen, maar één waarde, namelijk CrediteurID of Crediteurnaam. Dat is een beetje afhankelijk van (of) welk veld je hebt verborgen. Zoals ik al zei: de wizard zal standaard voorstellen om het veld CrediteurID te verbergen, zodat je kunt zoeken op CrediteurNaam. Maar, en dat is wel belangrijk, je zult het CrediteurID dus op willen/moeten slaan in de tabel Facturen.

Nu kun je, en dat wil je zo te lezen, het veld CrediteurID wel kunnen zien op het formulier. Dat kan met een simpele formule. Maak een tekstvak (geen keuzelijst dus) en geef het Besturingselementbron de volgende formule:
=cboCrediteur.Column(0) als je het CrediteurID wilt zien, of =cboCrediteur.Column(1) als je de Crediteur Naam wilt zien. Daarbij ga ik er vanuit dat je keuzelijst cboCrediteur heet, en je twee velden hebt in de keuzelijst: CrediteurID en CrediteurNaam.
 
Je hebt nogal wat zaken niet gedaan; ik zal er wat noemen.

1. Je hebt in de tabel Crediteuren geen sleutelveld gemaakt van het veld [Crediteur nr]. Doe dat eerst.
2. Je hebt geen koppeling gemaakt tussen Crediteuren en Facturen. (kan ook niet, i.v.m. 1). Maak die koppeling dus.
3. In de tabel Facturen sla je zowel een [Crediteur nr] op als een [Crediteur Naam]. Het veld [Crediteur Naam] moet weg.
4. Van het veld [Crediteur nr] moet je een Keuzelijst met Invoervak maken.
5. Deze krijgt een Tabel/Query als Type rijbron, met deze query: SELECT [Cred nr], [Naam crediteur] FROM Crediteuren
Zorg er voor dat de eigenschap <Aantal kolommen> op 2 staat.
6. In het formulier moet het veld Crediteur naam een onafhankelijk tekstvak worden.
7. Deze krijgt als Besturingselementbron de formule: =[cboCrediteur].[Column](1)

That's it!
 
Laatst bewerkt:
Ik heb eigenlijk nog nooit met koppelen gewerkt.
wel heb ik via de knop relaties cred nr(primary key) aan het cred nummer uit de andere tabel gekoppeld.


Jesse
 
Dat is koppelen :D
 
Nu de rest nog :)
 
SELECT [Cred nr], [Naam crediteur] FROM Crediteuren

als ik deze code bij een veldvakje in het query ontwerp van de keuzelijst met invoervak van Crediteur nummer invoer,
krijg ik een foutmelding over syntaxis: deze query bevat een subquery waarvan de syntaxis ongeldig is.
moet ik de code nou bij (Veld) invoeren in het query ontwerp? want ik weer niet of ik hier iets fout heb gedaan.
 
Laatst bewerkt:
4. Van het veld [Crediteur nr] moet je een Keuzelijst met Invoervak maken.
Als je dat gedaan hebt, zet je de query SELECT bij de Rijbron van de keuzelijst. Het is een redelijk simpele query, dus die zou geen probleem mogen opleveren.
 
Ik heb hem ingevoerd, nu heb ik onafhankelijk veld Crediteur.
als ik nu een nieuwe factuur invoer wat hoort er dan eigenlijk gebeuren?
bij mij is het invoer veld voor crediteur niet bruikbaar ( Ik kan het denk ik beter weghalen)
als ik het veld crediteurnummer invoer is dit heen probleem. als ik alles opsla komt er in het veld crediteur #Naam? te staan
 
Laatst bewerkt:
6. In het formulier moet het veld Crediteur naam een onafhankelijk tekstvak worden.
7. Deze krijgt als Besturingselementbron de formule: =[cboCrediteur].[Column](1)

In stap 6 moet je de Besturingselementbron van het tekstvak [Crediteur] leegmaken. De naam van de crediteur ga je namelijk uit de keuzelijst ophalen met de formule uit regel 7.
Als je de keuzelijst voor het Crediteurnummer cboCrediteur hebt genoemd kun je de formule letterlijk overnemen, anders moet je de naam nog even aanpassen. Wat er gebeurt is het volgende: het tekstvak op het formulier doet in beginsel straks niks meer, en hoef je dus niet met de hand in te vullen. Het beste kun je de optie <Ingeschakeld> op Nee zetten, en de optie <Vergrendeld> op Ja, zodat je er ook niet meer bij kunt als gebruiker. De formule die je bij Besturingselementbron maakt, haalt de waarde uit de tweede kolom op uit de keuzelijst (de telling begint namelijk bij 0) en zet die in het tekstvak. Omdat je in de keuzelijst twee velden hebt: CrediteurID en CrediteurNaam krijg je dus automatisch de naam ingevuld als je een persoon kiest.
 
Ik heb de code gelijk gemaakt met de query, maar ik zie geen verandering. toch zie ik als ik de query koppel aan Crediteur nr een bliksem tekentje, als ik alles op sla gaat het weg.
misschien dat daar iets mis kan zijn hier is een voorbeeld.Bekijk bijlage Database Voorbeeld 0.3.rar
 
Nog een paar foutjes:
1. Het tekstvak [Crediteur] moet uiteraard wel een tekstvak zijn, en geen Keuzelijst met invoervak....
2. Een tekstvak kent geen eigenschap Dropdown, dus die code moet je ook verwijderen
3. De query die je gebruikt voor het CrediteurID moet wel meer dan 1 kolom bevatten, anders valt er niks uit te lezen...

4. Van het veld [Crediteur nr] moet je een Keuzelijst met Invoervak maken.
5. Deze krijgt een Tabel/Query als Type rijbron, met deze query: SELECT [Cred nr], [Naam crediteur] FROM Crediteuren
 
sorry ik snap niet helemaal wat je met dat laatste bedoeld.
meer dan 1 kolom?
 
Je keuzelijst voor het crediteur nummer heeft in jouw voorbeeld maar één veld als rijbron, het veld [Cred nr]. Dat werkt dus niet, als je op basis van het crediteurnummer de naam van de crediteur wilt opzoeken. Vandaar dat ik je (ook in de vorige post staat hij) de SQL heb gegeven die je als Rijbron moet gebruiken voor de keuzelijst. Voordat de keuzelijst goed werkt, moet je bij de eigenschappen van de keuzelijst ook nog aangeven dat je nu twee kolommen hebt; anders zie je in de keuzelijst nog alleen maar de crediteurnummers, en niet de crediteurnamen. Overigens doet de keuzelijst het wel, omdat de bron van de keuzelijst gebruikt wordt om het tekstveld Crediteurnaam te vullen...
 
dus in de ontwerp opgave van crediteur nr plak ik bij rijbron deze code: SELECT [Cred nr], [Naam crediteur] FROM Crediteuren
ik zet bij aantal kolommen 2
wat doe ik dan met die query?
klopt de code met namen etc, of moet ik hier zelf nog één en ander aan veranderen?
 
en mijn resultaat zal zijn dat ik een nummer intoets en dan de naam bijgevoegt word?
want mijn eigenlijke bedoeling was precies anders om, naam invoeren nummer krijgen.
als dit werkt zal het een stap in de goede richting zijn, en ben ik al erg blij.:)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan