Newsgroup: it.comp.appl.access
Titolo: gestire da vb i record di una query di selezione

ho creato una query e vorrei ciclare i suoi (e solo i suoi) record
ho provato cosi ma nulla di fatto. "listaalloggi" è la query
mi potete aiutare? grazie.
    Dim db As Database
    Dim rs As Recordset
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from listaalloggi")
    If rs.RecordCount > 0 Then
        'fai qualcosa
    End If
    rs.Close
    Set db = Nothing

>
ho provato anche cosi ma nulla di fatto
    Dim db As Database
    Dim rs As Recordset
    Dim qr As QueryDef
    Set db = CurrentDb
    Set qr = db.QueryDefs("listaalloggi")
    Set rs = qr.OpenRecordset()
    If rs.RecordCount > 0 Then
        'fai qualcosa
    End If
    rs.Close
    Set db = Nothing
come posso gestire i soli record che vedo quando apro la query listaalloggi?
grazie 

 ha scritto nel messaggio
news:436e95d8$0$1488$4faf...@reader2.news.tin.it...

Ciao Nicolas,
    Dim db As dao.Database
     Dim rs As dao.Recordset
     Set db = CurrentDb
     Set rs = db.OpenRecordset("nomeDellaQyery",dbopenDynaset)
while not rst.eof
        debug.print rst("nomeDiUnCampoDellaQuery")
        rst.movenext
wend
set rst=nothing
Se dici che vuoi ciclare all'interno di una query salvata, credo, metti dove
ho scritto nomeDellaQyery il nome della query. Nella Finestra immediata ti
stampa il contenuto del campo nomeDiUnCampoDellaQuery.
Ciao, Sandro


ho provato ma su questo codice
    Set rs = db.OpenRecordset("listaalloggi", dbOpenDynaset)
mi dice parametri insufficienti. previsto 1
eppure se apro tale query facendo doppio click su di essa i record li vedo 
senza problemi.
cosa potrebbe non andare secondo te? 

 ha scritto nel messaggio 
news:436f112e$0$29601$4faf...@reader3.news.tin.it...

Il problema è che devi passare il parametro alla query.
Probabilmente si tratta di un criterio del tipo Forms!MiaForms!MioControllo.
Per fare ciò passa il valore di una funzione. Per esempio:
Public function DimmiMiaStringa()as string
DimmiMiaStringa = Forms!MiaForms!MioControllo
end function
Nella query al posto del criterio scrivi like DimmiMiaStringa(), salva ed 
esegui il codice.
L'esempio restituisce un valore string ma se il valore è numerico devi 
sostituire as string con as long.
Vedi se funziona.
Ciao, Carlo 

 Ciao, Carlo
ho provato il codice che c'è sul sito comune ma non devo definire i 
parametri in quando la query và già bene cosi com'è, intendo dire che 
aprendola da access vedo già i record che mi interessano devo solo riuscire 
a ciclarsi in vba
ho provato cosi (***** sotto riporto la query come è stata definitia in SQL 
*******) grazie a tutti.
    Dim db As Database
    Dim qr As QueryDef
    Dim rs As Recordset
    Set db = CurrentDb
    Set qr = db.QueryDefs("listaalloggi")
    Set rs = qr.OpenRecordset                    'qui mi dice parametri 
insufficienti previsto uno.
    If rs.RecordCount > 0 Then
        'bla bla bla
    End If
    rs.Close
    qr.Close
    Set db = Nothing
************* query ************
SELECT CantieriLottiFabbricatiAlloggi.ImportoAlloggio, Cantieri.IdCantiere, 
CantieriLottiFabbricatiAlloggi.IdSocio, 
CantieriLottiFabbricatiAlloggi.FrazioneMillesimale
FROM ((CantieriLottiFabbricatiAlloggi LEFT JOIN CantieriLottiFabbricati ON 
CantieriLottiFabbricatiAlloggi.IdCantieriLottiFabbricati = 
CantieriLottiFabbricati.IdCantieriLottiFabbricati) LEFT JOIN CantieriLotti 
ON CantieriLottiFabbricati.IdCantieriLotti = CantieriLotti.IdCantieriLotti) 
LEFT JOIN Cantieri ON CantieriLotti.IdCantiere = Cantieri.IdCantiere
WHERE (((Cantieri.IdCantiere)=[forms]![cantieri]![idcantiere]));

 ha scritto nel messaggio 
news:436f51d6$0$1487$4faf...@reader2.news.tin.it...

Non hai letto bene la mia risposta. Infatti il problema è proprio quello che 
ti ho segnalato.
La query richiede tra i criteri [forms]![cantieri]![idcantiere] che, se apri 
il recordset da VBA, non può trovare, mentre la esegue e la apri da Access 
query.
La funzione che ti ho inviato va corretta così:
Public function DimmiIdCantiere()as long
DimmiIdCantiere = [forms]![cantieri]![idcantiere]
end function
Metti il nome della funzione, nella query (non nel codice) al posto del 
criterio [forms]![cantieri]![idcantiere], che diventa: Like 
DimmiIdCantiere()
Salva la query ed ora la potrai usare nel codice. Una condizione: la 
maschera "Cantieri" deve essere aperta.
In alternativa l'istruzione sql da usare direttamente da VBA diventa:
"SELECT CantieriLottiFabbricatiAlloggi.ImportoAlloggio, Cantieri.IdCantiere,
CantieriLottiFabbricatiAlloggi.IdSocio,
CantieriLottiFabbricatiAlloggi.FrazioneMillesimale
FROM ((CantieriLottiFabbricatiAlloggi LEFT JOIN CantieriLottiFabbricati ON
CantieriLottiFabbricatiAlloggi.IdCantieriLottiFabbricati =
CantieriLottiFabbricati.IdCantieriLottiFabbricati) LEFT JOIN CantieriLotti
ON CantieriLottiFabbricati.IdCantieriLotti = CantieriLotti.IdCantieriLotti)
 LEFT JOIN Cantieri ON CantieriLotti.IdCantiere = Cantieri.IdCantiere
WHERE (((Cantieri.IdCantiere)=" & DimmiIdCantiere() & 
"[forms]![cantieri]![idcantiere]));"
Ciao, Carlo 


Ora provo, Grazie mille. 

 ha scritto nel messaggio 
news:436f6ed2$0$6021$4faf...@reader4.news.tin.it...

Per un errore di battitura se usi l'istruzione sql da VBA, quello che ti ho 
inviato va corretto cosě:
"SELECT CantieriLottiFabbricatiAlloggi.ImportoAlloggio, Cantieri.IdCantiere,
CantieriLottiFabbricatiAlloggi.IdSocio,
CantieriLottiFabbricatiAlloggi.FrazioneMillesimale
FROM ((CantieriLottiFabbricatiAlloggi LEFT JOIN CantieriLottiFabbricati ON
CantieriLottiFabbricatiAlloggi.IdCantieriLottiFabbricati =
CantieriLottiFabbricati.IdCantieriLottiFabbricati) LEFT JOIN CantieriLotti
ON CantieriLottiFabbricati.IdCantieriLotti = CantieriLotti.IdCantieriLotti)
 LEFT JOIN Cantieri ON CantieriLotti.IdCantiere = Cantieri.IdCantiere
WHERE (((Cantieri.IdCantiere)=" & DimmiIdCantiere() & "));"
Ciao, Carlo 

 Ciao, Carlo
scusa il ritardo ho avuto degli impegni, ho provato ora il tuo codice e 
funziona perfettamente
grazie infinite.