IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Access
  New Posts New Posts RSS Feed - casella di testo non associata per ricerca
  FAQ FAQ  Forum Search   Events   Register Register  Login Login


REGISTRATEVI su IALWeb forum!

casella di testo non associata per ricerca

 Post Reply Post Reply
Author
Message
Philip3 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 29/Ott/2011
Location: Italy
Status: Offline
Points: 6
Post Options Post Options   Thanks (0) Thanks(0)   Quote Philip3 Quote  Post ReplyReply Direct Link To This Post Topic: casella di testo non associata per ricerca
    Posted: 04/Nov/2011 at 18:33
Rivolgo a tutti il quesito seguente:
perchè se inserisco il codice VBA (che qui sotto riporto) nell'evento change di una casella di testo non associata, ogni lettera digitata sovrascrive la precedente sempre all'interno della stessa casella?
Grazie anticipate per la risposta
Philip3

Codice:
Me.Filter = "[codice] Like " & Chr$(34) & Me!txtRicerca & "*" & Chr$(34)
Me.FilterOn = True

N.B.: codice               campo che deve essere filtrato
        txtRicerca         controllo non associato ed utilizzato per la ricerca
Filippo
Back to Top
Sponsored Links


Back to Top
65.franco View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 19/Apr/2009
Location: Italy
Status: Offline
Points: 4108
Post Options Post Options   Thanks (0) Thanks(0)   Quote 65.franco Quote  Post ReplyReply Direct Link To This Post Posted: 04/Nov/2011 at 18:36

Perchè su evento change ritorni praticamente indietro e quindi prima di uscire dall'evento change devi riposizionare il cursore alla fine della stringa + 1

Ciaooo ...

 

Franco...
Back to Top
Philip3 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 29/Ott/2011
Location: Italy
Status: Offline
Points: 6
Post Options Post Options   Thanks (0) Thanks(0)   Quote Philip3 Quote  Post ReplyReply Direct Link To This Post Posted: 04/Nov/2011 at 18:58
gentilmente mi potresti fare un esempio?
Grazie
Filippo
Back to Top
Philip3 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 29/Ott/2011
Location: Italy
Status: Offline
Points: 6
Post Options Post Options   Thanks (0) Thanks(0)   Quote Philip3 Quote  Post ReplyReply Direct Link To This Post Posted: 04/Nov/2011 at 21:43
Originally posted by Philip3 Philip3 wrote:

gentilmente mi potresti fare un esempio?
Grazie

RISOLTO
con questa stringa:
Me.txtRicerca.SelStart = Len(Me!txtRicerca & "")
Me.txtRicerca.SelLength = 0

Filippo
Back to Top
65.franco View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 19/Apr/2009
Location: Italy
Status: Offline
Points: 4108
Post Options Post Options   Thanks (0) Thanks(0)   Quote 65.franco Quote  Post ReplyReply Direct Link To This Post Posted: 04/Nov/2011 at 22:17

Il problema che segnali si verifica in quanto su evento change della casella di testo hai inserito il filtro e la sua attivazione.
Pertanto la form esegue un refresh e il cursore sulla tua casella di testo si riposiziona a sinistra e seleziona il testo da modificare. Qunado digiti un nuovo carattere non fai altro che ricoprire il precedente.

Per risolvere questo problema devi portare il cursore alla fine dei caratteri inseriti, sull'estrema detra della casella di testo.
Puoi utilizzare questa riga di codice : Me.txtRicerca.SelStart = Me.txtRicerca.SelLength

Ma non basta.
Se per esempio il tuo ennesimo caratteri risulta essere uno spazio , questo caratte (carttere spazio) lo perderesti comunque. 
Quindi in questo caso non riesci mai ad inserire uno spazio nella stringa che stai scrivendo.
Questo accade perchè in fase di applicazione filtro abbiamo detto che la form esegue un refresh e pertanto i caratteri vuoti o spazio, vengono soppressi in automatico. Questo è un comportamento standard di msaccess.

Pertanto si rende necessario:
- Salvare il contenuto del campo prima di eseguire ed applicare il filtro .
- Dopo aver applicato il filtro si ripristina il valore che era presente nella casella di testo che è stato precedentemente salvato.
- Adesso si può spostare il cursore alla fine della stringa.

