Newsgroup: it.comp.appl.access
Titolo: Report >Word...lunghetto...

Cari ragazzi, ciao a tutti.
Sperando che qualcuno di voi si stia spanciollando al mare o in montagna e
che qualcun'altro invece sia ancora in trincea come me (sigh)...altrimenti
non mi risponde nessuno :-)...anche se oramai abbiamo quasi tutti il
PORTATILE :-))....mi piacerebbe avere un vostro parere in merito a quanto
sotto.
Veniamo al problema, che poi tale non è , ma se riuscissi a risolverlo sarei
felice.
Mi sono appena scervellato per riuscire ad esportare col MailMerge, da
Access in un file di word, i dati di un preventivo; giusto perche' la
formattazione in questo modo è decente e chi riceve il file non debba
scervellarsi ne' per capirci qualcosa(da report a RTF la formattazione fa
schifo) ne' per aprire il file stesso che prima mandavo(da Report) con
Sendobject in formato RTF. A voi sembrerà strano ma una marea di clienti mi
hanno scritto chiedendomi come si apriva questo tipo di file..lo conoscono
poco e non sanno che va' associato all'applicazione.Comunque..
Il problema, o meglio, l'ipotesi che mi frulla per la testa, è questa:
IL report si comporta in modo che, una volta fatto il linkCriteria su
"Azienda" da un CommandButton, mi da' (ovviamente) tutti i record (voci del
preventivo) che ho inserito per quell'azienda stessa; cioè si autoespande.Se
ci sono 2 voci me ne da 2, se ce ne sono 10 me ne da 10...cosa ovvia, ma è
per spiegare cosa vorrei fare..
Prima di impazzire volevo capire attraverso voi se in un documento Word puo'
accadere la stessa cosa.
Giusto per fare un esempio: io imposto un campo modulo con segnalibro
"Testata" ma, come si comporta Word se le testate sono 5 ? Non credo che se
io inserisco un solo segnalibro "Testata" lui ne crei degli altri e se io
creassi a cascata tanti segnalibri "Testata" lui mi inserirebbe sempre il
primo valore che trova...giusto?
Allora prima di passare un paio di giorni a fare prove assurde provo a
vedere se secondo voi c'è una soluzione.
Che cosa potrei fare o quale strada potrei prendere per riportare i valori
di ogni record del report nel documento Word? Daltronde la domanda che mi
frulla nella testa è questa:
se posso convertire il Report in un file Rtf..vorrà dire  che Word distingue
riga per riga...o è semplicemente un "copiaIncolla" grafico?
Spero di essermi spiegato bene.
Grazie a chi sapra' darmi un consiglio o anche solo dirmi che forse ho
"fumato" troppo :-)
Un saluto a tutti
Eddie

<cut>
La risposta interessa anche me!!!!!!!!! putroppo !!!!!!!!!
Inoltre aggiungo:
se ho una relazione tra due tabelle uno a molti
come puo' l'utente scegliere il dato da inserire in Word della tabella
molti?
La cosa si complica se le tabelle poi sono moltissime.
Per non parlare poi del codice che occorrerebbe per testare le infite
possibilita' di scelta dell'utente.
Qualche guru del ng magari ha gia' la risposta ......... almeno lo spero.
Pietro

 fargli fare il documento Word.
Si daccordo questo e' giusto.
Ma in questo caso i documenti di Word devono essere preimpostati con
bookmark predefiniti.
Io invece pensavo a questo:
1) L'utente predispone un documento Word con i bookmark che gli interessano
(magari predisponendo un elenco di campi utilizzabili) e lo salva come
modello
2) Da Access richiama il modello da una form che filtra i record di un
particolare record (ad esempio una pratica)
3) Il comando passa i dati a Word
Ora la domanda e' questa se i dati filtrati dalla maschera sono comunque
moltissimi cioe' la pratica in questione e' collegata a molte altre tabelle
in relazione uno a molti con numerosi dati.
Io non posso sapere quale scelta (quale dato ha scelto se un dato sulla
pratica oppure in una delle sue tabelle correlate) ha fatto l'utente nel
modello di Word e quindi dovrei scorrere tutte le tabelle per cercare il
dato da inserire.
Scorro le tabelle e a questo punto anziche' trovare un record solo ne trovo
5 che riguardano la pratica.
E qui entri in gioco tu con la tua domanda su come inserire i dati in word.
Ciao

 Eddie
