Veld formulier wissen en direct zichtbaar maken

Status
Niet open voor verdere reacties.

KPTPTT

Gebruiker
Lid geworden
2 mrt 2018
Berichten
321
Hallo. Ik heb een formulier aan de hand van een Query gemaakt. Met een knop wis ik de tekst in het formulierveld. De inhoud van het veld wordt uit current record gewist, dit is gelukt. De tekst blijft echter zichtbaar in het formulier. Pas na het sluiten en openen van het formulier wordt de tekst niet meer getoond. Hoe kan ik, nadat de knop Wis is gedrukt, de tekst onmiddellijk van het formulier verwijderen?

Code:
Private Sub Knop256_Click()         'Knop Wis
sToDo = DLookup("[n_todo1]", "[Query Notities]", "[o_Opdracht ID]=" & Me.[o_Opdracht ID]) 'Controleer inhoud veld ToDo1 op tekst.
If Nz(sToDo) <> "" Then
[n_todo1] = ""
??????????????????????????? (code voor het onmiddellijk verwijderen van de tekst in het formulier)
End If
End Sub

Veldnaam Query Notities is n_todo1
 
Wel eens van me.repaint gehoord?
De methode Repaint voltooit alle openstaande schermupdates voor een opgegeven formulier. Wanneer de methode Repaint wordt uitgevoerd op een formulier, voltooit deze ook lopende herberekeningen van de besturingselementen van het formulier.
 
Onbegrijpelijke constructie; je hebt het over een veld op een formulier wissen, maar waar doe je dat dan? Ik zie wat gegoochel met DLookup, maar nergens een tekstveld dat je leegmaakt. Me.n_todo1 = "" is meer dan voldoende om een veld leeg te maken zonder repaint.
Laten we wel wezen: het enige dat je wilt is een veld leegmaken. Wat heeft het dan voor nut om eerst te kijken of er wat in staat? Die check kan twee kanten op: hij is leeg, of hij is dat niet. In het eerste geval maak je een leeg veld leeg (wat denk je dat er dan gebeurt?), in het tweede geval doe je echt iets. Maar dat wíl je ook. Kortom: ikke nie snappe....
 
Bedankt voor je antwoord. Dat je het niet snapt, begrijp ik. De DLookup functie heeft te maken met de filterfunctie die ik daarmee kon toepassen. Het formulier bevat aan de hand van een adres meerdere (8x) werkopdrachten bij dat adres. Die heb ik gedestilleerd uit een query. Per werkopdracht, met een specifiek opdrachtnummer wordt een tweede formulier geopend waarin het bij de opdracht behorende ToDo lijst staat. Ik haal deze instructie weg en dan is hopelijk het begrip weer terug, sorry.

Om het veld in de ToDo list met een knop te wissen, heb ik je code "Me.n_todo1" toegepast. Het veld in de tabel wordt gewist echter blijft de tekst in het veld van het formulier staan. Als ik daarna in het formulier klik, dan wordt de tekst in het formulier gewist.
Hoe kan ik zorgen dat ook het veld op het formulier zonder extra klik wordt gewist?
 
Ik heb het antwoord inmiddels zelf gevonden. Ik het antwoord # 4 30 september 2010 gevonden. Ik heb de instructie Me.Form.Requery toegepast en het werkt. Ik word langzamerhand erg enthousiast van VBA.:d
Het eindresultaat ziet er als volgt uit:
Code:
Private Sub Knop256_Click()         'Knop Wis formulier Notities_ToDo.
Me.[n_todo1] = ""
DoCmd.RunCommand acCmdSaveRecord    'Na wissen veld in de tabel, opslaan van de current record.
If Me.Dirty Then
    Me.Dirty = False
End If
Me.Form.Requery
End Sub
 
Twee keer hetzelfde, is mij niet opgevallen. Iets verkeerd met Me.Dirty?
 
Dit:
PHP:
DoCmd.RunCommand acCmdSaveRecord
=dit:
PHP:
If Me.Dirty Then Me.Dirty = False
Oftewel: je doet twee keer hetzelfde.
 
Dank. Ik heb het door en ga het aanpassen.
Code:
Private Sub Knop256_Click()         'Knop Wis formulier Notities_ToDo 1.
Me.[n_todo1] = ""
DoCmd.RunCommand acCmdSaveRecord  'Na wissen veld in de tabel, opslaan van de current record.
Me.Form.Requery                                    'Wis tekst in het veld ToDo1
End Sub
 
Oke, dank voor de tip. Doe je dit uit oogpunt van stabiliteit ed.?
 
Nog niet eens, maar opslaan is niet altijd nodig in een active. Me.Dirty kijkt of er iets is gewijzigd op een formulier, en slaat dan pas op. Je doet dus geen overbodige handelingen.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan