[Access / VBA] waarom werkt on change niet?

Pagina: 1
Acties:

  • Zerveza
  • Registratie: Maart 2001
  • Laatst online: 17-12-2021

Zerveza

DoS porfavor

Topicstarter
ik heb een prachtig stuke VBA geleend.. en het werkt geweldig. het is een search functie op een form en het ziet er zo uit.:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Private Sub cmdSearch_Click()

    Dim LSQL  As String
    Dim LSearchString As String
    
    If Len(txtSearchString) = 0 Or IsNull(txtSearchString) = True Then
        MsgBox "You must enter a search string."
        
    Else
    
        LSearchString = txtSearchString
        
        'Filter results based on search string
        LSQL = "select * from LedenPostNaam"
        LSQL = LSQL & " where DisplayNaam LIKE '" & LSearchString & "*'"
        
        Form_Leden_Disp.RecordSource = LSQL
        
        'lblTitle.Caption = "Customer Details:  Filtered by '" & LSearchString & "'"
        
        'Clear search string
        txtSearchString = ""
        
        'MsgBox "Results have been filtered.  All Company Names containing " & LSearchString & "."
         
    End If


Wat ik nu graag zou willen is dat deze code niet wordt aangeroepen als ik op de search knop druk maar direct als ik text invoer. ik heb de cmdSearch_click() al eens vervangen met txtSearchString_Change(), maar dat werk niet.. dan krijg ik steeds de melding dat ik een zoekterm moet invullen zodra ik iets intik.. wat ik vreemd vind want er staat toch wat.. de change is dat ik iets intik..

wie corrigeert mij..

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Wordt change niet pas uitgevoerd als je uit het veld gaat?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Change wordt getriggerd bij elke actie, dat is correct.
In het Change-event is echter geen Value-property beschikbaar van de textbox, gebruik in plaats daarvan de Text-property (dus: txtMyBox.Text)

  • Zerveza
  • Registratie: Maart 2001
  • Laatst online: 17-12-2021

Zerveza

DoS porfavor

Topicstarter
ik ben te veel VB leek, zou je iets specifieker kunnen zijn?

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
Vervang 'txtSearchstring' in 'txtSearchstring.Text' als je in het OnChange-event werkt.

  • skate master
  • Registratie: September 2004
  • Laatst online: 21-08 21:50

skate master

Autodesk Educator Expert

Als je dat wilt dmv het onchange event, dan krijg je dat er gezocht wordt op iedere
letter wie je intypt.
Ik zelf zou dan kiezen om het in de keypress te zetten, en hier te kijken of
er op enter wordt gedrukt.
Hierdoor voorkom je dat er op elke letter van een woordt gezocht wordt.
Komt nog eens bij dat je onchange een nul string zal blijven retourneren want
dit event wordt aangeroepen wanneer je de textbox activeert.

  • BertS
  • Registratie: September 2004
  • Laatst online: 13-02 08:33
skate master schreef op dinsdag 12 juli 2005 @ 13:24:
Als je dat wilt dmv het onchange event, dan krijg je dat er gezocht wordt op iedere
letter wie je intypt.
Correcte analyse :)
Ik zelf zou dan kiezen om het in de keypress te zetten, en hier te kijken of
er op enter wordt gedrukt.
Dan kun je net zo goed de AfterUpdate gebruiken, is wel een mogelijkheid ter vervanging van een aparte button
Hierdoor voorkom je dat er op elke letter van een woordt gezocht wordt.
Sóms is dat juist de bedoeling ;)
Komt nog eens bij dat je onchange een nul string zal blijven retourneren want
dit event wordt aangeroepen wanneer je de textbox activeert.
Onjuist, in the onchange kun je de Text-property opvragen die je de volledig ingegeven string teruggeeft. Wordt nl niet aangeroepen bij activeren maar bij typen (zei je dat zelf al niet eerder ;))

  • macnerd
  • Registratie: Oktober 2002
  • Laatst online: 22:16

macnerd

No Apples please :-)

Controleer ook even of er in het Property-venster op tabblad Events iets staat bij het betreffende event (OnChange, AfterUpdate of whatever) voor het betreffende besturingselement. Zonder dit wordt de code nl. niet uitgevoerd. Kijk ook even of er geen oude events staan vermeld (als je bijvoorbeeld eerst OnChange gebruikte maar nu AfterUpdate), dit voorkomt problemen.

MacNerd


  • Boss
  • Registratie: September 1999
  • Laatst online: 00:09

Boss

+1 Overgewaardeerd

Mag het ook iets korter:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Private Sub cmdSearch_Click()

  If nz(txtSearchString) = "" Then
    MsgBox "You must enter a search string."
    FilterOn = False
    lblTitle.Caption = "Customer Details"
  Else
    Filter = "DisplayNaam LIKE *" & txtSearchString.Text & "*"
    FilterOn = True        
    lblTitle.Caption = "Customer Details:  Filtered by '" & LSearchString & "'"
  End If

Alleen dan even op de juiste event zetten. Gebruik van Me.Filter lijkt me sneller dan de recordsource van het formulier aanpassen. Maar misschien heb je daar wel een reden voor?

[ Voor 11% gewijzigd door Boss op 04-08-2005 10:10 ]

The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it is an aesthetic experience much like composing poetry or music.

Pagina: 1