Newsgroup: it.comp.appl.access
Titolo: Di nuovo Access to Word

Saluti al NG
sono si nuovo a chiede un aiuto: perchè (vedi codice sotto) mi stampa sempre 
il primo record
pur facendo il ciclo sui record ( cioè mi rimane memorizzato il primo record 
della tabella e mi stampa
tante lettere qyanti sono i record).
'*******************************************************************
'*                     Ciclo sui recor presenti                    *
'*******************************************************************
         SQL = "SELECT qryScad.* FROM qryScad  ORDER BY 
qryScad.Data_InvCom;"
         Set Rst = CurrentDb.OpenRecordset(SQL)
        If Not Rst.BOF Then 'se il recordset non è vuoto
    With Rst
            '.MoveFirst 'posizionati sul primo record
        While Not .EOF 'ripeti fino alla fine del recordset:
'*******************************************************************
    'Apri un nuovo documento basato sul modello:
    Set Doc = Wrd.Documents.Add(Modello)
    'attivalo e portalo in primo piano:
    Doc.Activate
pausa
    'seleziona il bookmark del primo campo Nome cliente:
    Doc.Bookmarks("CognomeeNome").Select
pausa
    'e sovrascrivilo con il contenuto dei campi
    'Cognome e Nome:
    Wrd.Selection.TypeText Me.Cognome & " " & Me.Nome
pausa
    'Indirizzo
    Doc.Bookmarks("Indirizzo").Select
pausa
    Wrd.Selection.TypeText Me.indirizzo
pausa
    'CAP
    Doc.Bookmarks("Cap").Select
pausa
    Wrd.Selection.TypeText Me.CAP
pausa
    'Città
    Doc.Bookmarks("City").Select
pausa
    Wrd.Selection.TypeText Me.Città
pausa
    'Provincia
    Doc.Bookmarks("Prov").Select
pausa
    Wrd.Selection.TypeText Me.StatoOProvincia
pausa
    ' Numero Pratica
    Doc.Bookmarks("numPratica").Select
pausa
    Wrd.Selection.TypeText Me.Num_Pratica
pausa
    'Data della visita
    Doc.Bookmarks("DataRevis").Select
pausa
    Wrd.Selection.Font.Bold = True
pausa
    Wrd.Selection.TypeText Me.Data_Revisione
pausa
    Dim Note As String
    On Error Resume Next 'Se l'utente preme annulla genera un errore
    Note = Wrd.Application.WordBasic.InputBox("Digita qui eventuali note:")
    If Len(Note) > 0 Then
        Doc.Bookmarks("Note").Select
        Wrd.Selection.TypeText Note '& vbCrLf
    End If
    On Error GoTo 0
'ripristina il valore originario dell'opzione "Sostituisci la selezione"
    Wrd.Options.ReplaceSelection = ReplSel
'avvisa l'utente che l'esportazione è terminata
    'Wrd.Application.WordBasic.MsgBox "Esportazione terminata", 
"Esportazione dati da Access"
'********************************************************************************************
'*                                       STAMPA AVVISI 
*
'********************************************************************************************
    On Error Resume Next 'se la stampante non è disponibile si genera un 
errore
        Doc.PrintOut
    On Error GoTo 0
    'SALVA il documento come ComPrat_<NumeroPratica>_<progressivo>.doc:
    NomeFile = Left(Modello, Len(Modello) - 4) & "_" & 
Format(Me.Num_Pratica, "000") & "_"
    'cerca il primo progressivo disponibile per il Numero Pratica 
selezionato
            I = 1
    While Len(Dir(NomeFile & Format(I, "000") & ".doc")) > 0
            I = I + 1
    Wend
    Doc.SaveAs NomeFile & Format(I, "000") & ".doc"
'***********************************************************************
'                           fine ciclo
            .MoveNext 'passa al prossimo record
        Wend 'Not .EOF
    End With 'Rst
    End If
    Rst.Close: Set Rst = Nothing
'************************************************************************
    ' Chiude il documento ed esce da Word
    Doc.Close
    Wrd.Quit
    'azzera le variabili oggetto
    Set Doc = Nothing
    Set Wrd = Nothing
End Sub  'cmdStWord_Click


Ciao,
da quanto riesco a capire il problema non sta nel ciclo in se (che funziona, 
infatti ottiene tanti documenti word quanti sono i record), ma nel fatto che 
il testo da inviare a word tu lo prendi dai controlli sulla maschera, quindi 
a ogni passaggio del ciclo i valori sono sempre quelli.
Dovresti invece usare i dati presente nel recordset, tipo:
    'Indirizzo
    Doc.Bookmarks("Indirizzo").Select
 pausa
    Wrd.Selection.TypeText .indirizzo
 pausa
    'CAP
    Doc.Bookmarks("Cap").Select
 pausa
    Wrd.Selection.TypeText .CAP
 pausa
do per scontato che nel recordset che crei siano presenti i dati che ti 
servono.
Un'altro modo č quello di fare un ciclo sul recordsetclone della maschera 
cosě:
         Set Rst = me.recordsetclone
Ciao, facci sapere,
Mat