Newsgroup: it.comp.appl.access
Titolo: Generare un report, stamparlo e archiviarlo per futura consultazione

Ciao a tutti,
è possibile realizzare una sequenza di azioni come da oggetto?
Il report sarebbe una fattura quindi la sequenza sarebbe:
aprire il report passandogli tutti i valori necessari
stamparlo
e fin qui ci siamo
poi salvarlo in word, pdf è uguale
e fin qui, con outputto ci siamo pure
poi inserire in automatico in una tabella del db il collegamento così
da creare un storico delle fatture emesse richiamabile in qualunque
momento. 
Grazie

Grazie
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

Cosa ti trovi in difficoltà a realizzare?
Così come è impostato adesso il cliente conclude la transazione,
genera la fattura e la manda in stampa
Per poter archiviare le fatture emesse se ne dovrebbe stampare una
copia e metterla in una cartellina
Io vorrei creare un archivio delle fatture su pc di questo tipo (faccio
un esempio con i nomi)
alla pressione del pulsante "salva fattura" il db mi esporta il report
in word, gli assegna il nome prendendolo dal numero fattura, lo salva
nella cartella fatture e aggiunge un record nella tabella fatture
(composta da "IdFattura";"Data";"IdCliente")
Poi da una Maschera con i campi "IdFattura";"Data";"IdCliente" si
sceglie la fattura da consultare e richiama il file word
Dimenticavo, prima che qualcuno mi dica: ma che senso ha fare questo
casino visto che basta richiamare la schermata che genera il report in
qualunque momento e ristamparsi il tutto? Risposta: c'è la necessità
di avere in una cartella tutte le fatture emesse in modo da poterle
portare su altri pc che nulla hanno a che fare con il db in questione

 ha scritto nel messaggio
news:1127213806.0...@g43g2000cwa.googlegroups.com...

Mi sembra di capire che hai piacere di discutere la realizzazione di ogni
fase della realizzazione, quindi cominciamo con scegliere il tipo di file in
cui esportare e quindi memorizzare la stampa delle tue fatture.
Io fossi in te non esporterei mai un report in un file di tipo testo in
quanto così perderesti la formattazione e tutta la parte grafica della
stampa, così che quando andresti a riaprire il file quello che bedresti
ricorderebbe solo vagamente la tua fattura.
Per esportare anche la formattazione e la grafica di un report Access ti
consiglio di scegliere di esportare o verso un file di tipo Snapshot o verso
un file PDF.
Nel primo caso l'esportazione la puoi eseguire da VBA con il metodo OutputTo
che mi sembra di capire dai tuoi messaggi precedenti conosci, in caso
contrario dai uno sguardo all'help; per esportare invece un report in un
file PDF trovi un esempio nel Sito Comune (link qui sotto), nella Sezione
Reports, nella FAQ di Walter Negrinelli intitolata "4.21 Esportare un report
in un file PDF".
Se i file così ottenuti li memorizzi tutti in una determinata cartella il
cui nome sia noto e prestabilito, ed assegni loro un nome che risulta essere
il mix del numero fattura, la data fattura e del codice cliente (che però
sarebbe superfluo, visto che una fattura non può essere che di un solo
cliente), ritengo del tutto superfluo crearti una nuova tabella in cui
memorizzare il numero, la data fattura ed il codice del cliente, visto che
sicuramente già hai una tabella fatture che contiene quei dati, quindi puoi
usare quella tabella per effettuare le ricerche necessarie a richiamare il
file Snapshoto o PDF della fattura e visualizzarlo. Se invece per qualche
arcano motivo tu vuoi comunque crearti una tabella a parte per tale scopo,
puoi accodare in essa un nuovo record eseguendo con il metodo RunSQL una
istruzione INSERT INTO (vedi help) prelevando i dati da variabili e/o
controlli di una maschera.
Non mi dilungherei più di tanto a parlare di come impostare la maschera di
ricerca dei file fattura da visualizzare: se invece tu dovesi avere problemi
anche per questo, rifatti vivo e precisa che ti po di problema hai a
realizzare una maschera di ricerca.
Risolto anche il problema della ricerca, resta solo da risolvere il problema
di come dar modo all'utente finale di visualizzare da VBA in una maschera il
contenuto del file relativo alla fattura scelta con la ricerca di cui sopra.
Se l'esportazione del report lo hai fatto in  un file Snapshot trovi un
esempio di cosa fare nel Sito Comune, nella Sezione Reports , in queste due
FAQ:
1) 4.12 Utilizzare lo Snapshot Viewer per creare anteprime dei report in una
form di Federico Luciani.
2) 4.14 Anteprima report su maschera con Snapshot Viewer di Franco
Cappellaro
Se invece hai optato per un file PDF di come aprire questo tipo di file da
VBA trovi esempi sul Sito Comune, nella Sezione General, in queste due FAQ:
1) 6.123 Aprire un qualsiasi file (di formato txt, pdf, tif ecc.)
direttamente da un db access di Carmelo Campanella
2) 6.183 Aprire un qualsiasi file (di formato txt, pdf, tif ecc.)
direttamente da un db access (2) di Roberto
Se in quello che ho scritto c'è qulacosa che non ti è del tutto chiaro, fai
una domanda specifica e spero di riuscire ad essere più chiaro.


Beh, come minimo dovrei offrirti un caffè, grazie per la risposta
completa!!
Per ora sono arrivato alla stampa della fattura e al suo salvataggio in
una cartella scelta dall'utente (la lascio scegliere a lui perchè il
db andrà su diversi pc e non mi sembra che il setup wizard di access
permetta l'installazione e la creazione di una cartella specifica.
Stampa e salvataggio sono automatiche su pressione dello stesso
comando; il nome del file lo costituisce l'id fattura visto che l'ho
fatto progressivo alfanumerico e non c'è pericolo di duplicati.
Ho letto anche le faq che mi hai indicati e qui ritorna la domanda di
prima, esisterà un modo di installare file e cartelle durante
l'installazione del db come per i programmi veri e propri (usando ad
esmpio installshield)?
Grazie ancora per la disponibilità
Paolo

[cut]
Ciao Paolo,
ti indico la soluzione che ho realizzato io. Con la sub Stampa singola
Fattura seleziono tramite combo box la fattura che devo stampare e passo un
filtro al report per stamparla sulla stampante virtuale JawsPDFCreator. Come
vedi il file una volta stampato viene rinominato  ( nel tuo caso dovrai
modificare il tutto in modo che ti prenda le specifiche che hai indicato nel
tuo post). la Sub Form_Open non è altro che la sub di apertura che contiene
una listBox che si popola con i nomi dei files contenuti in uno specifico
path ( quello che contiene i files in pdf  relativi alle fatture) e con un
doppio click li seleziono e successivamente li apro. Devi sul codice che ti
ho postato modificare il nome degli oggetti e dei controlli che utilizzi nel
tuo db dopo di che il gioco dovrebbe essere fatto. Se hai prblemi batti un
colpo.
Ciao, Sandro.
--------------------------------------------
Private Sub stampa_singola_fattura_Click()
     Dim stdocname As String
      bott = vbCritical + vbOKCancel
Set WshNetwork = CreateObject("WScript.Network")
    WshNetwork.SetDefaultPrinter ("JawsPDFCreator")
    origine = "Q_stampa_fatture"
       filtrareper = "(numero_fattura='" & Me.numero_fattura & "') AND
(data_fattura=#" & Format(Me.data_fattura, "mm/dd/yyyy") & "#" & ")"
        strnome2 = "C:\documents and settings\ino\desktop\pdf\" & "fattura"
& Format(Now() + 1, "ddmmyy") & ".pdf"
        oldname2 = "C:\documents and
settings\ino\desktop\pdf\R_per_fattura_fatta_con_access.pdf"
     stdocname = "fattura"
    DoCmd.OpenReport stdocname, acViewNormal
    rinomina oldname2, strnome2
    WshNetwork.SetDefaultPrinter ("EPSON Stylus C66 Series")
    Set WshNetwork = Nothing
End Sub
--------------------------------------------
Public Function rinomina(ByVal vecchioNome As String, ByVal nuovoNome As
String)
Dim trovapunto As Integer
Dim soloilnome As String
Dim solopercorso As String
Dim conteggio As Integer
        trovapunto = InStrRev(nuovoNome, "\") 'trovo la posizione dello \
all ' interno del nome del file
        soloilnome = Mid(nuovoNome, trovapunto + 1, Len(nuovoNome) - 4 -
trovapunto) ' prendo solo il nome
        solopercorso = Left(nuovoNome, trovapunto)
           ' Ripeto il ciclo fino a che non trovo un nome non ancora usato
         Do While Len(Dir(nuovoNome)) > 0    ' Avvia il ciclo.
                nuovoNome = solopercorso & "copia(" & conteggio & ") di " &
soloilnome & ".pdf"
                conteggio = conteggio + 1
         Loop
        Name vecchioNome As nuovoNome
End Function
---------------------------------------------------------
Private Sub Form_Open(Cancel As Integer)
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("T_nomiFile", dbOpenTable)
MyPath = "C:\documents and settings\ino\desktop\pdf\*.pdf"
Me.prog.RowSourceType = "Tabella/query"
 ' Imposta il percorso.
myname = Dir(MyPath)
Do While myname <> ""   ' Avvia il ciclo.
    myname = Dir
    rst.AddNew
    rst("nomeFile") = myname
    rst.Update
Loop
Set rst = Nothing
Set dbs = Nothing
Me.prog.RowSource = "T_nomiFile"
End Sub
-------------------------------------------
Private Sub prog_DblClick(Cancel As Integer)
    Me.filadaprire = strPath & Me.prog.Column(1,
Me.prog.ItemData(Me.prog.ListIndex))
End Sub

Mille grazie, mi hai dato un'ottima idea su come gestire il tutto
Ho cambiato il metodo di gestione delle fatture archiviate usando un
pulsante accanto alla casella "idfattura" anzichè una listbox perchè
il cliente avrà bisogno di aprire nuovamente una fattura solo dopo
aver visionato la transazione a cui essa è riferita.
Grazie ancora a tutti per l'aiuto prezioso
Paolo

Paolo
