Ricerca su più campi non funziona

di il
10 risposte

Ricerca su più campi non funziona

Buongiorno a tutti
sono nuova, non ho esperienza di programmazione VBA quindi chiedo scusa a tutti per le cavolate che scrivo. Ecco il mio problema: ho un database di immagini che contengono animali e vorrei cercare le immagini che contengono un dato animale. Ho creato una tblanimali con i nomi di tutti gli animali e una tblimmagini con vari campi dove tra gli altri per ogni immagine ci sono tre campi dove inserire (selezione tramite cbo basata su tblanimali) gli animali che vi compaiono: an1, an2 an3.
Ad esempio:
record 1: an1=gatto, an2=topo, an3=mosca
record 2: an1=leone, an2=gatto, an3=biscia
record 3: an1=zebra, an2=tigre, an3=gatto
quindi il gatto può comparire in tutte le immagini ma in campi diversi. Vorrei che però quando cerco un gatto, mi escano fuori tutti e tre.
Ho quindi creato una maschera di ricerca con tutti i campi di tblimmagini dove nell'intestazione c'è una cbo legata alla tblanimali dove selezionare l'animale da cercare. Come origine di questa maschera ho messo una query con tutti i miei campi dove ho creato anche un campo collegato an1 & an2 & an3 che ha come criterio di ricerca la mia cbo. Non so se la mia procedura sia giusta però il meccanismo di ricerca funziona quasi perfettamente. Il problema è che stranamente la ricerca mostra SOLO i record dove il gatto è contenuto nel campo an1 e non quelli dove il gatto è contenuto in an2 o an3. La sintassi del campo combinato che mi esce è Espr1: tblimmagini.[an1] & [an2] & [an3]. Dove sbaglio? Grazie per l'aiuto
Laura

10 Risposte

  • Re: Ricerca su più campi non funziona

    Per me ci sono vari problemi al di là del quesito che avresti proposto.
    1. Le immagini DENTRO il database appesantiscono quest'ultimo rendendolo via via sempre più difficile da utilizzare. Conseguenza di questa problematica i programmatori evitano di inglobare immagini dentro il database. In alternativa si preferisce avere una cartella di immagini (a portata di mano, per esempio nella stessa directory del database) e poi un campo di tabella indica il path corrispondente. Poi opportuno codice VBA provvede a mostrare questa o quella immagine.
    2.

    taramla ha scritto:


    Ad esempio:
    record 1: an1=gatto, an2=topo, an3=mosca
    record 2: an1=leone, an2=gatto, an3=biscia
    record 3: an1=zebra, an2=tigre, an3=gatto
    Questa non l'ho capita. Immaginando si tratti anche di campi di tipo testo breve...perché hai 3 campi an1, an2, an3?
  • Re: Ricerca su più campi non funziona

    Se intendi dire che hai 3 Campi differenti per la definizione del Tipo di Animale associato... credo possa esserci un ERRORE di strutturazione che di conseguenza rende complicato fare quello che hai chiesto perchè i Database Relazionali lavorano in un modo differente da EXCEL...!

    Purtoppo mi fermo perchè ho il sospetto che se ti suggerissi di Normalizzare le Tabelle... conopportune relazioni 1-M, o Molti a Molti, probabilmente ti metterei in difficoltà...
  • Re: Ricerca su più campi non funziona

    OsvaldoLaviosa ha scritto:


    Per me ci sono vari problemi al di là del quesito che avresti proposto.
    1. Le immagini DENTRO il database appesantiscono quest'ultimo rendendolo via via sempre più difficile da utilizzare. Conseguenza di questa problematica i programmatori evitano di inglobare immagini dentro il database. In alternativa si preferisce avere una cartella di immagini (a portata di mano, per esempio nella stessa directory del database) e poi un campo di tabella indica il path corrispondente. Poi opportuno codice VBA provvede a mostrare questa o quella immagine.
    2.

    taramla ha scritto:


    Ad esempio:
    record 1: an1=gatto, an2=topo, an3=mosca
    record 2: an1=leone, an2=gatto, an3=biscia
    record 3: an1=zebra, an2=tigre, an3=gatto
    Questa non l'ho capita. Immaginando si tratti anche di campi di tipo testo breve...perché hai 3 campi an1, an2, an3?
    grazie della risposta, però le immagini non c'entrano nulla, non sono inglobate ma richiamate da una cartella di immagini nella stessa directory proprio come hai consigliato tu.
    Ho fatto tre campi perchè è l'unica soluzione che mi è venuta in mente per elencare gli animali nelle immagini che contengono più animali, l'alternativa era un testo libero dove poi ricercare con una stringa ma mi sembrava una logica poco database. Forse c'è un altro sistema più semplice ma io non lo conosco, comunque pensavo che fare una ricerca su più campi fosse possibile, ma se ora mi chiedi perchè l'ho fatto mi vengono dei dubbi
  • Re: Ricerca su più campi non funziona

    @Alex ha scritto:


    Se intendi dire che hai 3 Campi differenti per la definizione del Tipo di Animale associato... credo possa esserci un ERRORE di strutturazione che di conseguenza rende complicato fare quello che hai chiesto perchè i Database Relazionali lavorano in un modo differente da EXCEL...!

    Purtoppo mi fermo perchè ho il sospetto che se ti suggerissi di Normalizzare le Tabelle... conopportune relazioni 1-M, o Molti a Molti, probabilmente ti metterei in difficoltà...
    forse è questo, pensavo che creando delle cbo collegate a una tabella si creasse automaticamente una relazione invece mi sa di no. dovrei mettere in relazione i campi m1 m2 m3 della maschera immagine con la tblanimali che li popola?
  • Re: Ricerca su più campi non funziona

    taramla ha scritto:


    @Alex ha scritto:


    Se intendi dire che hai 3 Campi differenti per la definizione del Tipo di Animale associato... credo possa esserci un ERRORE di strutturazione che di conseguenza rende complicato fare quello che hai chiesto perchè i Database Relazionali lavorano in un modo differente da EXCEL...!

    @Alex ha scritto:


    Purtoppo mi fermo perchè ho il sospetto che se ti suggerissi di Normalizzare le Tabelle... conopportune relazioni 1-M, o Molti a Molti, probabilmente ti metterei in difficoltà...
    Purtoppo mi fermo perchè ho il sospetto che se ti suggerissi di Normalizzare le Tabelle... conopportune relazioni 1-M, o Molti a Molti, probabilmente ti metterei in difficoltà...
    forse è questo, pensavo che creando delle cbo collegate a una tabella si creasse automaticamente una relazione invece mi sa di no. dovrei mettere in relazione i campi m1 m2 m3 della maschera immagine con la tblanimali che li popola?
    e poi non ho capito una cosa: se non c'è la relazione perché la ricerca sul campo m1 funziona perfettamente?
  • Re: Ricerca su più campi non funziona

    Perché è un campo solo...
    Devi avere 3 tabelle in realtà perché la struttura più adatta alla tua situazione è quella che viene chiamata 3° Forma Normale.
    Tuttavia entrandoci si complicano le cose e di pari passo devi acquisire basi più solide.
    Prova a valutare l'acquisto di un libro per approfondire la normalizzazione dei database.
  • Re: Ricerca su più campi non funziona

    Devi avere 3 tabelle pensate così:

    Immagini
    IDImmagine (PK)
    DescrizioneImmagine
    LinkImmagine

    Animali
    IDAnimale (PK)
    Animale

    DettagliImmagini
    IDDI (PK)
    PosizioneAnimale (qui ci puoi scrivere per esempio "a sinistra", "in alto", "accovacciato"…)
    IDAnimale (FK)
    IDImmagine (FK)

    Relazioni:
    Immagini.IDImmagine uno-a-molti DettagliImmagini.IDImmagine
    Animali.IDAnimale uno-a-molti DettagliImmagini.IDAnimale
  • Re: Ricerca su più campi non funziona

    @Alex ha scritto:


    Perché è un campo solo...
    Devi avere 3 tabelle in realtà perché la struttura più adatta alla tua situazione è quella che viene chiamata 3° Forma Normale.
    Tuttavia entrandoci si complicano le cose e di pari passo devi acquisire basi più solide.
    Prova a valutare l'acquisto di un libro per approfondire la normalizzazione dei database.
    mille grazie a te e anche a osvaldo per la pazienza, proverò a fare le tre tabelle e a relazionarle anche se pensavo che un filtro su più campi fosse una cosa semplice. infatti, pensando allo scopo del mio db, io non avrei necessità di avere e relazionare più tabelle, mi spiego meglio: la tbl animali in realtà nemmeno mi serviva, l'ho fatta solo per comodità per fare la cbo. Ho provato a eliminarla e ad avere una sola tabella principale con i tre campi an1 an2 an3 su cui operare un semplice filtro ed è uguale. Infatti, se nella mia query nel campo combinato [an1] & [an2] & [an3] inserisco il criterio:
    Like "*" & [scegli un animale] & "*"
    ora quando scrivo gatto mi filtra correttamente tutti i record dove c'è il gatto in uno qualsiasi dei tre campi, e questo è esattamente ciò che voglio
    la differenza ce l'ho quando nello stesso campo invece di mettere il criterio scritto sopra inserisco invece il criterio:
    [Maschere]![M_ricerca_animali]![cboscelta_animale] (...la sintassi dovrebbe essere ok perchè ho usato il pulsante genera)
    a questo punto se dalla mia cbo scelgo gatto il meccanismo funziona ma mi restituisce solo i record dove il gatto è presente nel campo an1 e non negli altri e questo continuo a non capirlo perchè se l'altro criterio funziona significa che il campo combinato è riconosciuto correttamente
    (ovviamente potrei usare il primo criterio che funziona, ma mi piaceva la cbo perchè mi sembra comoda e evita errori di scrittura)
    sono consapevole che un db con tutti i crismi dovrebbe essere impostato in altro modo però a questo punto sono curiosa di capire perché il primo criterio funziona e il secondo invece no
  • Re: Ricerca su più campi non funziona

    Premesso che la struttura tabelle deve essere quella che ti ho indicato, continuo a risponderti ignorando la logica del tuo database e prendendo quei nomi campo così (senza significato proprio) come li proponi tu.
    1. Crea una query dove includi i 3 campi (an1, an2, an3).
    2. In corrispondenza di Criterio di an1 scrivi:
    [Maschere]![M_ricerca_animali]![cboscelta_animale]
    3. In corrispondenza di Criterio di an2 scrivi la stessa cosa, ma nel rigo sottostante il criterio precedente.
    4. In corrispondenza di Criterio di an3 scrivi la stessa cosa nel rigo sottostante il punto 3.
    5. Salva la query
    In questo modo hai creato un OR su tre campi come desideravi tu.
  • Re: Ricerca su più campi non funziona

    Fatto. Funziona tutto perfettamente, sei un grandissimo
    Immaginavo che poteva esserci un metodo semplice ma da sola non ci sarei proprio arrivata, così con un db elementare con una tabella, una maschera, e una query ho tutto quello che mi serve (ovviamente è per un hobby, non per lavoro)
    grazie ancora a tutti e scusate il disagio di avere a che fare con una babbiona, io mi arrabatto a informarmi un po qua e un po là ma mi rendo conto che senza seguire un corso serio dall'inizio poi ti mancano delle basi, per fortuna ci sono questi forum e persone disponibili come voi
Devi accedere o registrarti per scrivere nel forum
10 risposte