Non ho capito se entrambi volete un mailmerge del tipo "fattura"...
Ciao.

 ha scritto nel messaggio
news:9cjbq6$70c$1...@canarie.caspur.it...

Ciao Sergio e grazie del tuo intervento.La risposta alla tua domanda
potrebbe essere si , ma anche No.Nel senso che ,pensandoci, anche con una
fattura ci si potrebbe trovare con lo stesso problema.Nel mio caso invece si
tratta di un preventivo, ma il concetto è uguale.Ti faccio un piccolo
esempio.
Alla fine del preventivo genero un Report che mi elenca quello che il
cliente mi ha chiesto come preventivo,cosi':
TESTATA     PREZZO   PAGINE     TOTALE
ovviamente vedro' tante testate quante me ne ha chieste un cliente.Quindi mi
trovo con un Report siffatto:
TESTATA     PREZZO   PAGINE     TOTALE
aaaaaaaa        0000000         3            9999999
bbbbbbb        1111111         2            7777777
e cosi' via.
Ora la mia domanda è questa. Volendo portare tutto in word e quindi creando
un modello con campi modulo
1){TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
sapendo che non so' mai quante testate il cliente mi chiedera' devo inserire
tanti campi modulo in previone (con i limiti del foglio)
o posso sperare che word si comporti come un Report??
Cioe' anche Word capira' che le Testate sono piu' di una e mi creerà tante
righe quanti sono i record o devo fare tanti
campi modulo(ma poi come fa a distinguerli?) cosi':
2){TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
   {TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
   {TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
   {TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
   {TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
   {TESTATA}     {PREZZO}   {PAGINE}     {TOTALE}
Ciao

 ha scritto nel messaggio
news:6AbH6.331$0t6....@news.infostrada.it...

Scusa, facciamo che per "testata" indichiamo i nomi dei campi e per "righe"
i record.
Se il tuo problema si traduce in un solo elenco di righe con un numero di
campi variabile puoi crearti la base dati (per esempio una query) e poi
esportarla o in rtf; come visualizzatore di file rtf (in genere) è impostato
word.
Es.
'--------------------
DoCmd.OutputTo acOutputTable, "nomeTabellaoQuery", acFormatRTF,
"c:\nomeFile.rtf", True
'--------------------
Se invece vuoi un lavoro "di fino" si inizia a parlare di VBA...
Ciao.

<cut>
ciao Eddie
Non mi e' possibile visualizzare tutti i dati che occorrono in una form o
subform.
La mia idea era quella di far specificare un dato all'utente e dal quel dato
andare a cercare i dati correlati senza doverli per forza visualizzarli
istantaneamente.(tramite codice)
es: tabelle
pratica (codice pratica)
richiedenti
documenti
visiteperiodiche
tutte queste tabelle sono correlate uno a molti
L'utente inserendo solo il numero di pratica vuole riempire un documento di
Word preimpostato.
Con dati che possono essere prelevati dalle tabelle correlate.
Comunque grazie

>cut<
Guarda un po sul sito comune quello che vuoi lo trovi li.
Access chiaramente scrive una riga per volta in Word e con un ciclo with
puoi ripetere l'operazione tutte le volte che vuoi.
Non hai bisogno di inserire in Word diverse istanze al record.
ciao
Pietro


Questo lavoretto in RTF lo faccio di già, ma come dicevo nel  mio post la
formattazione fa pena.
Vorrei proprio fare un lavoro "di fino" in VBA....anche quello faccio di già
ma non so come andare avanti oltre la prima riga..(record x Access)
Ciao

 Ciao
Allora bando alle ciancie e invia il codice di esempio o fai un esempio di
cosa vuoi ottenere...
Ciao.

 ha scritto nel messaggio
news:9cjpp0$dom$1...@canarie.caspur.it...

 Caro Sergio..non seccarti :-)
Sto soltanto cercando di imparare e sto man mano cercando di fare cose
sempre piu' difficili..
Grazie a questo splendido ng sono riuscito a fare un db estremamente utile
per la mia attività....adesso sto cercando di dare solo un tocco di
professionalità al db stesso e ai documenti che mando in giro per il mio
lavoro.
Credo di aver chiesto una mano sempre con molta umiltà e sopratutto, sapendo
che è fatto anche da gente che regala il suo tempo e la sua esperienza
lavorativa...anche con molto rispetto.
Cosi' come cerco di aiutare anch'io con qualche spunto e col poco che so
quelli che sono all'inizio.
Quindi se non hai tempo o voglia..certamente non mi offendero' :-)
A parte questo piccolo preambolo ( sara' che quando è brutto tempo divento
permaloso?)
....questo è il pezzo di codice che mi aggiorna i campiModulo di Word,
...................
Set oApp = CreateObject("Word.Application")
Set oDoc = oApp.Documents.Open("c:\documenti\ProvaAzienda.doc")
oApp.Visible = True
oDoc.Bookmarks("Testata").Select
oApp.Selection.TypeText Text:=Me!Testata
oDoc.Bookmarks("Prezzo").Select
oApp.Selection.TypeText Text:=Me!Prezzo
oDoc.Bookmarks("Numero_Pagine").Select
oApp.Selection.TypeText Text:=Me!Numero_Pagine
oDoc.Bookmarks("TotaleLire").Select
oApp.Selection.TypeText Text:=Me!TotaleLire
oDoc.SaveAs strAz, , , , , , , , , , True
............................
e fin qui tutto bene!!!!
Se il preventivo fosse basato su una sola testata(Rivista) sarei a posto.
Ma se i record sono 4..
Repubblica           .....     ......     ........     ...........
Corriere della Sera  .....     ......     ........     ...........
Il mattino           .....     ......     ........     ...........
Sole 24 Ore          .....     ......     ........     ...........
come faccio a dire a Word di fare un'altra riga in successione con gli
stessi campi
della riga precedente ma (ovviamente) con i valori del 2° record...e del
3°...e del 4°
Mi spiego ancora meglio.
Nel Report il controllo "Testata" è 1, ma ti visualizza rigo per rigo TUTTE
le testate (e dati relativi) che hai selezionato (filtrato) per "quella"
azienda.
La stessa cosa vorrei farla in Word.
Con simpatia
Eddie

 permaloso?)
Me sa' dde sì...

Da quello che intuisco tu hai una maschera che visualizza dei record e li
vuoi "sparare" in un documento word preformattato.
Tu scrivi la prima riga (record) e vorresti scrivere le altre; nel tuo
codice manca l'istruzione che scorre i record (moveNext) e l'istruzione che
scrive nel documento word un invio (nuovo paragrafo).
Ma prima di ogni altra cosa manca un ciclo che scorre i record e scrive i
dati sul documento:
Es.
'--------------
Dim oRecSet As Recordset
Set oRecSet = Me!nomeSottoMaschera.Form.RecordsetClone
oRecSet.MoveFirst
Do While Not oRecSet.EOF
    oDoc.Bookmarks("Testata").Select
    oApp.Selection.TypeText Text:=Me!nomeSottoMaschera!Testata
    oDoc.Bookmarks("Prezzo").Select
    oApp.Selection.TypeText Text:=Me!nomeSottoMaschera!Prezzo
    oDoc.Bookmarks("Numero_Pagine").Select
    oApp.Selection.TypeText Text:=Me!nomeSottoMaschera!Numero_Pagine
    oDoc.Bookmarks("TotaleLire").Select
    oApp.Selection.TypeText Text:=Me!nomeSottoMaschera!TotaleLire
'mi posiziono alla fine della riga
    oApp.Selection.EndKey Unit:=wdLine
'vado accapo
    oApp.Selection.TypeParagraph
    oRecSet.MoveNext
Loop
oRecSet.Close
Set oRecSet = Nothing
'--------------
Questo esempio scorre i record di una sottomaschera e ci ho inserito il tuo
codice che scrive sul documento word.
Problema:
- non so se hai una struttura maschera - sottomaschera;
- il codice che ti ho inviato non crea un'altra serie di segnalibri, presumo
quindi che si sovrapporrà tutto;
- così facendo non esegui nessun mailmerge;
Possibile soluzione:
- struttura maschera sottomaschera (per utilizzare il codice appena
inviato);
- eliminare dal documento i segnalibri;
- eliminare dal codice la ricerca dei segnalibri;
Che ne dici?
Ciao.


[CUT]

Andrebbe benissimo!!!!
Ho una maschera con Azienda/ Agenzia/ ecc
ed una Sottomaschera (come da codice sopra)
ma...se tolgo i segnalibri come faccio a formattare il documento e a
scriverci???
Questo proprio non ne ho idea.
Tank you very grazie...per tutto l'aiuto che potrai darmi
Eddie

 Eddie
Puoi ricostruirti la formattazione del documento da VBA, come? Se apri word
e attivi il registratore di macro e ti costruisci la "prima parte" del
documento con tutta la formattazione; poi blocchi il registratore e leggi il
codice VBA che tu ha generato, con pochi accorgimenti puoi riutilizzarlo in
access per fargli fare le stesse cose.
Questo è un esempio di una soluzione ad un mio problema che per alcuni punti
è simile al tuo; in un documento (formato lettera) che veniva utilizzato per
un mailmerge, dovevo inserire un elenco con altri dati presi da un'altra
tabella (tipo fattura-dettaglio); ho inserito nel documento un testo (es.
"elenco") che mi serviva come "segnalibro" per crearmi una tabella (word) in
quella posizione. Da codice, cerco il testo e inizio a crearmi la tabella
formattata e ci inserisco i dati:
es.
'--------------
'cerco la stringa "Elenco"
        oApp.Selection.Find.ClearFormatting
        With oApp.Selection.Find
            .Text = "elenco"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindContinue
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchWildcards = False
            .MatchSoundsLike = False
            .MatchAllWordForms = False
        End With
        oApp.Selection.Find.Execute
'inserisco la tabella con X colonne e intestazione
        oApp.ActiveDocument.Tables.Add Range:=oApp.Selection.Range,
NumRows:=rstDipd.RecordCount, NumColumns:=2
        oApp.Selection.Tables(1).Select
        oApp.Selection.Tables(1).Borders.Enable = False
'imposto la dimensione delle colonne e righe
        oApp.Selection.MoveLeft Unit:=wdCharacter, Count:=1
'intestazione tabella
        With oApp.Selection
            .TypeText Text:="Nominativo"
            .MoveRight Unit:=wdCell
            .TypeText Text:="Importo proposta"
            '.MoveRight Unit:=wdCell
            '.TypeText Text:="Decorrenza livello"
        End With
'scrivo le informazioni dei dipendenti
        Do While Not rstDipd.EOF
            With oApp.Selection
                .MoveRight Unit:=wdCell
                .TypeText Text:=rstDipd!nominativo
                .MoveRight Unit:=wdCell
                .TypeText Text:="L." & Format(rstDipd!totProposta, "#,###")
            End With
            rstDipd.MoveNext
        Loop
'--------------
Codice preso (quasi) pari pari dalla macro che avevo prima creato in word...
Ciao.

 č simile al tuo; in un documento (formato lettera) che veniva utilizzato

Grazie Sergio..ci lavorero'...ti faro' sapere cosa sono riuscito a
combinare..
Ciao

 wrote in message
UDdH6.200189$lj4.5...@news6.giganews.com...

Se permettete l'intromissione......e' il post con botta e risposta piu'
lungo che abbia mai visto, cmq e' bello vedere che alla fine ci si aiuta e
tutti ne traggono vantaggio!
Ciao e grazie
Davide