RICERCA CAMPO IN ALTRA MASCHERA

di il
7 risposte

RICERCA CAMPO IN ALTRA MASCHERA

[code][code][code][code]
[/code][/code][/code][/code]Buona sera e buon 2016 a tutti gli esperti, ho bisogno di porvi un quesito.
Ho due maschera, in entrambe ho un elenco di contatti (COGNOME, NOME, N° TELEFONICO, E-MAIL, ECC...)
Nella prima maschera ho una TEXTBOX che serve ad effettuare una ricerca.
Qualora in elenco non ci sono dati uguali o simili alla ricerca, mi viene riportato un messaggio di estendere la ricerca nell'altra maschera, ed è qui che si pone il problema. Dal codice che allego, al click su SI alla richiesta di estendere la ricerca nell'altra maschera, si apre tale maschera, ma io vorrei che ciò che ho provato a cercare nella prima maschera lo provi a cercare direttamente nella seconda. Quindi vorrei che se nella TEXTBOX della prima maschera scrivo "PINCO" e tale nome non esiste, compaia il messaggio di estendere la ricerca nella seconda maschera e al click su SI si apre la suddetta maschera e nel modo del tutto automatico ciò che ho provato a cercare nella prima maschera, ovvero " PINCO", lo provi a cercare nella seconda. Se poi "PINCO" non esiste neanche nella seconda maschera, allora compaia il messaggio che tale ricerca non esiste.

Spero di non chiedere troppo e che sia stato abbastanza esplicativo.
Grazie per l'interessamento
Private Sub search_box_AfterUpdate()

'CASELLA DI TESTO CERCA

Dim s As String, i As Integer
    DoCmd.Echo False
    FilterOn = False
    s = "[QUALIFICA] Like %1 Or [COGNOME] Like %1 Or [NOME] Like %1 Or [UTENZA 1] Like %1 " & _
        "Or [UTENZA 2] Like %1 Or [Nr INTERNO] Like %1"
    Filter = Replace(s, "%1", Chr(34) & "*" & search_box & "*" & Chr(34))
    FilterOn = True
    DoCmd.Echo True
    search_box = ""
    If Me.Recordset.RecordCount = 0 Then
    i = MsgBox("Non esistono dati simili in elenco!!" & vbCrLf & "Vuoi controllare tra i TRASFERITI?", vbExclamation + vbYesNo, "CONTROLLO CONTATTI")
    If i = vbYes Then
    search_box = ""
    FilterOn = False
    DoCmd.OpenForm "m_trasferito"
    Else
    If i = vbNo Then
    FilterOn = False
    End If
    End If
    End If

End Sub

7 Risposte

  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    Perchè hai 2 maschere "uguali"?
    Perchè ti sei complicato la vita così? Non bastava una sola tabella Anagrafica e una sola maschera omonima?
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    No non sono uguali, perdonate se lo ho fatto sembrare.
    Sono due maschere completamente diverse, nel senso che hanno dati diversi all'interno e anche le strutture sono leggermente diverse
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    Potresti chiarirlo indicando:
    - su quali tabelle (nomi propri) poggiano
    - tutti i campi che si vedono
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    Anzi tutto se fosse possibile preferire evitare di modificare tutta la struttura e l'origine dei dati, dunque:

    Ci sono
    1 tabella che si chiama "elenco_generale"
    2 query che si chiamano "q_elenco_generale" e "q_trasferito"
    2 maschere che si chiamano "m_elenco_generale" e "m_trasferito"

    Nella tabella ci sono i campi:
    QUALIFICA, COGNOME, NOME, UFFICIO, UTENZA 1, UTENZA 2, NR INTERNO, E-MAIL
    Al suo interno ci sono tutti i dati

    La query invece effettua un filtro al campo UFFICIO, ovvero tutti coloro che hanno nel campo UFFICIO la dicitura "TRASFERITO o QUIESCENTE" li esclude dall'elenco della query

    Perciò...la maschera "m_elenco_generale" prende i dati da "q_elenco_generale", perché deve mostrare tutti coloro che non sono né TRASFERITI né QUIESCENTE.

    La maschera "m_trasferito" mostra invece tutti quelli TRASFERITI e QUIESCENTE prendendo i dati dalla query "q_trasferito"

    Quindi, nella maschera "m_generale" c'è questa TEXTBOX (chiamta "search_box") che fa effettuare una ricerca nella maschera. Nello specifico, se scrivo PINCO ed esiste nella maschera "m_elenco_generale" allora mi viene visualizzato il record di PINCO, ma se in realtà PINCO è un nome che si trova nella maschera "m_trasferito", allora vorrei che la sua ricerca venisse estesa in automatico nell'altra maschera, ovvero "m_trasferito"
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    C'è un "non so che" di farraginoso nell'intera gestione di questa "ricerca" messa in piedi così. Magari io avrei pensato a una 3a maschera esterna con la sola TextBox da cui far partire la ricerca che dovrebbe poi diramarsi in m_elenco_generale o m_trasferito...boh!

    Il codice VBA che avresti proposto...non riesco a leggerlo per intero, ma vedo alcuni riferimenti a Recordset. Se vuoi lavorare con i recordset devi sempre dichiarare:
    - le variabili oggetto, tra cui anche il database stesso
    - le istruzioni Set
    - le aperture e chiusure...
    ...sto andando molto a ruota libera

    Io non sono affatto convinto della tua scelta strategica.
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    Vabbè detto ciò, esiste un modo per far quello che vorrei? E se si come si può fare? Lasciando chiaramente tutto invariato così com'è già strutturato.
  • Re: RICERCA CAMPO IN ALTRA MASCHERA

    alexps81 ha scritto:


    Vabbè detto ciò, esiste un modo per far quello che vorrei? E se si come si può fare? Lasciando chiaramente tutto invariato così com'è già strutturato.
    Non ho seguito le cose dette prima... ma mi limito al primo tuo intervento su cui vorrei un chiarimento...!

    MI permetto poi di farti notare che i dati NON SI CERCANO NELLE MASCHERE... ma nelle Tabelle... è assurdo cercare un dato in una Maschera... tuttavia su questo...

    Questo discorso vale non solo per il 2° CASO, ma anche per il primo...!
    INfatti se tu evitassi di applicare un Fitlro DUBBIO(nel senso che finchè non lo applichi non sai se trova soddisfazione) potresti evitare ECHO vari o sotterfugi per evitare sfarfallamenti.
    PEr queste cose si usa l'oggetto RECORDSETCLONE ed il metodo FINDFIRST, leggendo di conseguenza la proprietà NoMatch...
    Questa cosa è fattibile su qualsiasi Maschera... o su qualsiasi Recordset...

    Fai poi attenzione che se il campo è NUMERICO... il LIKE come lo hai implementato non può andare bene...!
Devi accedere o registrarti per scrivere nel forum
7 risposte