Newsgroup: it.comp.appl.access
Titolo: Access 2.0 - controllo esistenza file con "nome lungo"

Non sono un gran esperto, e' la prima volta che scrivo qui e le mie scarse 
conoscenze non mi permettono di aggirare questo ostacolo.
Ho necessita' di controllare se un file esiste in un determinato percorso e 
con i nomi dei files "vecchio tipo" 8+3 non ci sono problemi, basta fare:
Open nomefile For Input Access Read As #1
a questo punto se ottengo errore 53 il file non esiste e mi regolo di 
conseguenza.
Per vari problemi di "work in progress" sono ora costretto a dover 
controllare files con 11+3 caratteri ed access 2.0 li vede con la tilde 
sempre nel formato 8+3.
I nomi dei files vecchi erano del tipo LL0000LC a cui aggiungo un .gif o 
.jpg a seconda dei casi, adesso invece e' LL0000LCCCC.ext e passando questo 
codice alla variabile "nomefile" non c'e' niente da fare, il comando open 
restituisce sempre l'errore 53 anche se il file esiste.
Ovviamente non mi e' possibile passare alla variabile "nomefile" il nome con 
la tilde dato che non lo conosco e potrebbe anche cambiare.
(Sono in ambiente Access 2.0 ed i nomi lunghi non esistevano in windows)
Qualcuno ha un'idea ???
Devo solo controllare se il file esiste ed avere un codice di errore 
gestibile in access se il file e' inesistente.
Ovviamente e' IMPOSSIBILE cambiare versione di access con una piu' recente.
Mille grazie a chi mi dara' una mano.
Saluti,
Dan
(se il problema e' gia' stato analizzato .... non ho cercato bene :-((  , 
sorry) 

 :-((  , sorry)
-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 conseguenza.
If Dir("tuo_percorso\tuo_file") = "tuo_file" Then
Msgbox "ESISTE"
Else
Msgbox "NON ESISTE"
End if
-- 
Ciao
Pablitomf (Maurizio Facciuti)
Access : Ver.97 - 2K
----------------------------------
http://www.accessgroup.it/
http://www.sitocomune.com/
----------------------------------
Non mi fido molto delle statistiche, perchč un uomo con la testa nel forno
acceso e i piedi nel congelatore statisticamente ha una temperatura media.
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 End if
Mille grazie a entrambi per le info, spiegazioni chiarissime, ma mi sa che 
anche il comando DIR non e' esente dal problema 11+3
guardate qui:
    If Dir("c:\test\foto1\BR\BR0888D003.gif") = "BR0888D003.gif" Then
        MsgBox ("esiste")
    Else
        MsgBox ("non esiste")
    End If
Il file esiste e sta pure nel posto giusto, ma arrivo sempre nella 
condizione del "non esiste"
:-(((

 :-(((
-- 
Ciao
Pablitomf (Maurizio Facciuti)
Access : Ver.97 - 2K
----------------------------------
http://www.accessgroup.it/
http://www.sitocomune.com/
----------------------------------
Non mi fido molto delle statistiche, perchè un uomo con la testa nel forno


 dommi notizie.
restituisce un box vuoto (con il solo pulsante OK)
Sia utilizzando:
Msgbox Dir("c:\test\foto1\BR\BR0888D003.gif")
che utilizzando la variabile che passerebbe il nome del file
MsgBox Dir(nomefile)
(che ovviamente con un PRINT NOMEFILE in finestra di verifica restituisce 
percorso e nomefile corretti)

 ha scritto nel messaggio 
news:447c5dbf$0$18297$4faf...@reader1.news.tin.it...

Prova scaricando VBScript 
(
http://msdn.microsoft.com/library/default.asp?url=/downloads/list/webdev.asp
) 
ed inserire i riferimenti alla sua libreria ed utilizzare il metodo Metodo 
FileExists...
Ciao.
-- 
Sergio MAZZA 

 restituisce percorso e nomefile corretti)
potrebbe essere un problema di accesso al file
prova a cambiare path


 prova a cambiare path
Niente da fare, anche mettendolo nella root non cambia nulla, ho pero'
scoperto che anche il comando DIR cerca i files nel formato 8+3, ho provato
a dare questo:
MsgBox Dir("c:\test\foto1\br\br0888*.*")
e il risultato nel box e' stato:
BR0888~1.GIF
adesso provo a capirci qualcosa con i VBScript come suggerito da Sergio ...
(sempre se riesco a capirci qualcosa)

 (sempre se riesco a capirci qualcosa)
-- 
Ciao
Pablitomf (Maurizio Facciuti)
Access : Ver.97 - 2K
----------------------------------
http://www.accessgroup.it/
http://www.sitocomune.com/
----------------------------------
Non mi fido molto delle statistiche, perchč un uomo con la testa nel forno


 usi MsgBox Dir("c:testfoto1" & miofile & "~.*")
SORRY : 
MsgBox Dir("c:testfoto1" & left(miofile,6) & "~*.*")


> che accade?
Acacde che per lui č lo stesso se i file hanno tutto uguale fino all'8
lettera e poi cambiano


 lettera e poi cambiano
ESATTO !
Io ho files assortiti cosi' composti:
BR0888D003.GIF
BR0888D005.GIF
BR0888D010.GIF
BR0888D012.GIF
ecc....
Questi sono "codici di modello" a cui aggiungo l'estensione per verificare 
l'esistenza della foto, ma purtroppo non ho una sequenza predefinita che 
puo' permettermi eventualmente di convertire il filename con la tilde, sono 
costretto a cercare esattamente il nome del file per intero.
Sto cercando di capire qualcosa con "Microsoft Windows Script 5.6 (Windows 
2000, XP)" come consigliato ...
sono entrato in "guru meditation" (leggasi "non so che pesci pigliare, non 
ci capisco un tubo")
Se lanciassi un .exe con SHELL che sia in grado di ritornare un codice di 
errore ad access ?
Qualche idea su qualcosa di preconfezionato ? 


Il limite sta nella versione di Access che usi
Con versioni moderne questo problema è risolto


 Con versioni moderne questo problema è risolto
Lo so, ma questo c'e' e questo sono costretto ad usare.

 Info:  
www.donkarl.com/it
Non credo che il limite sia dato da access ma dal SO dove viene eseguito.
Per esempio non hai detto su quale windows fai girare Access 2.0.
Se per esempio fosse win98se (lo spero), già con la partizione a fat32 potevi gestire i nomi di file più lunghi di 8+3.
Comunque prova questo pezzo di codice (tratto dall'help VBScript delle proprietà ShortName/ShortPath):
'---
   Dim fso, f, s
   Set fso = CreateObject("Scripting.FileSystemObject")
   Set f = fso.GetFile("c:\directory\nomeFileLunghissimo.exe")
   s = "Il nome corto per " & UCase(f.Name) & " è: " & f.ShortName
   s = s & ", nella directory corta: " & UCase(f.ShortPath)
   Debug.Print s
'---
Ciao.
-- 
Sergio MAZZA 

 '---
Il problema e' che non ho idea di come fare e/o dove inserire questo codice.
GetFile non e' riconosciuto da access 2.0, se inserisco questo codice nel
modulo che utilizzo, quando tento un "compila moduli caricati" access si
ferma al "." prima di GetFile dicendo "L'identificatore non e' un oggetto o
un tipo di dato definito dall'utente".
In effetti convertire il nome lungo in nome corto e poi darlo in pasto al
resto della procura sarebbe perfetto, il comando OPEN non avrebbe problemi a
trovare un nomefile convertito in 8+3, ma come faccio ad eseguire questo
script ?
Ciao,
Dan

 Dan
Googlando ho inciampato in "funzione API GetShortPathName" che farebbe al 
caso mio.
Domanda: c'e' un modo di farla eseguire in access ???

 Dan
Devi inserire i riferimenti alla libreria Microsoft Script...
Ciao.
-- 
Sergio MAZZA 

Allora ....
per chi non sa che pesci pigliare con script e affini, la soluzione l'ho 
trovata.
Il giro e' un po lunghetto ed un po' rallentante, ma dovrebbe funzionare.
(dico dovrebbe dato che non ho ancora finito)
Vi dice niente il comando "DIR nomelungofile.ext /x > prova.txt" ?
E' bastato creare una shell che lanci un file bat contenente il comando "dir 
%1 %2 %3 %4" e passare quindi tutti i paramentri richiesti.
Importare il file prova.txt in una tabella ed ecco che in un record e' 
presente il nome lungo e il nome in formato 8+3.
Adesso non mi resta che gestire la tabella con i suoi record andando a 
prendere il nome del file in formato 8+3 e passarlo al comando open.
Neanche troppo difficile, bastava pensarci !
Ciao e grazie a tutti !
Dan