Newsgroup: it.comp.appl.access
Titolo: Ciclare un Recordest

Ciao a tutti,
utilizzo il seguente codice:
.ActiveDocument.Bookmarks("ElencoProdotti").Select
 SQL = "SELECT * FROM [QDettaglio_Offerta] WHERE IDOfferta=" & Me.IDOfferta 
& _
          " ORDER BY Codice, Descrizione;"
    Set Rst = CurrentDb.OpenRecordset(SQL)
    If Not Rst.BOF Then 'se il recordset non è vuoto
        Tbl = Chr$(9) 'Chr$(9) è una tabulazione
        'ciclo sul recordset ed esportazione di tutte le righe
        With Rst
            Totale = 0 '
            .MoveFirst 'posizionati sul primo record
            While Not .EOF 'ripeti fino alla fine del recordset:
                'costruisci la riga da scrivere nel documento:
                'TotRiga = Nz(!Pz) * Nz(!Prezzo)
                Record = "Descrizione:" & " " & !Descrizione & (Chr(13)) & 
"Denominazione commerciale:" & " " & _
                         !Denominazione_Commerciale & (Chr(13)) & "Codice 
prodotto:" & " " & _
                         !Codice & (Chr(13)) & "Ditta Produttrice:" & " " & 
_
                         !Ditta_Produttrice & (Chr(13)) & "Confezione da:" & 
" " & _
                         !Pezzi_Confezione & " " & !Descrizione_Confezione & 
(Chr(13))
                Wrd.Selection.TypeText Record & vbCrLf 'scrivi la riga
                'Totale = Totale + TotRiga  'somma i totali di ciascun 
record
                .MoveNext 'passa al prossimo record
                pausa
            Wend 'Not .EOF
        End With 'Rst
        'chiudi e azzera il recordset
        Rst.Close: Set Rst = Nothing
    Else 'Not Rst.BOF
        Wrd.Selection.TypeText "NESSUN PRODOTTO ." & vbCrLf
    End If 'Not Rst.BOF
tratto dall'esempio Bookmark del sito comune, per popolare un documento word 
con i dati filtrati da una query, e fino adesso tutto funziona bene,
la query mi seleziona tutti i records legati ad una determinata offerta e li 
scrive nel documento word. Dovendo apportare delle modifiche alla query, nel 
senso che devo inserire dei lotti dovrei cambiare il codice di sopra per 
ciclare i lotti, nel senso che l'offerta x può contenere n lotti e ogni 
lotto può contenre n records. La domanda è come posso cambiare il codice di 
sopra affinchè mi cicli prima i lotti e mi scrive tutte le righe del lotto, 
e quindi passa al secondo lotto e cosi via..?
Ciao Tommy 

 ha scritto nel messaggio 
news:wVFcf.31444$65.9...@twister1.libero.it...

Ciao Tommy,
devi aprire un'altro recordset selezionando i lotti, che conterrà la 
procedura che hai già scritta.
qualcosa  tipo:
 SQL = "SELECT * FROM [LOTTI] WHERE IDLotto=" & Me.Lotto &
          " ORDER BY qualcheCampoValido;"
    Set RsLotti = CurrentDb.OpenRecordset(SQL)
    If Not RsLotti.BOF Then 'se il recordset non è vuoto
        'ciclo sul recordset ed esportazione di tutte le righe
        With RsLotti
            .MoveFirst 'posizionati sul primo record
            While Not .EOF 'ripeti fino alla fine del recordset:
                [... qui inserisci la procedura che hai già ...]
            Wend
        End With
    End If
...
certamente devi adattare la cosa alla realtà dei tuoi campi, ma il 
ragionamento è lo stesso della procedura precedente. Dovrai anche 
assicurarti di avere i dettagli 'legati' al LOTTO in esame.
-- 
... spero di esserti stato d'aiuto,
Ivan

 ha scritto nel messaggio 
news:4373ccfb$0$27595$4faf...@reader1.news.tin.it...

no così non funziona, perchè il mio recordeset è filtrato tramite 
L'IDOfferta, e mi esce fuori questo risultato:
IdOfferta    NumLotto    Descrizione    ecc..
    1                1                .....
    1                1                .....
    1                2                .....
    1                2                .....
e cosi via
quindi dovrei aprire un ciclo sul NumLotto e mi esporto tutte le righe del 
lotto n. 1, quindi passo al lotto n. 2 e mi esporto le righe del lotto n. 2 
e cosi via fino alla fine, invece la soluzione che mi hai dato tu funziona 
nel caso in cui dovrei applicare il filtro al singolo lotto, qualche altro 
aiuto
Tommy