Tabelle in relazione: come ricercare i dati in una maschera?

Anonimo
2016-02-18T10:17:46+00:00

Premessa: sono totalmente inesperta e autodidatta.

Dopodichè:

Buongiorno a tutti!

Sto realizzando un database con Access 365 per poter gestire i pazienti di uno studio, in particolare coloro che svolgono i percorsi di training autogeno.

Ho realizzato due tabelle: Anagrafica (con i dati anagrafici dei pazienti) e Incontri (visita del, obiettivi, note, tipo incontro da scegliere in una casella combinata tra 10 incontri diversi) in relazione tra loro 1 a molti (collegamento attraverso gli ID).

Da una pagina iniziale si può accedere alla maschera Anagrafica, dove ho inserito una casella di ricerca veloce del paziente con conteggio dei risultati e azzeramento dopo uso, perfettamente funzionante. Sempre dalla pagina iniziale si può accedere a una maschera che combina nome e cognome di ogni paziente a una sottomaschera con tutti gli incontri in ordine cronologico decrescente. 

Quello che vorrei fare è una casella di ricerca analoga a quella dell'anagrafica che mi mostri il paziente e il relativo percorso anche se i dati provengono da due tabelle diverse (in relazione tra loro).

Il codice scritto per la maschera Anagrafica (funzionante) è:

Private Sub Comando10_Click()

Dim z As String

z = "Select Cognome, Nome, [Data di nascita], Sesso, [Codice Fiscale], Indirizzo, Telefono, Cellulare, Email, Privacy, [Consenso Informato] From Anagrafica  Where Cognome  Like '*" & Testo11.Value & "*';"

Form_Anagrafica.RecordSource = z

Form_Anagrafica.Requery

Testo11 = ""

End Sub

La maschera che combina i dati provenienti dalle due tabelle è ricavata da una query nominata Combinata. Ho provato intuitivamente a scrivere un codice che richiamasse i dati dalla query:

Private Sub Comando10_Click()

Dim z As String

z = "Select Cognome, Nome, [Visita del], Obiettivi, Note, [Tipo incontro] From Combinata Where Cognome Like '*" & Testo11.Value & "*';"

Form_RiepilogoPaz.RecordSource = z

Form_RiepilogoPaz.Requery

Testo11 = ""

End Sub

Ma quando provo a effettuare una ricerca invece di restituirmi il paziente con quel cognome e il relativo percorso nella sottomaschera, mi compare un finestra di dialogo che mi chiede di inserire informazioni relativi al campo obiettivi, mentre io vorrei vedere tutti gli incontri in ordine cronologico.

Allego un'immagine della maschera perchè sia più comprensibile:

Grazie a chiunque mi voglia aiutare!

F.

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

6 risposte

Ordina per: Più utili
  1. Anonimo
    2016-02-18T22:48:15+00:00

    ciao Francesca,

    secondo me con la comboBox di cui al primo post...nel senso...inizi a digitare il cognone nella demo la bevanda e poco a poco si compone da sola nella sua interezza.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2016-02-18T22:03:02+00:00

    Fantastico! Ci sono riuscita, anche se ho solo un dubbio:

    al momento la textbox mi permette di scrivere soltanto una lettera e mi presenta tutti i pazienti con quell'iniziale! 

    Come posso scrivere il Cognome per intero in modo da rendere la ricerca più precisa?

    Grazie grazie grazie!

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2016-02-18T21:11:01+00:00

    ciao Francesca,

    per questo secondo step utlizziamo l'evento on change della text box e ad ogni carattere digitato il filtro viene impostato nella form restringendo sempre più il recordset.

    questo è più visibile nella form Prodotti5 rispetto che alla categorie2... prova e capirai.

    nella form categoria2 non puoi eliminare il filtro impostato cliccando sull'icona a pià pagina della form stessa, nella prodotti5 invece si.

    ho previsto la possibilità di filtrare nomi con l'apostrofo.

    textbox ricerca2.

    http://1drv.ms/1OizlnB francesca1.1.accdb.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2016-02-18T19:51:18+00:00

    se la struttura della form è la classica master - details

    [si schiarisce la voce] Giuro di aver cercato su google cosa voglia dire questa frase ma non ho trovato nulla, quindi non so risponderti!

    credo che possa essere sufficiente sincronizzare il bookmark del recordsetclone della form in seguito al risultato noMatch=true del metodo findFirst

    Questo, stranamente, a livello logico l'ho compreso: ho barato e sono andata a guardarmi il codice che hai scritto per generare l'evento nel database che mi hai inviato.

    Il problema è che, in concreto, non so come fare perchè non conosco il significato di questi operatori logici! Io vorrei farlo sul clic, digitando alcune lettere o la parola intera del cognome di una persona. Come modifico il mio codice iniziale (per una ricerca semplice) inserendo questi nuovi meravigliosi "cosi" di cui mi hai parlato?

    Sono un'imbranata!

    Grazie per la risposta super-celere!

    Il database che hai condiviso con me fa ESATTAMENTE ciò che vorrei fare (sono commossa T_T).

    F.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2016-02-18T19:22:55+00:00

    ciao Francesca,

    Premessa: sono totalmente inesperta e autodidatta.

    non ti preoccupare :-)

    Buongiorno a tutti!

    buonasera a te e benvenuta !

    se la struttura della form è la classica master - details, credo che possa essere sufficiente sincronizzare il bookmark del recordsetclone della form in seguito al risultato noMatch=true del metodo findFirst...

    forse un po' arabo se sei un agli inizi....

    Se ho colto correttamente il tuo quesito prova a selezionare dalla combobox con etichetta ricerca posizionata form categorie2 una categoria e vedi cosa succede alla form, da questo DB :

    http://1drv.ms/1oNmvsC francesca.accdb

    Grazie a chiunque mi voglia aiutare

    prego e facci sapere.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento