Ricerca su più campi maschera access

domenica 10 aprile 2016 - 23.17
Tag Elenco Tags  Windows 7  |  Access (.mdb)  |  Office 2010  |  VBScript

Sid451 Profilo | Newbie

Buonasera è il mio primo post in questo forum e spero di aver selezionato la sezione giusta per aprire il thread volevo porre una domanda alla quale io non riesco a trovare soluzione da qualche giorno.

Ho creato un db in access che visualizza i film in dvd in mio possesso.
Il db si basa su una tabella film con più colonne: titolo, regista, anno, e diverse colonne cast: Protagon1, Protagon2....fino a Protagon10

ho creato delle maschere per ricercare il film per titolo, regista, anno ecc e fino a qui nessun problema.

Ora vorrei creare una maschera dove immettere il nome dell'attore in una casella combinata in intestazione maschera (chiamata ricerca attore) e nel corpo maschera "controlli" le caselle di testo Protagon1, Protagon2 ecc e verifichi se è presente il testo inserito nella casella combinata in intestazione e restituisse i risultati qualora anche una sola delle caselle Protagon1, Protagon2 ecc corrisponda al testo inserito in casella combinata ricerca attore.

Ho creato una "query attori" in cui sono presenti tutti gli attori inseriti nel mio database, ho selezionato come origine riga: query attori, tipo origine riga: tabella/query e su eventi "dopo aggiornamento" ho impostato una routine evento "me.requery".

Mentre in origine record ho creato questa query:
SELECT Film.Titolo, Film.Genere, Film.Regista, Film.Contenitore, Film.Qualità, Film.Anno, Film.Protagon1, Film.Protagon2, Film.Protagon3, Film.Protagon4, Film.Protagon5, Film.Protagon6, Film.Protagon7, Film.Protagon8, Film.Protagon9, Film.Protagon10, Film.Trama, Film.Locandina
FROM Film
WHERE (((Film.Protagon1)=[Maschere]![x]![Ricerca Attore]));

(x è il nome provvisorio della mia maschera)

La mia formula funziona solo ed esclusivamente se il nome attore si trova nella casella Protagon1 ma se il nome dell'attore si trova nella casella Protagon2 la query non mi restituisce alcun valore.

Allora ho provato ad aggiornare la query in questo modo:
SELECT Film.Titolo, Film.Genere, Film.Regista, Film.Contenitore, Film.Qualità, Film.Anno, Film.Protagon1, Film.Protagon2, Film.Protagon3, Film.Protagon4, Film.Protagon5, Film.Protagon6, Film.Protagon7, Film.Protagon8, Film.Protagon9, Film.Protagon10, Film.Trama, Film.Locandina
FROM Film
WHERE (((Film.Protagon1)=[Maschere]![x]![Ricerca Attore]) AND ((Film.Protagon2)=[Maschere]![x]![Ricerca Attore]));

In questo caso non funziona più del tutto la ricerca anche se scrivo un attore presente nella casella Protagon1.

Allora ho deciso di riprovare sostituendo il campo AND con OR così:

SELECT Film.Titolo, Film.Genere, Film.Regista, Film.Contenitore, Film.Qualità, Film.Anno, Film.Protagon1, Film.Protagon2, Film.Protagon3, Film.Protagon4, Film.Protagon5, Film.Protagon6, Film.Protagon7, Film.Protagon8, Film.Protagon9, Film.Protagon10, Film.Trama, Film.Locandina
FROM Film
WHERE (((Film.Protagon1)=[Maschere]![x]![Ricerca Attore]) or ((Film.Protagon2)=[Maschere]![x]![Ricerca Attore]));

In questo caso la formula continua a funzionare solo per il campo Protagon1.

Secondo voi dove sbaglio?

Mi scuso per la lunghezza del mio post ma spero di essere stato il più chiaro possibile.

Ringrazio chiunque sorvoli il mio "niubbismo" nella programmazione SQL/Access ma sono alle prime armi come autodidatta, quindi posso aver commesso vari errori :)

Buona serata a tutti!



edit. 11/4 ho risolto con l'ultima select postata. mi sono accorto che i miei errori venivano generati dalla tabella attori che purtroppo avevo male importato :)
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5