Tradotto in codice sarà:

Private Sub txtRicerca_Change()
' salva sctring inserita nela casella di testo
Dim strMyString As String
strMyString = Me.txtRicerca.Text

Me.Filter = "Impostazione Stringa Sql per il tuo Filtro di Ricerca"
Me.FilterOn = True

' ripristina stringa in casella di testo
Me.txtRicerca = strMyString
' imposta cursore a destra della casella di testo
Me.txtRicerca.SelStart = Me.txtRicerca.SelLength
End Sub



Tutto qua...
Prova , Verifica e chiedi se hai bisogno di ulteriori spiegazioni.
Ciaooo ...

Franco...
Back to Top
Philip3 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 29/Ott/2011
Location: Italy
Status: Offline
Points: 6
Post Options Post Options   Thanks (0) Thanks(0)   Quote Philip3 Quote  Post ReplyReply Direct Link To This Post Posted: 05/Nov/2011 at 12:11
Ho seguito alla lettera il tu suggerimento e codice che di seguito riporto, ma mi accade un farfallio del cursore e quando provo a digitare altre lettere, compreso lo spazio, il carattere non si accoda ma si antepone a quello già digitato.
Es.: se scrivo E, intanto inizia il farfallio del cursore; appena mi permette di digitare un altro carattere (ad esempio A), invece di comporni la stringa EA mi compone la stringa AE.
Ti ringrazio per l'aiuto e la apzienza che mi presti.

Codice:
 Private Sub txtRicerca_Change()
Dim contenutoricerca As String
' con l'istruzione che segue salvo il contenuto di txtRicerca
contenutoricerca = Me.txtRicerca.Text

'Sono le stringhe che mi permettono di filtrare il DB in base a ciò che si scrive
'nella casella di testo "TxtRicerca"
Me.Filter = "[codice] Like " & Chr$(34) & Me!txtRicerca & "*" & Chr$(34)
'Me.Filter = Chr$(34) & "[Codice] like " & Me!txtRicerca.text & "*" & Chr$(34)
'Me.Filter = "[prestazione] Like " & Chr$(34) & Me!txtRicerca & "*" & Chr$(34)
Me.FilterOn = True

'Ripristino il contenuto della stringa salvata
Me.txtRicerca.Text = contenutoricerca

'Sposto il cursore alla destra della casella di testo txtRicerca
Me.txtRicerca.SelStart = Me.txtRicerca.SelLength


Originally posted by 65.franco 65.franco wrote:

Il problema che segnali si verifica in quanto su evento change della casella di testo hai inserito il filtro e la sua attivazione.
Pertanto la form esegue un refresh e il cursore sulla tua casella di testo si riposiziona a sinistra e seleziona il testo da modificare. Qunado digiti un nuovo carattere non fai altro che ricoprire il precedente.

Per risolvere questo problema devi portare il cursore alla fine dei caratteri inseriti, sull'estrema detra della casella di testo.
Puoi utilizzare questa riga di codice : Me.txtRicerca.SelStart = Me.txtRicerca.SelLength

Ma non basta.
Se per esempio il tuo ennesimo caratteri risulta essere uno spazio , questo caratte (carttere spazio) lo perderesti comunque. 
Quindi in questo caso non riesci mai ad inserire uno spazio nella stringa che stai scrivendo.
Questo accade perchè in fase di applicazione filtro abbiamo detto che la form esegue un refresh e pertanto i caratteri vuoti o spazio, vengono soppressi in automatico. Questo è un comportamento standard di msaccess.

Pertanto si rende necessario:
- Salvare il contenuto del campo prima di eseguire ed applicare il filtro .
- Dopo aver applicato il filtro si ripristina il valore che era presente nella casella di testo che è stato precedentemente salvato.
- Adesso si può spostare il cursore alla fine della stringa.

Tradotto in codice sarà:

Private Sub txtRicerca_Change()
' salva sctring inserita nela casella di testo
Dim strMyString As String
strMyString = Me.txtRicerca.Text

Me.Filter = "Impostazione Stringa Sql per il tuo Filtro di Ricerca"
Me.FilterOn = True

' ripristina stringa in casella di testo
Me.txtRicerca = strMyString
' imposta cursore a destra della casella di testo
Me.txtRicerca.SelStart = Me.txtRicerca.SelLength
End Sub



