Newsgroup: it.comp.appl.access
Titolo: Come visualizzare in una maschera i dati contenuti in un recordset

Salve a tutti,
forse mi presento in questo ng con una domanda stupida, ma in qualche modo
si deve pur iniziare.
Allora, il mio obiettivo è quello di arrivare a creare una ricerca libera,
tipo quella dei motori di ricerca in internet, dove l'utente scrive le
parole che vuole cercare, decide se queste sono legate con and o or, clicca
sul bottone trova ed a questo punto desidererei che il motore di ricerca
facesse passare ogni campo di ogni record cercando l'occorrenza delle chiavi
di ricerca.
Sentendo il parere degli amici, mi è stato consigliato di creare una routine
ceh spezza la frase indicata dall'utente individuando le singole parole da
cercare e quindi si costruisce in automatico una query sql, in modo che
l'utente possa inserire quante parole vuole.
Con la query sql posso risalire ad un recordset che contiene i record che
rispondono ai criteri di ricerca.
Ma a questo punto come faccio arrivare questo insieme di record alla
maschera di visualizzazione?
Cioè è possibile usare il comando OpenForm specificando il recorset da
aprire?
C'è forse una via + semplice per risolvere il mio obietivo? C'è del codice
standard che io posso semplicemente incollare che mi risolve il problema?
Grazie mille per l'attenzione.
-------------------------------------
Umberto Turini
umbturin...@libero.it
     < NOTA: L'indirizzo è stato modificato!!

 Salve a tutti,
    > forse mi presento in questo ng con una domanda stupida, ma in qualche
modo
    > si deve pur iniziare.
    >
    > Allora, il mio obiettivo è quello di arrivare a creare una ricerca
libera,
    > tipo quella dei motori di ricerca in internet, dove l'utente scrive le
    > parole che vuole cercare, decide se queste sono legate con and o or,
clicca
    > sul bottone trova ed a questo punto desidererei che il motore di
ricerca
    > facesse passare ogni campo di ogni record cercando l'occorrenza delle
chiavi
    > di ricerca.
    >
    > Sentendo il parere degli amici, mi è stato consigliato di creare una
routine
    > ceh spezza la frase indicata dall'utente individuando le singole
parole da
    > cercare e quindi si costruisce in automatico una query sql, in modo
che
    > l'utente possa inserire quante parole vuole.
    >
    > Con la query sql posso risalire ad un recordset che contiene i record
che
    > rispondono ai criteri di ricerca.
Con una query di selezione crei un recordset virtuale che contiene i record
che rispondono ai criteri di una ricerca e non crei il modo di risalire ad
un recordset che..........
    > Ma a questo punto come faccio arrivare questo insieme di record alla
    > maschera di visualizzazione?
Basta pertanto indicare, al momento che crei la tua form (volgarmente detta
maschera), come origine dei dati il nome della tua query di ricerca.
    > Cioè è possibile usare il comando OpenForm specificando il recorset da
    > aprire?
    >
    > C'è forse una via + semplice per risolvere il mio obietivo? C'è del
codice
    > standard che io posso semplicemente incollare che mi risolve il
problema?
    >
    >
    > Grazie mille per l'attenzione.
    >
    > -------------------------------------
    > Umberto Turini
    > 
umbturin...@libero.it
     < NOTA: L'indirizzo è stato
modificato!!
    >
    >
Ciao, Roberto
PS Non ti nascondo che se fossi io a creare questo DB, il problema vero che
avrei sarebbe quello di creare la query e non certo la maschera per
visualizzarla.
Ari-ciao

 standard che io posso semplicemente incollare che mi risolve il problema?
Come ti ha detto Roberto, la parte piu' complessa e' la creazione della stringa
SQL che ti permette di estrarre i record che soddisfano la richiesta
dell'utente.
Una volta generata tale stringa, per la visualizzazione dei record non ci sono
problemi; puoi visualizzarli, +o-, come meglio credi modificando il
RecordSource di una form o di una ListBox.
Per il momento preoccupati di costruire la stringa SQL.
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Se posso esprimere un'idea a proposito della query che sembra cosě
complessa, forse posso suggerire come semplificarla un pň in base a quello
che fanno i motori di ricerca, perlomeno quelli che ho visto funzionare per
le ricerche di dati nelle riviste scientifiche.
Il problema viene suddiviso i tante query quanto sono le parole, e quindi si
parte da una query che ha sempre la stessa "faccia" e dove si cambia solo la
parola da cercare.
Si tiene in memoria solo l'ID dei records trovati.
In modo totalmente indipendente si cercano le altre parole.
Il risultato di ogni query viene messo in una matrice che viene
ridimensionata ogni volta se si vuole risparmiare memoria, oppure (se č
possibile ovviamente) semplicemente si mette come lunghezza massima della
seconda dimensione il numero max. di records esistenti. La prima dimensione
essendo il numero di parole da cercare.
Infine si "gioca" con gli AND, OR, NOR, XOR, ecc... dove in una matrice
monodimensionale (un'array se preferite o un vettore) si mette il risultato.
Avendo la lista degli ID finali, si crea un bel RecordSet dove ci "schiaffi"
il contenuto dei records, e dopo lo presenti nella maschera nel modo che
vuoi.
Forse la faccio facile? Niet!
La risoluzione di problemi difficili passa per la suddivisione in problemi
elementari...
Ciao
Thierry

 .............................


 ...........

 Set Recordset = rstMIO
Non e' possibile (almeno per A97) passare un recordset come origine dati ad una
form.
Per modificare/impostare l'origine dati di una form devi modificare la
proprieta' RecordSource della stessa form.
Cioe' devi passargli la stringa SQL che hai creato:
es.
strSQL = "SELECT cmp1, cmp2 FROM tab1 WHERE cmp1='pippo'"
Me.RecordSource = strSQL
Guarda nell'help la proprieta' RecordSource.


 elementari...
Non c'e' dubbio :-)


 matrici.
Non ti vorrei stressare ma cosa ne fai del campo Memo e di varie tabelle e
matrici con una query sola?
Grazie
Thierry


Forse mi sono spiegato male!
I casi che ho affrontato finora riguardano ricerche testuali in uno o piu campi
testo/memo di una tabella.
L'utente inserisce una o piu' parole da cercare.
La costruzione della stringa SQL e' fatta da una routine che tra le altre cose,
parsa l'input dell'utente ed inserisce gli AND/OR necessari.
Siccome la visualizzazione del risultato della ricerca e' una Treeview, uso una
tabella temporanea dove appoggio i record padre.


 tabella temporanea dove appoggio i record padre.
OK adesso è chiaro!
Ciao
Thierry