Newsgroup: it.comp.software.database
Titolo: OutputTo in Access 97

Ciao
Ho un problema su come esportare un report di Access in RTF o HTML usando
un nome fileoutput di volta in volta diverso senza doverlo digitare.
Il nome che vorrei ottenere dovrebbe essere un campo oppure la data
corrente - Now()- : Es. Cliente.Rtf oppure 14102004.rtf .
Purtroppo non essendo molto ferrato in VB chiederei cortesemente se mi
potreste indicare l'intera stringa.
Ringrazio anticipatamente quanti volessero aiutarmi.
Un caro saluto a tutti.
EnzoMaggio
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

potreste indicare l'intera stringa.
Credo si debba usare il metodo OuputTo dell'oggetto DoCmd:
DoCmd.OutputTo acOutputReport, "nome report", acFormatRTF, "Cliente.rtf"
DoCmd.OutputTo acOutputReport, "nome report", acFormatHTML, "14102004.html"
Ciao.

 Ciao.
Ciao Giovanni
prima di tutto grazie per esserti interessato al mio problema,
però già uso il metodo OutputTo;
Il mio problema è quello di far generare automaticamente e di volta in
volta un file con nome diverso usando appunto il contenuto di un campo
(sempre diverso) o la data/ora di sistema ( Now() ) perchè altrimenti
andrebbe a ricopiare il file già esistente.
In pratica quel "Cliente.RTF" dovrebbe essere: una volta "Mario
Bianchi.RTF", un'altra volta "Sergio Rossi.RTF", etc, etc, così come
contenuto nel campo.
Fammi sapere e, a presto
Ciao


contenuto nel campo.
Mi verrebbe da rispondere: basta che usi una variabile (in cui avrai messo
il contentuo del campo, o la data e ora del sistema) come ultimo parametro
dell'OutputTo, ma evidentemente non può essere questo, sicché forse non ho
capito il problema.
L'unica ipotesi che mi resta è che OutputTo non c'entri per nulla, e il
problema sia quello di generare con sicurezza un nome di file non già
presente nel sistema. In VB, non so se sia disponibile una funzione che fa
il lavoro. Eventualmente, immagino sia possibile appoggiarsi alla funzione
API GetTempFileName:
  Public Declare Function GetTempFileName Lib "kernel32" Alias
"GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As
 String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Se invece vuoi costruirtela direttamente in VB, un timestamp e/o il nome
dell'utente possono, certo, essere un inizio; che cosa fare in dettaglio
dipende anche da quali sono le tue necessità: con quale frequenza e in
quali condizioni vengono creati i file, e perciò quali sono le probabilità
di collisione; e se ti basta che il nome sia unico, o se ti serve anche che
abbia certe caratteristiche (per esempio, di prevedibilità o non
prevedibilità, con un'associazione riconoscibile all'utente o no, ecc.).
Di nuovo, però, ho il sospetto di non comprendere il problema: insegnarti
come estrarre e concatenare delle stringhe mi sembra un po' offensivo, ma
se non è questo è evidente che mi sfugge qualcosa, perché non vedo dove sia
la difficoltà pratica (una volta definita una politica sicura per il tuo
caso, e devi essere tu a chiarirne le condizioni).
Ciao.

 Ciao.
Ciao Giovanni
Credo che piano piano stiamo individuando il problema.
Quello che mi serve è proprio come andare ad inserire una variabile che
potrebbe essere Now() o un nome campo come ultimo parametro
dell'istruzione OutputTo.
Quello che non mi riesce è andare a definire proprio questa variabile:
Ho provato con 
 Dim stDocName As String
    stDocName = Now()
DoCmd.OutputTo
acOutputReport,"5",acFormatRTF,"C:\WINDOWS\DESKTOP\stDocName.RTF"
 ma mi restituisce il file con nome "stDocName"
Dove sbaglio in questa definizione?
Mi puoi aiutare?
Grazie, Ciao


Dove sbaglio in questa definizione?
VB non esegue interpolazioni di variabili nelle stringhe (come Perl o
alcuni linguaggi di shell).
  DoCmd.OutputTo acOutputReport, "5", acFormatRTF, _
                 "C:\WINDOWS\DESKTOP\" & stDocName & ".RTF"
Posto che cosě ti salti fuori un nome di file legale. Puň darsi che
convenga lavorare un po' sulla stringa restituita da Now().
A questo punto, comunque, mi permetto di suggerirti di leggere un po' di
documentazione di base su VB.
Ciao.

 Ciao.
Problema risoltooooo ! ! ! !
Ho rispolverato qualke riminiscenza di Qbasic ed ecco fatto:
 Quello che mancava era un'istruzione Format.
Se puň essere di aiuto a qualkuno ecco il listato:
Private Sub Comando0_Click()
On Error GoTo Err_Comando0_Click
Dim MyStr
MyStr = Format(Time, "Long Time")
    DoCmd.OutputTo acOutputReport, "5", acFormatRTF, "C:\WINDOWS\DESKTOP\"
& MyStr & ".RTF"
Exit_Comando0_Click:
    Exit Sub
Err_Comando0_Click:
    MsgBox Err.Description
    Resume Exit_Comando0_Click
 
End Sub
Grazie di tutto.
