Casellatxt di ricerca con pulsante

di il
17 risposte

Casellatxt di ricerca con pulsante

Buonasera a tutti , ho una tabella "Dichiarazione" con due campi da poter cercare il contenuto dei record. I due campi su cui fare la ricerca sono "ID" e "Cognome", il tutto su vba con select e su maschera singola.

il codice :

Private Sub Comando161_Click()
Dim z As String
z = "SELECT * FROM Dichiarazione Where Cognome Like '*" & Ricerca.Value & "*' OR ID Like '*" & Ricerca.Value & "*'"
Me.RecordSource = z
Me.Requery

Ricerca=""
End Sub

con questo codice sopra access resitituisce un errore per i cognomi che contengono apostrofo (') , ad esempio D'Apice , D'Amico ecc....

allora ho modificato la stringa con Replace cosi :

Private Sub Comando161_Click()
Dim z As String
z = "SELECT * FROM Dichiarazione Where Cognome Like '*" & Replace(Ricerca.Value, "'", "''") & "*'"
Me.RecordSource = z
Me.Requery

Ricerca=""
End Sub

e per fare in modo che funzioni ho impostato il Tipo di Recordset  su snapshot invece che dynaset e funziona.

la mia richiesta di aiuto arriva dal fatto che con questa nuova stringa con replace riesco a cercare solo il cognome e non anche l'ID come nella prima sub da me postata, qualcuno può aiutarmi a riscriverla ?

17 Risposte

  • Re: Casellatxt di ricerca con pulsante

    Manca la parte da OR in poi ... perchè l'hai eliminata?

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - Ake ha scritto:

    ho una tabella "Dichiarazione" con due campi da poter cercare il contenuto dei record. I due campi su cui fare la ricerca sono "ID" e "Cognome", il tutto su vba con select e su maschera singola.

    Io, al di là dei codici postati, non capisco cosa devi fare veramente...soprattutto il perché della ricerca su due campi. Potresti fare un esempio pratico?

  • Re: Casellatxt di ricerca con pulsante

    A parte che ti sei perso la parte or...

    Ma perché non usate mai i parametri?

    Paramcognome di tipo string

    Paramnumero di tipo numerico

    Ecc...

    Sql= select .... Where (cognome like [parametrocognome] and [parametrocognome<>'')

    Or

    (Altrocampo like [altroparametro] and [altroparametro<>'')

    Prima di lanciare la.query setti i parametri e amen!

    Se parametro='d'ellamico dell'amico' quello che passi è [parametro] non ''&testo & ''' & abc... Ecc...

    Se per ipotesi ti serve una data metti un parametro.di tipo date e passi solo il parametro...

  • Re: Casellatxt di ricerca con pulsante

    Mi chiedo perché non usare semplicemente la proprietà Filter di maschera necessaria di riscrivere un predicato SQL che poi rende complesso passare eventuali criteri a Report o altri Bound Object...?

    Semplificate le cose, aiuta.

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - oregon ha scritto:

    Manca la parte da OR in poi ... perchè l'hai eliminata?

    Oregon l'ho eliminata perchè mi restituiva errore , non la so scrivere ...... mi aiuti ?

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - OsvaldoLaviosa ha scritto:

    21/01/2025 - Ake ha scritto:

    ho una tabella "Dichiarazione" con due campi da poter cercare il contenuto dei record. I due campi su cui fare la ricerca sono "ID" e "Cognome", il tutto su vba con select e su maschera singola.

    Io, al di là dei codici postati, non capisco cosa devi fare veramente...soprattutto il perché della ricerca su due campi. Potresti fare un esempio pratico?

    Osvaldo forse non siamo in sintonia per la mia poca professionalità , noto che in ogni argomento che posto invece di imparare io qualcosa tu non capisci mai cosa dico , non so che dire .... è una casella di testo dove ci scrivi cosa vuoi cercare e cliccki un btn per avviare la ricerca non so come spiegarmi meglio

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - sihsandrea ha scritto:

    A parte che ti sei perso la parte or...

    Ma perché non usate mai i parametri?

    Paramcognome di tipo string

    Paramnumero di tipo numerico

    Ecc...

    Sql= select .... Where (cognome like [parametrocognome] and [parametrocognome<>'')

    Or

    (Altrocampo like [altroparametro] and [altroparametro<>'')

    Prima di lanciare la.query setti i parametri e amen!

    Se parametro='d'ellamico dell'amico' quello che passi è [parametro] non ''&testo & ''' & abc... Ecc...

    Se per ipotesi ti serve una data metti un parametro.di tipo date e passi solo il parametro...

    non cè la query 

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - @Alex ha scritto:

    Mi chiedo perché non usare semplicemente la proprietà Filter di maschera necessaria di riscrivere un predicato SQL che poi rende complesso passare eventuali criteri a Report o altri Bound Object...?

    Semplificate le cose, aiuta.

    filter di maschera ? non la conosco , potresti essere paziente da darmi info per favore?

  • Re: Casellatxt di ricerca con pulsante

    Va beh chiedo scusa non sono troppo bravo cercavo solo una soluzione / correzione del mio codice , le mie capacità sono queste ....  Un elenco di allievi da ricercare tramite cognome o id , e mostrare su maschera singola i dati con foto , l'unico codice che conosco era quello ma dava errore con gli apostrofi , scusate ma mi sento solo criticato e non aiutato. Studierò meglio grazie lo stesso

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - Ake ha scritto:

    Oregon l'ho eliminata perchè mi restituiva errore , non la so scrivere ...... mi aiuti ?

    Scusa ma vuoi aggiungere la pparte OR e provare la query? L'avevi scritta prima... che errore hai?

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - Ake ha scritto:

    Osvaldo forse non siamo in sintonia per la mia poca professionalità , noto che in ogni argomento che posto invece di imparare io qualcosa tu non capisci mai cosa dico , non so che dire .... è una casella di testo dove ci scrivi cosa vuoi cercare e cliccki un btn per avviare la ricerca non so come spiegarmi meglio

    Sono l'utente più duro di comprendonio di tutto il forum. Qualcosa mi dice che puoi progettare il tutto in maniera più semplice e snella. Adesso parli di un solo campo, prima di due...boh!
    Ribadisco che non ho compreso a pieno il problema, tuttavia suggerisco di prendere in considerazione questa procedura guidata Casella combinata Trova un record nella maschera basato sul valore selezionato nella casella combinata.docx (con il campo ID di riferimento, eviti anche il problema dell'apostrofo).

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - Ake ha scritto:

    Va beh chiedo scusa non sono troppo bravo cercavo solo una soluzione / correzione del mio codice , le mie capacità sono queste ....  Un elenco di allievi da ricercare tramite cognome o id , e mostrare su maschera singola i dati con foto , l'unico codice che conosco era quello ma dava errore con gli apostrofi , scusate ma mi sento solo criticato e non aiutato. Studierò meglio grazie lo stesso

    Ciao, normalmente sui report e/o sulle maschere viene utilizzata la proprietà Filter e qui trovi una breve spiegazione come poterli usare:

    https://support.microsoft.com/it-it/topic/propriet%C3%A0-filter-18be7152-a700-4f34-9768-74da413766a5

    Sempre dal supporto Microsoft, se vai in ricerca dell'argomento Filtro base Maschera, troverai esempi e spiegazioni di come impostare i vari filtri con le varie clausole And e Or, i vari Operatori di confronto e le sintassi da utilizzare.

    Puoi partire da qui per approfondire il tema: https://learn.microsoft.com/en-us/office/vba/api/access.form.filter(property)

    E' molto semplice applicare i filtri alle Maschere e vedrai che non troverai particolari problemi nel farlo.

  • Re: Casellatxt di ricerca con pulsante

    21/01/2025 - Ake ha scritto:

    Private Sub Comando161_Click()
    Dim z As String
    z = "SELECT * FROM Dichiarazione Where Cognome Like '*" & Ricerca.Value & "*' OR ID Like '*" & Ricerca.Value & "*'"
    Me.RecordSource = z
    Me.Requery

    Ricerca=""
    End Sub

    Private Sub Comando161_Click()
        Dim z As String
        Dim MioTesto As String
        Dim MioNumero as Integer
        
        ' controllo se cercare un numero o un testo
        If IsNumeric(Me!blablaRicerca.Value) Then
           MioNumero=Cint(Me!blablaRicerca.Value) 
           MioTesto = ''
        else 
           MioTesto = Me!blablaRicerca.Value
           mionumero=0;
        EendIf
        
        z = "SELECT * FROM Dichiarazione WHERE Cognome LIKE '*" & MioTesto & "*' OR ID =" & Mionumero
        Me.RecordSource = z
        Me.Requery
        Me!blablaRicerca.Value = ""
    End Sub
  • Re: Casellatxt di ricerca con pulsante

    Semplicemente:

    Private Sub ComandoEseguiFiltro_Click()
    	Dim sWH	As String
    	
    	If Len(Me!Ricerca.Value & vbNullstring)>0 Then 
    		sWH= "Cognome Like '*" & Replace(Ricerca.Value, "'", "''") & "*' OR cstr(ID) Like '*" & Ricerca.Value & "*'"
        	Me.Filter=sWH
        	Me.FilterOn=True
        Else
        	Me.FilterON=False
    	End if
    End Sub

    Non fare il "CALIMERO" vedi di studiare per migliorare, e ti faccio notare che NESSUNO ti ha criticato e se ti vengono date delle soluzioni alternative devi avere tu l'intelligenza di capire che non avendo basi non sono critiche a "te", ma alla tecnica, e suggerimenti da studiare per imparare.

Devi accedere o registrarti per scrivere nel forum
17 risposte