Tekst ophalen uit een tabel

Status
Niet open voor verdere reacties.

Jacobusje

Gebruiker
Lid geworden
15 apr 2021
Berichten
114
Beste Lezer,

In een textveld staat een standaardwaarde die ik ophaal uit een andere tabel met de code:
=DLookUp("[Tekst]";"[TBL_Offertetekst]";"ID_Tekst=18")

We willen die tekst kunnen vervangen door een tekst met een ander ID
Dit willen we op het moment dat we bij een "Keuzelijst met invoervak" een ander item hebben gekozen.
Ik heb bij "Na bijwerken" de volgende code gezet.
Me.AfsluitingTypen.Text = DLookUp("[Tekst]";"[TBL_Offertetekst]";"ID_Tekst=18")

Daarbij krijg ik de volgende foutmelding
Compileerfout: Syntaxisfout.

Wat zou ik aan de code moeten aanpassen om het goed te krijgen of is dit helemaal niet mogelijk?
Bedankt.
 
't Gaat hem wellicht om het verschil tussen Europese en Amerikaanse notaties.
VBA is volledig Amerikaans... query's en zo Europees. Een nogal ongelukkige beslissing van Microsoft.

Maar goed: vervang je punt-komma's eens door komma's.

Code:
Me.AfsluitingTypen.Text = DLookUp("[Tekst]","[TBL_Offertetekst]","ID_Tekst=18")

Zo dus... niet getest, omdat ik bijna zeker ben dat het hierom gaat, en ik geen zin heb om dit opnieuw na te bouwen.
 
Ik snap je werkwijze niet helemaal; om te beginnen: waarom DLookup? Dat is een constructie die ik zelden nodig heb, en al helemaal niet op formulieren. Dat betekent meestal dat je de data niet op orde hebt. Neem nu je gewenste werkwijze: zo te zien wil je de tekst baseren op een keuze die je maakt met de keuzelijst. Dus het ID dat je nodig hebt, komt uit die keuzelijst. Dan is het vele malen makkelijker om de tekst uit die tabel óók op te nemen in de keuzelijst, want dan kun je hem er gewoon uithalen zonder poespas.
Sowieso moet je de DLookup dus baseren op de keuzelijst, en dat doe je nu niet. Ook niet in de variant van Luc.
Ik stel dus de volgende twee varianten voor:
Code:
Private Sub cblKeuzelijst_Click()
    Me.AfsluitingTypen.Value = Me.cblKeuzelijst.Column(2).Value
End Sub

en
Code:
Private Sub cblKeuzelijst_Click()
    Me.AfsluitingTypen.Value = DLookup("[Tekst]", "[TBL_Offertetekst]", "ID_Tekst=" & Me.cblKeuzelijst.Value)
End Sub

Sowieso is de gebeurtenis <Na bijwerken> een vervelende, zeker bij Keuzelijsten, omdat je niet gelijk ziet wat je aanklikt. Daar heb je nou net de gebeurtenis <Bij Klikken> voor :). Gebruik die dan ook.
Nogmaals: mijn voorkeur zou zijn om de tabel tbl_Offertekst dus te koppelen aan de tabel in je keuzelijst, en het veld Tekst daarvan toe te voegen aan de query. Ik heb het veld [Tekst] in mijn voorbeeldje op de derde plek gezet (kolom 3) dus, maar omdat de eigenschap Property bij 0 begint te tellen, staat er dus Column(2) en niet Column(3). Verder wijzigt het voorbeeld zich vanzelf.
 
Beste Luc,

Helemaal juist!
.text moest ik ook nog weghalen, het is dus geworden:

Code:
Me.AfsluitingTypen = DLookup("[Tekst]", "[TBL_Offertetekst]", "ID_Tekst=18")

Bedankt voor deze snelle hulp.
 
Dat was ik inderdaad net aan het verbeteren: .Text werkt alleen voor tekstvakken die de Focus hebben. Dat kán wel, maar dan met je dus eerst een .SetFocus doen. Meestal is het niet nodig, en is het veel beter om de Value property te nemen. Zoals in mijn voorbeeld.
 