Tutto qua...
Prova , Verifica e chiedi se hai bisogno di ulteriori spiegazioni.
Ciaooo ...

Filippo
Back to Top
65.franco View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 19/Apr/2009
Location: Italy
Status: Offline
Points: 4108
Post Options Post Options   Thanks (0) Thanks(0)   Quote 65.franco Quote  Post ReplyReply Direct Link To This Post Posted: 05/Nov/2011 at 14:04
Questa istruzione non va bene ...  hai copiato male il codice:
'Ripristino il contenuto della stringa salvata
Me.txtRicerca.Text = contenutoricerca

Deve essere
Me.txtRicerca = contenutoricerca

Poi fai attenzione, in questa stringa filter non mettere text
Me.Filter = Chr$(34) & "[Codice] like " & Me!txtRicerca.text & "*" & Chr$(34)

Metti la stringa in questo modo , come le altre:
Me.Filter = Chr$(34) & "[Codice] like " & Me!txtRicerca & "*" & Chr$(34)

Per il farfallio non saprei cosa dirti non vedendo il tuo codice e la tua form... io ho provato su una mia form e non è percettibile nessun sfarfallio.

La cosa che invece mi domando è perchè esegui il filtro su change casella di testo invece che su evento Dopo Aggiornamento.

Comunque ...  intanto correggi gli errori e prova.
Ciaooo ...


Edited by 65.franco
Franco...
Back to Top
Philip3 View Drop Down
Nuovo Utente
Nuovo Utente


Joined: 29/Ott/2011
Location: Italy
Status: Offline
Points: 6
Post Options Post Options   Thanks (0) Thanks(0)   Quote Philip3 Quote  Post ReplyReply Direct Link To This Post Posted: 05/Nov/2011 at 15:55
Ciao, non potevo dubitar sulle tue correzioni e sulle mie disattenzioni :-)
In merito ala tua osservazione (Modifica e non Aggiornamento) è perché vorrei che ad ogni carattere digitato, la maschera filtri e si aggiorni in tempo reale.-
Non so se ciò può avvenire anche con l'Aggiornamento.
Colgo l'occasione per chiederti: E' possibile aggiungere il criterio OR per applicare il filtro anche su un altro campo?
In caso di risposta positiva come e dove dovrei aggiungere la stringa?
Ancora grazie


Originally posted by 65.franco 65.franco wrote:

Questa istruzione non va bene ...  hai copiato male il codice:
'Ripristino il contenuto della stringa salvata
Me.txtRicerca.Text = contenutoricerca

Deve essere
Me.txtRicerca = contenutoricerca

Poi fai attenzione, in questa stringa filter non mettere text
Me.Filter = Chr$(34) & "[Codice] like " & Me!txtRicerca.text & "*" & Chr$(34)

Metti la stringa in questo modo , come le altre:
Me.Filter = Chr$(34) & "[Codice] like " & Me!txtRicerca & "*" & Chr$(34)

Per il farfallio non saprei cosa dirti non vedendo il tuo codice e la tua form... io ho provato su una mia form e non è percettibile nessun sfarfallio.

La cosa che invece mi domando è perchè esegui il filtro su change casella di testo invece che su evento Dopo Aggiornamento.

Comunque ...  intanto correggi gli errori e prova.
Ciaooo ...
Filippo
Back to Top
65.franco View Drop Down
Utente Onorario
Utente Onorario
Avatar

Joined: 19/Apr/2009
Location: Italy
Status: Offline
Points: 4108
Post Options Post Options   Thanks (0) Thanks(0)   Quote 65.franco Quote  Post ReplyReply Direct Link To This Post Posted: 05/Nov/2011 at 16:18

Certo che puoi utilizzare gli or o le and e/o entrambe ecc...

A parole spiegami che tipo di ricerca vuoi effettuare econ quali campi e che tipo di campi (tipo  Testo, Numerico, Date , ecc...)

guarsdando un attimo questi tuoi filtri ho notato che fai un po' di confusione con il Chr$(34)... poi nella risposta successiva ti dico cosa e come.

Fammi sapere ...



Edited by 65.franco
Franco...
Back to Top
 Post Reply Post Reply
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,047 seconds.