Ricerca di un dato in una tabella di Access

Anonimo
2015-10-30T14:16:28+00:00

Buon pomeriggio a tutti, ho realizzato il codice sottoriportato per effettuare una ricerca su una tabella e poi aprire la maschera con il dato ricercato ma nonostante sia presente il valore nella tabella mi dice che è inesitente.

Cosa non va nel codice creato, eppure mi sembra sia a posto.

In attesa di un vostro cortese riscontro vi auguro buna serata,

Public Sub Trova_Fascicolo()

Dim DBCorrente As DAO.Database

Dim Tabella As DAO.RecordSet

'Apertura DB

Set DBCorrente = CurrentDb

'Apertura tabella

Set Tabella = DBCorrente.OpenRecordset("TblAnagrafica", dbOpenDynaset)

If IsNull(Forms!FrmRicerca!txtFascicolo) Then Exit Sub

'RunCommand acCmdSaveRecord

Tabella.FindFirst ("[Fascicolo Amministrativo] = """ & (Forms!FrmRicerca!txtFascicolo) & """")

  If Tabella.NoMatch Then

        MsgBox " Nessun dato corrisponde al criterio di ricerca", vbInformation, " DATO INESISTENTE"

  Else

        Tabella.FindNext ("[Fascicolo Amministrativo] = """ & (Forms!FrmRicerca!txtFascicolo) & """")

        DoCmd.OpenForm "FrmAnagrafica", acNormal

        Set Tabella = Forms!FrmAnagrafica.RecordsetClone

        Tabella.FindFirst ("[Fascicolo Amministrativo] = """ & (Forms!FrmRicerca!txtFascicolo) & """")

            If Not Tabella.NoMatch Then

            Forms!FrmAnagrafica.Bookmark = Tabella.Bookmark

            Forms!FrmAnagrafica.Refresh

                    'Chiusura tabella

           Tabella.Close

         'Chiusura DB

           DBCorrente.Close

           DoCmd.Close acForm, Forms![FrmRicerca].Name

            End If

End If

End Sub

Ciao Nicola.

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2015-11-02T13:04:36+00:00

ciao Nicola,

[...]

tutto risolto..

[...]

bene, cos'era che non andava?

[...]

come faccio a far comparire un Msgbox se il dato ricercato non esiste?

[...]

funzione di aggregazione sui domini, dlookup oppure Dcount.

Direi DlookUp nel tuo caso.

Imposti una condizione, per la quale, se la DlooKup trova il fascicolo oggetto di ricerca nel dominio che fa da recordSource alla form FrmAnagrafica, apri la form FrmAnagrafica stessa, altrimenti fai apparire un msgBox con il messaggio personalizzato.

aiutino:

if dlookup restistuisce il fascicolo che cerco  then

     docmd.aproLaMascheraFiltrata

else

      messsagio "attenzione fascicolo inesistente"

end if

a te l'onere ed il divertimento di tradurlo in VBA :-)

Grazie per l'aiuto che mi hai dato

prego :-)

Ciao, Sandro

La risposta è stata utile?

0 commenti Nessun commento

16 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-10-30T15:18:42+00:00

    Ciao Sandro e se provo con il metodo Filter On ottengo lo stesso risultato di ricerca oppure non è uguale a quello che desidero fare con il codice postato all'inizio?

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-10-30T15:15:07+00:00

    ciao Nicola,

    [...]

    Questa  Sub l'ho messa su  cambiando alcuni riferimenti di un'altra che utilizzo sulla stessa Maschera di ricerca e funziona perfettamente.

    [...]

    prova ad aprire la form utilizzando il parametro whereCondition del metodo openForm.

    Fai qualche tentativo e prova a postare il risultato.

    Se non riesci pubblica una miniDemo priva di dati sensibili che vediamo di aiutarti meglio.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-10-30T15:06:04+00:00

    Ciao Sandro, grazie innanzitutto per il cortese riscontro, si è vero abbiamo discusso di un altro argomento (quasi simile ma non uguale a questo quesito)  e funziona benissimo.

    Questa  Sub l'ho messa su  cambiando alcuni riferimenti di un'altra che utilizzo sulla stessa Maschera di ricerca e funziona perfettamente.

    Ho solo cambiato il riferimento  alla colonna della tabella e non funziona più.

    Ti posto l'altra Sub che funziona per lo scopo che desidero:

    Public Sub Trova_Protocollo()

    Dim DBCorrente As DAO.Database

    Dim Tabella As DAO.RecordSet

    'Apertura DB

    Set DBCorrente = CurrentDb

    'Apertura tabella

    Set Tabella = DBCorrente.OpenRecordset("TblAccettazione", dbOpenDynaset)

    If IsNull(Forms!FrmRicerca1!txtProtocollo) And (Forms!FrmRicerca1!txtBarra) Then Exit Sub

    'RunCommand acCmdSaveRecord

    Tabella.FindFirst ("[Protocollo Nr]&[Barra] = """ & (Forms!FrmRicerca1!txtProtocollo) & (Forms!FrmRicerca1!txtBarra) & """")

      If Tabella.NoMatch Then

            MsgBox " Nessun dato corrisponde al criterio di ricerca", vbInformation, " DATO INESISTENTE"

            'DoCmd.Close

            Exit Sub

       End If

    Tabella.FindNext ("[Protocollo Nr]&[Barra] = """ & (Forms!FrmRicerca1!txtProtocollo) & (Forms!FrmRicerca1!txtBarra) & """")

                DoCmd.OpenForm "FrmAccettazione", acNormal

                Set Tabella = Forms!FrmAccettazione.RecordsetClone

                Tabella.FindFirst ("[Protocollo Nr]&[Barra] = """ & (Forms!FrmRicerca1!txtProtocollo) & (Forms!FrmRicerca1!txtBarra) & """")

                If Not Tabella.NoMatch Then

                Forms!FrmAccettazione.Bookmark = Tabella.Bookmark

                Forms!FrmAccettazione.Refresh

                        'Chiusura tabella

            Tabella.Close

            'Chiusura DB

            DBCorrente.Close

    DoCmd.Close acForm, Forms![FrmRicerca1].Name

    End If

    End Sub

    P.S. metto su del codice facendo tante prove ed aiutandomi molto con internet.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-10-30T14:49:07+00:00

    ciao Nicola,

    io utilizzerei il metodo openForm membro di docmd sincronizzando la maschera che apri con la whereCondition.

    Tra l'altro qualche mese fa in aprile proprio con te avevamo trattato la sincronizzazione di due form tramite un evento di classe....

    http://answers.microsoft.com/it-it/office/forum/office\_2010-access/trovare-un-dato-o-eventuali-omonimi-e/c387b62a-6db8-40ae-9d98-4a851d0e6fc5

    la routine che posti nel tuo post sembra esattamente la stessa...del post di cui mostro il link qui sopra.....

    domanda...

    mi spieghi il perché se noMatch restituisce true, utilizzi il findnext ?

    Il codice ti sembra ok, hai provato ad impostare un punto di interruzione seguire passo passo l'esecuzione del codice per vedere cosa non va?

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento