Newsgroup: it.comp.lang.visual-basic
Titolo: Filtraggio dati

Scusate l'ignoranza e scusate se l'argomento è già stato trattato ma vorrei
qualche dritta per una questione che probabilmente per programmatori un po
esperti è una banalità...
Ho un form agganciato tramite un controllo data ad una tabella di un
database Access.
Ho bisogno di filtrare i dati contenuti in modo che quelli visualizzati nel
form rispondano ad un determinato criterio descritto in una stringa SQL
(Istruzione SELECT)
A questo punto vado in crisi e non riesco ad ottenere il set di dati
filtrati
Ringrazio in anticipo chi mi può aiutare
Paolo

...


modulo).
 Innanzitutto grazie della risposta
Volevo comunque precisare che al metodo recorsource ci ero arrivato non
peraltro in quanto programmando con il vba di access lo utilizzo spessissimo
ma quando in un evento imposto il recordsource di una form ad esempio
tramite la seguente riga di comando
form1.data1.RecorSource = StringaSQL
il programma mi restituisce il set completo dei dati e non riesco a capire
perchè; da qui è nato il mio problema altrimenti non avrei scomodato questo
NG.
Preciso che la stringa SQL è scritta sintatticamente in forma corretta in
quanto se la eseguo dall'utility di gestione database contenuta in Visual
Basic il filtraggio dei dati viene eseguito correttamente e se visualizzo
tramite un punto di interruzione del codice la stessa mi viene restituito il
seguente risultato
StringaSQL = " SELECT * FROM Tabella1 WHERE [Campo1] Like "g*""
Grazie di nuovo
Paolo

...



Non credo che il problema sia questo in quanto ho provato a togliere dalle
proprietà del controllo data RecorSource lasciando la stringa vuota ed
assegnarla all'intera tabella del database tramite codice e non c'è nulla da
fare.....
insomma ricapitolando
con la proprietà RecordSource del controllo Data1 vuota nella progettazione
del form
e tramite l'istruzione Form4.Data1.RecorSource = "NomeTabella"
non ottengo assolutamente nulla
il form rimane vuoto
evidentemente sbaglo qualcos'altro ma non so bene cosa
Grazie ancora
Paolo







...



e' esattamente quel che ho fatto
ho tolto la proprietà recorsource nella progettazione del form e l'ho
assegnata tramite codice
ma.. nisba
davvero non so più che pesci prendere
temo che dovrò interessare del caso lo zio bill in prima persona.. hahaha
grazie

No, no scusa l'insistenza. Io intendevo l'intera procedura di associazione.
L'avevo capito che avevi fatto:
Data1.RecordSource=MyRecordset
Io intendevo anche il prescrivere:
Data1.DatabaseName=App.Path & "\miodb.mdb"
E così via...
Forse hai già fatto anche questo, ma preferisco insistere perché una volta
anch'io associai il Db a design-time ed il recordset a run-time ed
effettivamente non dava alcun errore, ma una...griglia vuota.

ma.. nisba
StringaSQL = " SELECT * FROM Tabella1 WHERE [Campo1] Like 'g*'"
Form1.Data1.Recordsource = StringaSQL
Form1.Data1.Refresh
Quindi:
1) Metti la ricerca tra apici singoli
2) Usa l'istruzione Refresh
E ti DEVE funzionare, se no mandami la routine che non ti funziona, ok?
Ciao, Pipol!
Piero


Funziona....!!!!!
Grazie davvero ... era solo colpa di quello stronzo di refresh...
ma vacci tu a pensare che bisognava refreshare i dati....
approfitto per farti un'altra domanda:
Ho inserito nella caption del controllo data la scritta
record 1 di n
sullo stile di access
ottenuta tramite codice
ma quando apro il recordset viene viene comunque visualizzata la scritta :
record 1 di 1
e poi quando sposto il controllo sul secondo record ottengo l'esatto valore
del recodcount
sai darmi una dritta in proposito??
grazie
ciao
Paolo


Il controllo data non sa a priori quanti sono i record: per far si che il
valore recordcount sia diverso da 1 fin dall'inizio devi utilizzare movelast
e subito dopo movefirst senza fare il refresh.
Esempio:
Private Sub Form_Load()
Data1.Refresh
Data1.Recordset.MoveLast
Data1.Recordset.MoveFirst
End Sub
Private Sub Data1_Reposition()
Data1.Caption = "record " & Data1.Recordset.AbsolutePosition + 1 & " di " &
Data1.Recordset.RecordCount
End Sub
ciao
Stefano Zamboni  (W95 4.00.950a & IE4 & VB5SP3 ed ora anche Delphi2)
----------------------------------------------------------------------------
----------------
sz...@XXXtin.it
zam...@XXXfreemail.it
Togliere "XXX" per rispondere
Il sito comune di programmatori VB
http://members.xoom.com/it_lang_vb
----------------------------------------------------------------------------
----------------

sai darmi una dritta in proposito??
Eh... io uso sempre, subito dopo il refresh, la Function
Function NumRec(RecSet)
	RecSet.MoveLast
	NumRec = RecSet.RecordCount
	RecSet.Movefirst
end Function
Che non e' il massimo, ma da il numero giusto
La chiami con:
NumeroRecords = NumRec([Recordset])
Ciao, Pipol!
Piero