Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Anders (software)

access

keyboard
20 antwoorden
  • probleem:
    In een database heb ik onder andere een tekstveld A, een tekstveld B en een keuzeveld ja/nee. Afhankelijk van de inhoud van het keuzeveld ja/nee moet in tekstveld B de inhoud van tekstveld A worden gekopieerd.

    Ik dacht dit te kunnen oplossen met de volgende expressie in het eigenschappenvenster van tekstveld B:
    =iif([keuzeveld]=nee;"";[tekstveld A]).
    Dus als er niets in het keuzeveld is ingevuld (= nee) dan ook niets (= "") invullen in tekstveld B, en als keuzeveld wel is ingevuld (= ja) dan de inhoud van tekstveld A overnemen. Resultaat: nihil. Werkt niet.

    Ook nog geprobeerd: =iif([keuzeveld]IsNull;"";[tekstveld A]).
    Resultaat idem. Ook niks.

    Wat doe ik nou verkeerd ? Moet toch simpel zijn ? Hellup !
  • iif ????????
  • Dit soort problemen kom ik ook wel eens tegen, en volgens mij heeft het te maken met het feit dat je gebruik maakt van verschillende datatypen nl: keuzeveld is waarschijnlijk van het type boolean en tekstveld van het type tekst. En moet de opdracht wanneer je van isnull gebruik maakt niet zijn iiif(isnull([keuzeveld];""; [tekstveld A])
  • [quote:aaa91594eb]iif ????????[/quote:aaa91594eb]
    iif staat voor immediate if, vandaar



    [quote:aaa91594eb]iiif(isnull([keuzeveld];""; [tekstveld A])[/quote:aaa91594eb]
    met twee i's dan natuurlijk en een extra haakje sluiten - ga ik proberen
  • "Wat doe ik nou verkeerd ? Moet toch simpel zijn ? Hellup !"

    Je hebt niet in de 'help' van Access gekeken.
    Daarin staan diverse voorbeelden.
  • [quote:cd5b849d8d]Je hebt niet in de 'help' van Access gekeken.
    Daarin staan diverse voorbeelden.[/quote:cd5b849d8d]
    Natuurlijk, dat is het - dat ik daar niet aan gedacht heb ! Geniaal !
    Bedankt hoor !
  • Ach, ik zag aan je vraag al dat je niet zo slim bent.
    Dus help ik je even.

    Geen dank hoor…
  • wat een fijn gevoel moet het geven om zo knap te zijn ………
  • Kijk nou maar even bij 'keuzeveld' in de HELP en binnen enige minuten is je probleem opgelost.
  • het zal wel aan mij liggen hoor, maar volgens mij is het iets minder simpel - misschien ben ik niet duidelijk genoeg geweest

    in m'n formulier maak ik een 'niet-afhankelijk tekstvak', en dat noem ik bijvoorbeeld B
    daarnaast heb ik een 'keuzerondje', en afhankelijk van de invoer in dat 'keuzerondje' moet de inhoud van een 'afhankelijk tekstvak' (zeg maar A) gekopieerd worden naar B
    daartoe zet ik bij 'besturingselementbron' in het eigenschappenvenster van B: =iif(([keuzerondje]=nee);"";[tekstvak A]
    dat werkt -» IN HET FORMULIER !!
    maar ik wil die gekopieerde gegevens ook in m'n tabel zien !

    doe nou niet flauw door me naar het helpbestand te verwijzen - misschien wil ik wel iets onmogelijks …..
  • Een niet-afhankelijk tekstveld: een besturingselement dat niet gekoppeld is aan een veld in een onderliggende tabel, query of SQL instructie.

    Dit betekent dat het een echt tekstveld is, waarin je dus tekst kunt weergeven.[/color:e67377174d] en invoeren.

    Echter, de weergegeven tekst wordt UITERAARD niet opgeslagen.(zie eerste zin)

    Wat jij nu doet is het volgende: afhankelijk van veld A en de waarde van het keuzerondje krijgt het niet-afhankelijke veld B een waarde. PUNT.

    Kan nuttig zijn, maar omdat veld B een niet-afhankelijk veld is wordt de waarde die B gekregen heeft ook NIET opgeslagen.(waar zou Access die waarde dan volgens jou op moeten slaan, immers, het is een niet-afhankelijk veld - zie eerste zin)

    Maar in je originele vraag zeg je dat je ook nog een veld in je databasetabel hebt staan dat ook veld b heet.
    Oplossing: gebruik het veld b uit je database: een afhankelijk tekstvak.

    Nu moet je nog even rekening houden met het volgende:
    Wanneer er in veld A een waarde staat, en je geeft met het keuzerondje aan dat die waarde ook in veld b moet komen te staan, dan zal na het aanklikken van dat keuzerondje de waarde in veld b geplaatst worden.
    Echter, je MOET naar een volgend record gaan om de waarde ook werkelijk op te slaan. Access slaat alle veranderingen automatisch op als je naar een volgend/vorig record gaat, dus daar hoef je geen aparte procedure voor te schrijven.
  • wiep corbier:

    ok - bedankt - dat is een antwoord waar ik wat mee kan, maar nog niet de oplossing

    zoals in m'n eerste vraag gesteld:
    in een tabel heb ik een veld A, een veld B en een keuzeveld
    ik wil, afhankelijk van de inhoud van het keuzeveld (ja/nee), de inhoud van veld A naar veld B gekopieerd hebben
    daartoe zet ik in de tabel bij de eigenschappen van veld B achter 'standaardwaarde':
    =iif(([keuzeveld]=nee);"";[veld A])
    lijkt logisch, maar wanneer de tabel vervolgens moet worden opgeslagen krijg ik de foutmelding: 'onbekende of ongeldige verwijzing keuzeveld in validatie-expressie of standaardwaarde in de tabel'
    ik dacht aan een schrijffoutje of zo, maar niet dus

    ik begreep toen niet waar de fout kon zitten, en dacht eerst dat m'n expressie verkeerd in elkaar zat
    ik heb vervolgens een formulier opgezet (in m'n laatste vraag kwam dat niet duidelijk uit de verf - excuus - ik ging te snel), en in dat formulier een 'niet-afhankelijk tekstvak' gemaakt met precies dezelfde expressie, en die bleek daar wèl te werken

    als die expressie nou wèl werkt bij een 'niet-afhankelijk tekstvak' waarom dan niet bij een 'afhankelijk tekstvak' ??

    met de eerste zes alinea's van je antwoord ben ik het helemaal eens, maar zo lang ik mijn expressie niet in de tabel krijg opgeslagen, kom ik niet toe aan wat je in de laatste zin van je antwoord belooft !
  • Waarom niet via een bijwerk query?

    SQL:
    UPDATE Tabel1 SET Tabel1.VeldB = [VeldA]
    WHERE (((Tabel1.keuze)=0));

    Wim :o
  • [quote:382ee9793d="w.bauhaus"]Waarom niet via een bijwerk query?

    SQL:
    UPDATE Tabel1 SET Tabel1.VeldB = [VeldA]
    WHERE (((Tabel1.keuze)=0));

    Wim :o[/quote:382ee9793d]

    Wat nou bijwerkquery?

    Ik zal vanmiddag met een oplossing komen.
  • [code:1:90901c6668]UPDATE Tabel1 SET Tabel1.VeldB = [VeldA]
    WHERE (((Tabel1.keuze)=0));
    [/code:1:90901c6668]
    Maak een nieuwe query,
    koppel deze aan de tabel,
    Kies menu: beeld => SQL,
    Copieer de code in het SQL venster.
    kies menu: beeld => Ontwerpweergave
    Klaar.
    Je hebt nu een query die uitvoert wat je wil hebben. Deze kan je dmv een Macro oproepen of in een formulier aanroepen met een knop of automatisch dmv een "gebeurtenis"
  • sorry voor late reactie - ben net terug van vakantie - ga binnenkort verder puzzelen - bedankt in ieder geval voor bijdrage
  • w. bauhaus:
    merci - het wordt nu wel iets te ingewikkeld voor mijn beperkte denkraam geloof ik
    jouw 'keuze = 0' heb ik veranderd in 'true' of 'false'
    en inderdaad - dat werkt; de hele tabel wordt bijgewerkt
    alleen: als ik ooit m'n keuze verander (dus als ik keuze 'true' wijzig in 'false') wordt de inhoud van veld B [b:066137d022]niet[/b:066137d022] verwijderd
    voor ik nog meer moeilijke vragen ga stellen: is dat op te lossen ??
  • [code:1:4f15d4cb12]UPDATE Tabel1 SET Tabel1.VeldB = Null
    WHERE (((Tabel1.keuze)=True));
    [/code:1:4f15d4cb12]

    wat me het eerste op komt is:

    Maak een nieuwe query die je na de eerste uit laat voeren.

    zie code

    Wim
  • Beste Keyboard.
    Je maakt ten eerste een fout, want een keuzevakje bestaat niet.

    Het is een keuzerondje, of een selectievakje.
    Ik ga er maar even van uit dat je de laatste bedoelt. Een klein vierkant vakje met of wel of niet een vinkje er in.

    Je hebt binnen Access meerdere mogelijkheden -opbouwfuncties- en nu noem ik er even een paar:
    a. Expressies
    b. macro's
    c. programmacode.

    IK gebruik altijd programmacode.

    Dit vind je door op het selectievakje te klikken en bij eigenschappen te kijken, tabblad 'gebeurtenis'

    Nu kies je daar uit: [i:e2ab953678]na bijwerken.[/i:e2ab953678]

    Vervolgens tik je de volgende code in:

    If Me.Selectievakje = True Then
    Me.TekstveldB = Me.TekstveldA
    End If
    If Me.Selectievakje = False Then
    Me.TekstveldB = ""
    End If
  • Wiep,

    Zo zou ik het ook doen maar niet iedereen is zo goed thuis in VBA.
    Een query en Macro zijn volgens mij eerder te begrijpen en aan te passen.


    Wim.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.