Newsgroup: it.comp.appl.access
Titolo: motore di ricerca interno -help-2

Salve a tutti,
ho costruito un database per raccogliere il patrimonio bibliografico di
diverse associazioni di volontariato nel Lazio. Internamente a questo
database ho costruito un form di ricerca che manda in esecuzione una query
per parametri e restituisce il recordset filtrato mediante i parametri
inseriti.
Ho questo database con la tabella documenti che contiene circa 6000 record.
I vari campi contengono le informazioni catalografiche di ciascun documento
tipo [TitoloProprio] e [ComplementiTitolo] (sottotitolo),
[PrimaResponsabilita] e [SuccessiveResponsabilita] (informazioni
sull'autore), etc.
Questo database deve essere utilizzato da persone non esperte di Access e
per questo motivo ho deciso di dotarlo di una specie di motore di ricerca
interno costituito da un form con un certo numero di campi ristretti, tipo
[Titolo] per [TitoloProprio] e [ComplementiTitolo], [Autore] per gli altri
due elencati sopra e cosi' via.
Premendo sul bottone "Trova"di questa form si apre un'altra form che mostra
record per record l'insieme dei record filtrati da una query per parametri i
cui parametri sono quelli inseriti dall'utente nella form di ricerca.
Questo era il mio modello mentale.
Alla prova non funziona perche' questo sistema restituisce un numero
inferiore di record rispetto a quelli che soddisfano i criteri di ricerca.
Faccio un esempio:
Nel mio recordset sono presenti 5 record che contengono nel proprio titolo
la parola "villaggio". Se utilizzo la mia form d ricerca ottengo 1
record-risultato. Se utilizzo una query in cui inserisco nel campi titolo,
Like "*" & "villaggio" & "*", ottengo il numero esatto di 5 record.
Non riesco a trovare la differenza visto che la query del form di ricerca
fa: Like "*" & [Forms]![Ricerca]![TipoMaterialeGenerale] & "*".
Potete darmi qualche consiglio?
Allego al presente messaggio un estratto dal mio database che contiene le
query che sto utilizzando.
Grazie anticipatamente per l'aiuto
Mauro
--------------------------------------------------------------
Allegato A: query di ricerca
--------------------------------------------------------------
SELECT DISTINCTROW Documenti.IDInventario, Documenti.DataImmissione,
Documenti.GenereMateriale, Documenti.TipoMaterialeGenerale,
Documenti.TipoMateriale, Documenti.SupportoMateriale,
Documenti.TitoloProprio, Documenti.ComplementiTitolo,
Documenti.TitoloRivista, Documenti.PrimaResponsabilita,
Documenti.SuccessiveResponsabilita, Documenti.Edizione,
Documenti.Numerazione, Documenti.LuogoPubblicazione, Documenti.NomeEditore,
Documenti.CasaProduzione, Documenti.DataPubblicazione,
Documenti.LuogoStampa, Documenti.NomeStampatore, Documenti.DataStampa,
Documenti.Pagine, Documenti.Collezione, Documenti.PagineArticolo,
Documenti.Note, Documenti.ISBN, Biblioteche.NomeBiblioteca AS Espr1,
Biblioteche.Indirizzo AS Espr2, InventarioBiblioteche.Collocazione AS Espr3,
Documenti.IDAssociazione
FROM Documenti, Biblioteche, InventarioBiblioteche
WHERE (((Documenti.TipoMaterialeGenerale) Like "*" &
[Forms]![Ricerca]![TipoMaterialeGenerale] & "*") AND
((Documenti.TitoloProprio) Like "*" & [Forms]![Ricerca]![TitoloProprio] &
"*") AND ((Documenti.ComplementiTitolo) Like "*" &
[Forms]![Ricerca]![TitoloProprio] & "*" Or (Documenti.ComplementiTitolo) Is
Null) AND ((Documenti.TitoloRivista) Like "*" &
[Forms]![Ricerca]![TitoloProprio] & "*" Or (Documenti.TitoloRivista) Is
Null) AND ((Documenti.PrimaResponsabilita) Like "*" &
[Forms]![Ricerca]![PrimaResponsabilita] & "*") AND
((Documenti.SuccessiveResponsabilita) Like "*" &
[Forms]![Ricerca]![PrimaResponsabilita] & "*" Or
(Documenti.SuccessiveResponsabilita) Is Null) AND
((Documenti.LuogoPubblicazione) Like "*" &
[Forms]![Ricerca]![LuogoPubblicazione] & "*" Or
(Documenti.LuogoPubblicazione) Is Null) AND ((Documenti.NomeEditore) Like
"*" & [Forms]![Ricerca]![NomeEditore] & "*" Or (Documenti.NomeEditore) Is
Null) AND ((Documenti.DataPubblicazione) Like "*" &
[Forms]![Ricerca]![DataPubblicazione] & "*" Or (Documenti.DataPubblicazione)
Is Null) AND ((Documenti.LuogoStampa) Like "*" &
[Forms]![Ricerca]![LuogoPubblicazione] & "*" Or (Documenti.LuogoStampa) Is
Null) AND ((Documenti.NomeStampatore) Like "*" &
[Forms]![Ricerca]![NomeEditore] & "*" Or (Documenti.NomeStampatore) Is Null)
AND ((Documenti.DataStampa) Like "*" & [Forms]![Ricerca]![DataPubblicazione]
& "*" Or (Documenti.DataStampa) Is Null) AND ((Documenti.Note) Like "*" &
[Forms]![Ricerca]![Note] & "*"));
----------------------------------------------------------------------------
Allegato B: Query di ricerca per parola chiave
----------------------------------------------------------------------------
SELECT ParoleChiave.Parola AS Expr1, [qryRicercaMateriale].IDInventario AS
Expr2, [qryRicercaMateriale].DataImmissione AS Expr3,
[qryRicercaMateriale].GenereMateriale AS Expr4,
[qryRicercaMateriale].TipoMaterialeGenerale AS Expr5,
[qryRicercaMateriale].TipoMateriale AS Expr6,
[qryRicercaMateriale].SupportoMateriale AS Expr7,
[qryRicercaMateriale].TitoloProprio AS Expr8,
[qryRicercaMateriale].ComplementiTitolo AS Expr9,
[qryRicercaMateriale].TitoloRivista AS Expr10,
[qryRicercaMateriale].PrimaResponsabilita AS Expr11,
[qryRicercaMateriale].SuccessiveResponsabilita AS Expr12,
[qryRicercaMateriale].Edizione AS Expr13, [qryRicercaMateriale].Numerazione
AS Expr14, [qryRicercaMateriale].LuogoPubblicazione AS Expr15,
[qryRicercaMateriale].NomeEditore AS Expr16,
[qryRicercaMateriale].CasaProduzione AS Expr17,
[qryRicercaMateriale].DataPubblicazione AS Expr18,
[qryRicercaMateriale].LuogoStampa AS Expr19,
[qryRicercaMateriale].NomeStampatore AS Expr20,
[qryRicercaMateriale].DataStampa AS Expr21, [qryRicercaMateriale].Pagine AS
Expr22, [qryRicercaMateriale].Collezione AS Expr23,
[qryRicercaMateriale].PagineArticolo AS Expr24, [qryRicercaMateriale].ISBN
AS Expr25, [qryRicercaMateriale].Note AS Expr26, Biblioteche.NomeBiblioteca
AS Expr27, Biblioteche.Indirizzo AS Expr28,
InventarioBiblioteche.Collocazione AS Expr29,
[qryRicercaMateriale].IDAssociazione AS Expr30
FROM ParoleChiave, Biblioteche, qryRicercaMateriale, InventarioParole,
InventarioBiblioteche
WHERE ((([ParoleChiave].[Parola]) Like [Forms]![Ricerca]![Parola]));

 ha scritto nel messaggio
news:acdf89$fuj$1...@newsreader.mailgate.org...

A mio avviso i 4 record della ricerca che non ti vengono visualizzati hanno
in uno o più dei seguenti campi:
TipoMaterialeGenerale
TitoloProprio
PrimaResponsabilita
Note
il valore Null. Questo potrebbe essere il motivo del malfunzionamento: prova
a verificare e facci sapere.
Non capisco per quale motivo, nella query di ricerca, ti sei cautelato dalla
possibilità di valori Null per tutti i campi tranne che per questi 4 campi.
Spero che il motivo del malfunzionamento sia questo e quindi facilmente
risistemabile con un piccolo intervento sul codice SQL della query di
ricerca ( Or (Documenti.TipoMaterialeGenerale) Is Null ecc. ecc. )
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------


Ciao Roberto!
Il motivo per il quale non ho inserito la possibilita' del null e' perche'
in passato ho constatato che se aggiungevo troppe volte il Null, Access mi
inseriva nei risultati anche dei record spurii, che cioe' non soddisfacevano
i criteri di ricerca ma, per qualche raggione, avevano dei campi in Null.
I cinque campi che tu hai individuato sono campi obbligatori nell'immissione
e pertanto davono avere per forza un qualcosa dentro. Tutto questo ad
eccezione delle Note di cui non sono sicuro. Per conferma, comunque ho
controllato i 5 record che dovrebbero essere il risultato dell'operazione di
ricerca ed ho constatato che questi campi, in questi record sono sempre
pieni.
Ti allego l'estratto del database.
Ciao e grazie
Mauro
----------------------------------------------------------------
Estratto dalla tabella Documenti dei record con "villagio" nel titolo
----------------------------------------------------------------
(1)
2205/07/2000MonografiaSolo cartaceoIl mondo e' il mio villaggio[il
volontariato civile nella nuova legge sulla cooperazione tecnica con i paesi
in via di sviluppo]
Bersani giovanni BolognaEditore cefa
[1973?] _FIVOLIl mondo e' il mio villaggio
(2)
3205/07/2000MonografiaSolo cartaceoIl villaggio solidaleVolontariato e
informazioneValentini ruggero LuccaCentro nazionale per il volontariato
1990_FIVOLIl villaggio solidale
(3)
129021/08/2000MonografiaSolo cartaceoMito del villaggio globale, ilLa
comunicazione nord-sudArdesi luciano_RomaEdizioni associate1992
_VISMito del villaggio globale, il
(4)
258821/08/2000MonografiaSolo cartaceoVillaggio globale_
Almeno 1 aut_RomaInternazionale1996
_VISVillaggio globale
(5)
486013/02/2001MonografiaVideocassettaMaria del villaggio..
Toro matsuiDurata 95'ArciMaria del villaggio..
-------------------------------------------------------------------------

 ha scritto nel messaggio
news:acdov4$pdt$2...@newsreader.mailgate.org...
[CUT]

Peccato, speravo proprio per te che fosse quello!
Non ho idea di cosa possa essere.
Comunque prova a fare un altro tentativo: togli dalla query il predicato
DISTINCTROW: vedi se cambia qualcosa.



Roberto e tutti che leggete,
ho provato a togliere DISTINCTROW ma e' sempre lo stesso.
sono sicuro che le due query sono praticamente la stessa cosa ad eccezione
per i famosi campi Null che mi ingarbugliano la ricerca.
La mia domanda e' questa:
esiste una rutine di manutenzione che mi possa inserire un carattere in ogni
campo impostato su Null in automatico?
Per esempio un undescore "_" o qualcosa di simile?
In questo modo avrei tutti i campi "pieni" e potrei eliminare la dicitura Or
is Null che mi diferenzia le due query.
E' un ragionamento sensato?
Grazie
Mauro