Ik snap je werkwijze niet helemaal; om te beginnen: waarom DLookup? Dat is een constructie die ik zelden nodig heb, en al helemaal niet op formulieren. Dat betekent meestal dat je de data niet op orde hebt. Neem nu je gewenste werkwijze: zo te zien wil je de tekst baseren op een keuze die je maakt met de keuzelijst. Dus het ID dat je nodig hebt, komt uit die keuzelijst. Dan is het vele malen makkelijker om de tekst uit die tabel óók op te nemen in de keuzelijst, want dan kun je hem er gewoon uithalen zonder poespas.
Sowieso moet je de DLookup dus baseren op de keuzelijst, en dat doe je nu niet. Ook niet in de variant van Luc.
Ik stel dus de volgende twee varianten voor:
Code:
Private Sub cblKeuzelijst_Click()
    Me.AfsluitingTypen.Value = Me.cblKeuzelijst.Column(2).Value
End Sub

en
Code:
Private Sub cblKeuzelijst_Click()
    Me.AfsluitingTypen.Value = DLookup("[Tekst]", "[TBL_Offertetekst]", "ID_Tekst=" & Me.cblKeuzelijst.Value)
End Sub

Sowieso is de gebeurtenis <Na bijwerken> een vervelende, zeker bij Keuzelijsten, omdat je niet gelijk ziet wat je aanklikt. Daar heb je nou net de gebeurtenis <Bij Klikken> voor :). Gebruik die dan ook.
Nogmaals: mijn voorkeur zou zijn om de tabel tbl_Offertekst dus te koppelen aan de tabel in je keuzelijst, en het veld Tekst daarvan toe te voegen aan de query. Ik heb het veld [Tekst] in mijn voorbeeldje op de derde plek gezet (kolom 3) dus, maar omdat de eigenschap Property bij 0 begint te tellen, staat er dus Column(2) en niet Column(3). Verder wijzigt het voorbeeld zich vanzelf.

Beste Octa,

Ten eerste bedankt voor het meedenken.
Ik ben regelmatig bezig met Access, maar ben geen expert op dit gebied.

Maar het gaat om een projecten in Access waarin ik een offerte, opdrachtbevestiging e.d. maak. (totaal 6 of 7 keuzes)
Met de "Keuzelijst met invoervak" kies ik voor offerte of iets anders.
Standaard beginnen we bij offerte. Dus ook met de standaardwaarde.
In de offertetabel zit dus een tekstvak die we handmatig kunnen veranderen.
Daarnaast hebben we een tabel met allerlei teksten die we kunnen kopieren-plakken voor allerlei doeleinden.
Bij de standaardwaarde halen we uit de teksttabel een tekst op die nodig is voor de offerte.
Later wordt het opdracht
We kiezen dan met pull down voor opdrachtbevestiging.

Het id komt niet uit de keuzelijst maar uit de teksttabel
In de teksttabel staan hele lappen tekst met uitzonderingen en voorwaarden.
En dan het "Na bijwerken" draaien
 
Doe ons een lol, en haal die complete quoot van mijn laatste berichtje weg; slaat nergens op om het complete bericht te herhalen :).
 
En om antwoord te geven op je vraag: ik ging er uiteraard niet vanuit dat je de teksten in de tabel met Offertenummers hebt zitten. Maar dat hoeft niet, want je haalt die tekst op op basis van het nummer. En dat nummer komt dus uit je keuzelijst volgens je eigen verhaal. En dan is het dus wel degelijk mogelijk om de tekst mee op te nemen in de keuzelijst, simpel door de tabel erbij te zetten. Common practice. Sowieso kun je, als je mijn techniek gebruikt, de opgevraagde tekst daarna rustig overschrijven, want in het tekstvak staat dus geen formule, maar gewoon de tekst die je ophaalt uit de tabel. Dat doet jouw DLookup uiteindelijk ook. Mijn methode is echter beter. Gelukkig heb je géén goede 'uitleg' voor het Na bijwerken, want die is er uiteraard ook niet :).
 
Het lukt me niet om en eerder geplaatst bericht te bewerken, dus lukt het ook niet om de quote weg te halen
Onderin staat wel dat ik berichten mag bewerken....
 
Soms lukt het niet; is mij ook wel eens opgevallen. Jammer dan :). Niet meer doen :d.
Kunnen we weer over tot de orde van de dag...
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan