Newsgroup: it.comp.appl.access
Titolo: recordset corrente

Chiedo nuovamente aiuto al ng per avere chiara l'idea su come lavorare con i
recordset da codice....
Ho realizzato una maschera per l'interrogazione dei movimenti di magazzino
( per cod. art -- per descrizione ---per fornitore ecc....).
Per crearmi il recordset, di seguito elencato, mi sono creato una query che
prende i dati da 4 tabelle, apro il recordset e lo filtro in base al tipo di
ricerca...
Private Sub OK_Click()
If Me.idcausalemagazzino = 0 And Me.Sottocontocf = 0 And Me.CodartVal = 0
And Me.Descrizione > 0 Then
Dim rstSuppliers As ADODB.Recordset
  Set rstSuppliers = New ADODB.Recordset
    rstSuppliers.CursorLocation = adUseClient
    rstSuppliers.Open "qryIntMovimentiMagazzino", CurrentProject.Connection
  rstSuppliers.Filter = "descrizione like " & Chr(34) & Me.Descrizione &
Chr(34) & " "
 Set Forms!frmintmovimentimagazzino!sfrmIntMovimentiMagazzino.Form.Recordset
= rstSuppliers
End If
End Sub
Adesso avevo bisogno di un campo nella maschera principale che mi visualizzi
l'importo del record corrente dei record filtrati in precedenza con
rstsuppliers.filter....
Se provo a scrivere
Me.Importo=rstsuppliers!importo
Pultroppo non trova il record e mi segnala l'errore  (č stato immesso un
valore non valido per il campo)
Perchč una volta filtrato il recordset non č piů leggibile?
Cosa sbaglio?
Grazie a tutti
Saluti Massimo


Una volta filtrato devi crearti un nuovo recordset:
es.
rstDaFiltrare.Filter = "..."
Set rstFiltrato = rstDaFiltrare
Ciao.
-- 
Sergio MAZZA

 ha scritto nel messaggio
news:cjuf8p$n37$1...@canarie.caspur.it...

IL recordset in questo modo lo copia ma non ci puoi lavorare ugualmente,
infatti se provo nella finestra immediata ad interrogare la nuova copia del
recordset mi visualizza l'errore 3021 (Il record corrente corrisponde
all'inizio o alla fine del file oppure č stato eliminato č necessario
disporre di un record corrente).
Ho anche provato a far diventare corrente il recordset con move ma niente da
fare...
Perchč?
Ciao
Grazie per la pazienza

 Grazie per la pazienza
Ma ti vengono restituiti dei record con quel filtro?
Ciao.
-- 
Sergio MAZZA


Il filtro funziona benissimo e mi restituisce le righe che desidero con la
descrizione che voglio....
Scusami per la risposta in ritardo....
Ti sono grato se mi aiuti a risolvere.
Saluti
Massimo

 Massimo
Rileggendo il tuo primo messaggio mi sono accorto che il problema non era il filtro (almeno č la mia prima impressione) ma "...un
campo nella maschera principale che mi visualizzi
l'importo del record corrente dei record filtrati in precedenza..." che francamente non ho ben capito a cosa ti riferisci; perň,
vedo che hai assegnato il recordset filtrato alla form quindi se ti serve una casella di testo che esegue una somma puoi provare con
la funzione Sum(nomeControllo) (vedi help) inserendola nell'"origine controllo".
Sempre se ho capito il problema...
Ciao.
-- 
Sergio MAZZA


Il campo che si trova nella form mi serve a sommare il campo importo del
recordset filtrato con rstsuppliers.filter.....
Se eseguo l'operazione prima che sia filtrato il recordset tutto funziona
bene, appena filtro il recordset non riesco più a sommare il campo importo

 campo importo
Mhmm... C'è qualcosa che mi sfugge.
Se la query da filtrare è l'origine dati della form puoi utilizzare il metodo ApplyFilter (vedi help), così facendo la casella di
testo dovrebbe sommarti l'importo.
Per rimuovere il filtro utilizzi il metodo ShowAllRecords...
Ciao.
-- 
Sergio MAZZA


Pultroppo non ci siamo forse sono io a non essere chiaro nel descriverti il
tutto...
Ti spiego in sintesi tutti i passaggi che paccio....
1) Mi sono creato una query1, contenente diverse tabelle, che mi serve per
riempire la sottomaschera di una maschera principale...
2) Ho creato una maschera principale con vari campi non associati, e una
sottomaschera per la lista dei record
3) Apro un recordset con origine dati la query1, e allo stesso tempo associo
il recordset alla sottomaschera
4) Se i campi non associati della maschera contengono dei dati, tramite il
comando filter filtro il recordset precedentemente creato e associo il
recordset filtrato alla sottomaschera
5) Adesso vorrei prelevare per esempio il valore di un campo del recordset
filtrato e visualizzarlo in un campo non associato della maschera, e qui che
mi sono bloccato....
Infatti dopo avere filtrato il recordset in precedenza creato ed eseguo un
comando come questo:
Me.Timporto=rstsuppliers!importo   ( dovrebbe ritornarmi l'importo del primo
record del recordset filtrato, assegnato alla sottomaschera, ma al contrario
mi da valore nullo) se ho capito bene non trova più il recordset....
Se vuoi ti posso mandare un pezzo del codice funzionante e dell'errore che
viene a crearsi...
Grazie per la pazienza.
Saluti

 Saluti
Prova intanto con il suggerimento dato...
Ciao.
-- 
Sergio MAZZA 


Ti ho inviato il file del pezzo di gestionale per fare la prova...ok?  sono
502 kb.
Saluti
Massimo

 Massimo
Se me lo chiedevi prima, avrei apprezzato; comunque, secondo me:
- non utilizzi bene il Like (vedi help);
- non utilizzi bene il percorso per arrivare al recordset della sub form;
(es. Me!nomeSubForm.Form.Recordset = rstRecordsetFiltrato)
- non verifichi che dopo aver filtrato il recordset ci sia la presenza di 
record (eof);
(es.
if Not rstRecorsetFiltrato.Eof then
    Me!TImporto = rstRecorsetFiltrato!Importo
else
    Me!TImporto = 0
end if)
e per finire non sei chiaro nell'esporre il problema...
Ciao.
-- 
Sergio MAZZA 

 Sergio MAZZA
Penso anchio di non essere chiaro e francamente non so come fare....
if Not rstRecorsetFiltrato.Eof then
    Me!TImporto = rstRecorsetFiltrato!Importo
 else
    Me!TImporto = 0
 end if
Se non filtro il recordset, mi ritrovo con un recordset e un record corrente
e fin qui tutto è alla perfezione.
Scusami ma non riesco a capire perchè dopo avere filtrato il recordset non
ho più un record corrente, infatti EOF mi restituisce zero.....
Io cerco il modo di avere un recordset filtrato che abbi un record
corrente....

 ha scritto nel messaggio 
news:aYTad.37713$H11.1...@twister1.libero.it...

(prova del 9) Se ti crei una query e ci inserisci il filtro che non ti 
restituisce nulla, che succede?
Ciao.
-- 
Sergio MAZZA