Lijst vullen

Status
Niet open voor verdere reacties.

Zurrik

Gebruiker
Lid geworden
17 mrt 2006
Berichten
221
ik wil graag een lijst vullen waarin komt te staan welke contactpersonen er bij een bedrijf horen.
Een tekstveldje vullen lukt wel, maar een lijst nog niet.

Me.txtContactpersoon = DFirst("Achternaam", "CONTACTPERSOON", "KlantenID=" & DFirst("KlantenID", "ORDERS", "OrdersID=" & CStr(Me.kzOrdernummers)))

Me.lstContactpersonen = DFirst("Achternaam", "CONTACTPERSOON", "KlantenID=" & DFirst("KlantenID", "ORDERS", "OrdersID=" & CStr(Me.kzOrdernummers)))


De fout zit m in de DFirst denk ik, maar ik heb geen idee hoe ik dat dan op moet lossen.
 
De dfirst functie geeft altijd maar één record terug.
Een lijst is iets anders als een tekstveld.
In een tekstveld staat gewoon een waarde, in een lijst staat een tabel met waarden.
Wat je zult moeten doen is de lijst van de juiste query voorzien, dat doe je niet met een dfirst() functie.
 
Me.lstContactpersonen = "Select contactpersoon.achternaam from contactpersoon where contactpersoon.klantenID = Orders.klantenID and orders.ordersID =" & CStr(Me.kzOrdernummers)

Maar dit werkt niet, iemand een idee waarom niet?
 
Een listbox is een object op je formulier.
Een object heeft properties (eigenschappen) en methods (gebeurtenissen).
Eén van de properties van een object is de default property (standaard eigenschap).

De standaardeigenschap van een listboxobject is de Value property (waarde). Deze eigenschap wordt genomen als je de eigenschap niet nader specificeert.

In jouw geval: Me.lstContactpersonen zeg je dus eigenlijk Me.lstContactpersonen.Value.

Wat je nu probeert is een SQL statement in de eigenschap Value te plaatsen terwijl je die in die in de Rijbron (Rowsource) eigenschap moet zetten.

Je moet dus Me.lstContactpersonen.Rowsource = "SQL statement" gebruiken.

Als je wat geavanceerder gaat programmeren wordt het belangrijker te weten hoe access (en windows) met objecten, eigenschappen en gebeurtenissen omgaat. Het is goed om daar wat kennis van op te doen.
 
Laatst bewerkt:
Ok dank je, waar kan ik zijn voor die kennis? Zijn daar goede trainingen voor? of moet ik gewoon van probleem naar probleem lopen?
 
Even googelen met sleutelwoorden access gebeurtenis eigenschap of access property method geeft je al veel cursussen en nuttige sites.
In een cursus access (VBA) voor gevorderden hoort dit onderwerp gewoon thuis.
 
oke dank je

heb nog een vraagje hierover:
Als ik iets selecteer in de lijst kan ik bij klikken: een nieuw formulier openen. Hoe kan ik er dan voor zorgen dat dat formulier opent met de waarden van de geselecteerde optie?
 
Om een nieuw formulier te openen heb je de OpenForm methode van het docmd object.
De OpenForm methode heeft een hele serie parameters, één daarvan is where-voorwaarde. Die moet je hiervoor gebruiken. Zie de access help.

Ik zou overigens geen formulier openen op de bij klikken gebeurtenis. Gebruikelijk is hiervoor de bij dubbelklikken gebeurtenis te gebruiken.

Mijnheer Gates van Microsoft heeft voor dit soort zaken (wanneer wat te doen in een windows toepassing) dikke boeken met standaarden laten schrijven. Daar worden veel van dit soort zaken in beschreven.
 
haha oke.
Ik houdt niet van boeken. Ik heb hier programmeren in access 2000 liggen en die vind ik al dik.
 
Ik kan wel die where-voorwaarde vinden, maar ik heb geen idee wat ik in moet vullen. Moet ik gewoon kopieren van ander formulier? Dus dit veldje = dat veldje
 
Denk eraan, de F1 knop is je grootste vriend!

Rechtstreeks uit de access help:

where-voorwaarde Variant, optioneel. Een tekenreeksexpressie die een geldige SQL WHERE-component aangeeft zonder het woord WHERE.
 
ja zover was ik al. Maar dan weet ik het nog niet. frmContactpersonen.achternaam = Hoofdformulier.achternaam???? Dat werkt niet echt
 
Denk eraan wat ik je eerder heb uitgelegd over formulieren en objecten.

Een formulier is een object met eigenschappen en gebeurtenissen.
Aan een object formulier kunnen andere objecten gekoppeld worden (tekstvelden, knoppen, listboxen) met hun eigen eigenschappen en gebeurtenissen.

Docmd.Openform opent een formulierobject en middels de parameters van de OpenForm methode kun je een aantal eigenschappen van het formulier object beinvloeden
Één van deze eigenschappen is de RecordBron.

Even terug naar de uitleg in de access help:

where-voorwaarde Variant, optioneel. Een tekenreeksexpressie die een geldige SQL WHERE-component aangeeft zonder het woord WHERE.

Er wordt daar gesproken over een SQL-statement.
frmContactpersonen.achternaam = Hoofdformulier.achternaam is een verwijzing naar een tekstobject achternaam dat gekoppeld is aan het formulier object frmContactpersonen.
Dit zal geen uitvoerbaar SQL statement zijn.

Wat je op die parameter van de OpenForm methode invult is de WHERE clausule van het SQL statement dat je in de RecordBron eigenschap van je te openen formulier staat.

Zo zie je maar weer, kennis van objecten, eigenschappen en gebeurtenissen is noodzakelijk als je op deze manier aan de slag.
Bovenstaande moet overigens ook in dat dikke boek van je staan.
 
Hallo,

Ik kom er nog steeds niet uit. Hoe moet ik verwijzen naar de huidige record en die terug laten komen in het nieuwe formulier?

* update:

Ik heb inmiddels het volgende:
DoCmd.OpenForm "frmContactpersoon", , , "[ContactpersonenID] =" & Me.lstContactpersonen

en dat werkt bijna, ik moet alleen nu zelf de parameterwaarde ingeven en dat wil ik eigenlijk niet. ? een idee hoe ik dat op kan lossen?
 
Laatst bewerkt:
Hehe ik heb het eindelijk opgelost.
Ik moest de contactpersonenID in de list zetten en dan verbergen, maar ik had alleen de namen erin gezet.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan