Velden leeg maken

Status
Niet open voor verdere reacties.

dvah

Gebruiker
Lid geworden
11 dec 2009
Berichten
16
Hi Forum,

Ik heb een formulier met daarin 4 invoervelden
dmv van de 4 invoevelden start er er een query die op basis van of een sub formulier vult.

dat alles werkt goed

Nu wil ik dat als je veld 1 gevuld heb en je besluit om veld 2 te gebruiken dat de waarde in veld1 gewist wordt.

als je veld 3 gebruikt moeten de velden 1 en 2 worden leeg gemaakt

er mag dus altijd maar 1 invoerveld gevuld blijven

Ik heb geprobeerd om dmv van focus op veld 2 veld 1 te laten wissen
met een gebeurtenis invoerveld1=""
maar dat werkt niet

Graag jullie hulp.
 
Misschien moet je het doen met een <Na bijwerken> gebeurtenis, waarbij je controleert of het nieuwe tekstvak gevuld is, waarna je de andere tekstvakken leeg maakt.
 
gevonden

Code:
Private Sub Keuzelijst_met_invoervak31_GotFocus()

Me.Keuzelijst_met_invoervak8 = ""
Me.Keuzelijst_met_invoervak61 = ""
Me.Keuzelijst_met_invoervak59 = ""
End Sub

Private Sub Keuzelijst_met_invoervak59_GotFocus()
Me.Keuzelijst_met_invoervak8 = ""
Me.Keuzelijst_met_invoervak61 = ""
Me.Keuzelijst_met_invoervak31 = ""
End Sub

Private Sub Keuzelijst_met_invoervak61_GotFocus()
Me.Keuzelijst_met_invoervak8 = ""
Me.Keuzelijst_met_invoervak31 = ""
Me.Keuzelijst_met_invoervak59 = ""
End Sub

Private Sub Keuzelijst_met_invoervak8_GotFocus()
Me.Keuzelijst_met_invoervak31 = ""
Me.Keuzelijst_met_invoervak61 = ""
Me.Keuzelijst_met_invoervak59 = ""
End Sub

Bedankt voor het meedenken:)
 
Je kan het nog wel een stuk netter oplossen:
Met een functie, die je aanroept als je de keuzelijst aanklikt. Dan niet Enter gebruiken, dan krijg je een foutmelding; en het maakt voor het effect ook niet uit, geeft de gebruiker zelfs de gelegenheid om op zijn schreden terug te keren, als de verkeerde keuzelijst is aangeklikt.

Code:
Private Sub cboOnderwerp_Click()
    
    Call KeuzeLeeg

End Sub

Private Sub cboKenmerk_Click()

    Call KeuzeLeeg

End Sub
De functie-aanrep.

En de functie
Code:
Private Function LeegKeuze()

    For Each ctl In Controls
        If Left(ctl.Name, 3) = "cbo" Then
            If ctl.Name <> Screen.ActiveControl.Name Then
                ctl = ""
            End If
        End If
    Next
    Me.Repaint

End Function
 
Mocht je voor de optie van Michel gaan, moet je wel de namen van je keuzelijsten aanpassen. Tevens mogen er dan geen keuzelijsten bij staan die niet leeg gemaakt moeten worden. Of je moet deze een afwijkende naam geven.
 
Bedankt voor de toevoeging! Is inderdaad wel verstandig om te doen!
Zowiezo raad ik je aan om je keuzelijsten zinvolle namen te geven, want als iemand anders je code moet bewerken, dan zegt een naam als <Keuzelijst_met_invoervak8> natuurlijk helemaal niks over wat die keuzelijst doet. En zelf weet je het over 3 maanden ook niet meer...
Door verschillende voorvoegsels te gebruiken, kun je eenvoudig een selectie maken van de keuzelijsten die je wilt kunnen leegmaken.
 
werkt niet

Ik krijg die code niet werkend.


of ik snap de code niet :eek:

ik heb in het formulier 4 keuze velden en daar mag er maar één van gevuld zijn.

als ik de voorgestelde code gebruik dan werk ook de select query die zijn selectie waarde uit één van de vier keuze velden haald ook niet meer

dat komt waarschijnlijk omdat er ook dmv "nabijwerken" een macro start .die het subformulier ververst op basis van de dan ingevulde waarde.

mijn eigen methode (misschien niet zo netjes) levert wel het gewensete resultaat op.

Maar ik wil die andere code ook wel snappen :eek:
kan iemand die uitleggen ?

de namen van de keuze velden zijn inderdaad niet logisch maar dat heeft een reden.
de code moet nl juist niet eenvoudig door iemand anders aangepast kunnen worden:cool:
het hele formulier is verborgen. :eek:

ik heb een vertaal tabel van alle velden velden wat ze doen .dus over 3 maanden weet ik het waarschijnlijk niet maar kan ik het wel snel terug vinden Als het tooltje definitief is dan pas ik alle velden aan naar een logische naam:
 
Ik zet het wel in een voorbeeldje; daar heb ik de code zelf ook in gemaakt.
 
Voorbeeldje

Michel ,
Dat Voorbeeldje waar vind ik die ?:eek:

Ron
 
Moet ik nog posten; maar ik zal hem zo klaarzetten. Kan geen 2007 en 2003 naast elkaar draaien ;)
 
Heb 'm gevonden...
 

Bijlagen

  • Docreg_v1.7Ha.rar
    38,3 KB · Weergaven: 98
Voorbeld werkt niet

Hoi

Je voorbeeld werkt niet in access 2003
converteren naar 2003 werkt ook niet want het is 2003 ???

Ik krijg foutmelding
bij opstarten :
uw database bevat een ongeldige of ongeldige verwijzing naar het bestand mscomct2.ocx versie 2.0.

Als ik dat weg klik compileer fout in

Code:
Private Function KeuzeLeeg()

    For Each ctl In Controls
        If Left(ctl.Name, 3) = "cbo" Then
            If ctl.Name <> Screen.ActiveControl.Name Then
                ctl = ""
            End If
        End If
    Next
    Me.Repaint

End Function
 
voorbeeld werkt ook niet in access 2007.
Ook niet na converteren.
 
Da's dan vreemd, want ik heb 'm net op mijn werkplek geopend zonder problemen.
Controleer eens of er ontbrekende bibliotheken zijn, dat kan soms een probleem veroorzaken. <Alt>+<F11>, <Extra>, <Verwijzingen>.
Als er een foutje in zit, staat er ergens bijvoorbeeld <Ontbrekende bibliotheek>
 
Krijg dan deze fout melding ?

foutmelding.jpg
 
Kijk eens wat er gebeurt als je de db compileert met <Foutopsporing>, <db Compileren>.
Je kunt ook kijken of je deze dll wel hebt...
 
Ik heb je voorbeeld nu werkend :mad:

In verwijzingen de controlle naar de FPDTC.dll uitgeschakeld.
zie plaatje ik ga nu eens kijken hoe het werkt :rolleyes:

fout_dll.jpg
 
Er zitten een paar vreemde verwijzingen in je db:
1. Een verouderde ADO verwijzing (2.5)
2. Common Controls

Ik zou 2 in ieder geval uit zetten, tenzij hij wordt gebruikt natuurlijk, en ADO 2.8 gebruiken i.p.v. 2.5
Verder zou ik de DAO 3.6 verwijzing naar beneden verplaatsen, tot hij in ieder geval onder de ADO verwijzing staat. Ik heb geconstateerd dat veel problemen verdwijnen als je de volgorde verandert.
Overigens: als de rest goed werkt, kun je het ook laten staan... Never change a winning team!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan