Newsgroup: it.comp.appl.access
Titolo: Solo se il file esiste

Ciao a tutti.
Comincio con il ringraziare Roberto per l'aiuto che mi ha dato giorni fa
riguardo (inserire oggetto ole con macro o codice)
avrete certamente capito che io di vba ne capisco ben poco, spero mi
possiate aiutare ancora.
La funzione che mi ha suggerito Roberto "3) 6.137 Esempio di automazione per
l'invio e la formattazione di dati da
Access a Word usando i bookmarks di Marco Pizzamiglio (namor). Sezione
General", funziona benissimo e anche se non ho capito tutto, inserita nel
mio gestionale fa il suo lavoro, ora vorrei metterci la ciliegina.
vorrei che la funzione riga 3-4 venisse eseguita solo se il file
(lettera10.doc) non esiste, mentre se esiste vorrei che venisse eseguita la
riga 5-6.
Se uso la riga 2 tutto funziona
ma dato che i file si chiamano tutti (letteraXXXX.doc) cosa devo scrivere
perché funzioni la riga 1 dato che le XXXX sono sempre uguali
all'idpreventivo.
Spero di essermi spiegato.
 Public Function Allega()
1)      If Dir("C:\Programmi\eurofatture\Allegatiword\lettera" &
(idPreventivo) & ".doc", vbDirectory) <> "" Then
2 )     If Dir("C:\Programmi\eurofatture\Allegatiword\Lettera10.doc",
vbDirectory) = "" Then
3)     DoCmd.GoToControl "esporta"
4)     SendKeys "{ENTER}", False
        Exit Function
    Else
 5)      DoCmd.GoToControl "Path"
 6)     DoCmd.RunCommand acCmdOpenHyperlink
 End If
 End Function
Grazie per il vostro aiuto Pabel

 ha scritto nel messaggio 
news:HFzYe.4909$kA.2...@news3.tin.it...

... forse ho capito.
se stai cercando l'esistenza di un file, mi pare che il parametro 
vbDirectory (in riga 1 sia sbagliato, forse dovrebbe essere vbNormal (0) ).
Se devo essere sincero non capisco nemmeno la 2, sempre per via di quel 
attributo vbDirectory che pare cercare l'esistenza di una cartella col nome 
che gli passi.
Comunque la differenza tra le due righe è chiara, in una il nome del 
documento è parametrizzato (lo passi tramite una variabile) mentre 
nell'altra è fisso e quindi credo non sia una cosa efficiente: controlla 
sempre l'esistenza di quel documento e basta!
Quindi se vuoi controllare l'esistenza di un documento il cui nome varia 
ogni volta, và bene la 1, a patto che idPreventivo sia un campo della tua 
maschera oppure una variabile a cui passi il nome del documento in esame.
Ivan 


Guarda, io ne capisco poco come ho già avuto modo di dirti.
io ho una cartella dove salvo tutti i file doc
C:\Programmi\eurofatture\Allegatiword\
all'interno di questa cartelle ci sono tutti i file
Lettera10.doc
Lettera11.doc
Lettera12.doc
Lettera13.doc
Vorrei che con la riga 1) cercasse in questa cartella il nome del file dove
il 10-11-12-13 sono l'idPreventivo della maschera dove ho inserito il
pulsante, e venisse eseguita la condizione in base all'esistenza del file.
mi scusa ancora per la mia ignoranza con il vba ma questa cosa con le macro
non mi riesce, pensa che per cercare delle analogie con il vba continuo a
convertire le macro nella speranza di capirne di più.
Di nuovo grazie Pabel


.. allora io farei semplicemente cosě :
 Public Function Allega()
      If Dir("C:\Programmi\eurofatture\Allegatiword\lettera" & 
(idPreventivo) & ".doc") = "" Then
        ' ----- il file non esiste : lo creo
             DoCmd.GoToControl "esporta"
             SendKeys "{ENTER}", False
        Exit Function
    Else
        '-----il file esiste : lo apro
       DoCmd.GoToControl "Path"
      DoCmd.RunCommand acCmdOpenHyperlink
 End If
 End Function
non ho numerato le righe per permetterti il copia e incolla della procedura.
A monte di tutto questo devi assicurarti che esista :
1 - idPreventivo : sotto forma di un controllo che restituisca del testo
2 - esporta e path : il primo forse č un pulsante? e il secondo un 
collegamento ipertestuale?
se tutto questo sussiste, allora dovrebbe funzionare la procedura
Ivan
PS
facci sapere 


Ci avevo già provato, non mi da nessun errore ma esegue sempre la prima
parte sia che il file ci sia o no.
Pabel


allora devi controllare (fermando l'esecuzione nella riga successiva alla IF 
[ premi F9 sulla riga])
controlla se idPreventivo ha valore (ci lasci il puntatore del mouse sopra, 
quando il programma si interrompe)
se ha valore allora seleziona tutta la stringa :
("C:\Programmi\eurofatture\Allegatiword\lettera" &  (idPreventivo) & ".doc")
e premi MAIUSC + F9  e controlla se il valore corrisponde al nome del tuo 
file
se corrisponde : NON CAPISCO !
se non corrisponde : ne possiamo parlare .... ;(==)
Ivan 

 > Ci avevo gią provato, non mi da nessun errore ma esegue sempre la prima

Mi dice che (idPreventivo) č vuto mentre la porte del percorso
(C:\Programmi\eurofatture\Allegatiword\lettera) corrisponde.
Pabel


 allora il problema č che non hai messo nssun controllo legato all' 
IDpreventivo sulla tua maschera.
Se hai un campo nel recordset, allora non serve nemmeno il controllo, ma la 
prima riga della tua sub deve essere
IDpreventivo = [nomeDelCampoNelMioRecordset]
naturalmente sostituisci tu il giuso nome del campo.
Ivan 

 ha scritto nel messaggio
news:zZbZe.14207$pJ6.9...@news4.tin.it...

Ti ringrazio tantissimo ora funziona o copiato quasi alla ceca la stringa
seguente modificando i mie controlli, ho imparato ancora molte cose, tra
l'alto avevi ragione tu, ci voleva (vbNormal) anche se non so cosa sia.
 Dim File As String
 Dim Percorso As String
 Dim Filecom As String
 Percorso = "C:\Programmi\eurofatture\Allegatiword\Lettera"
 File = [Forms]![Clienti]![SottoschedaPrevAll].[Form]![IDpreventivo ]
 Filecom = Percorso & File & ".doc"
  If dir((Filecom), vbNormal) = "" Then
A risentirci Pabel