Newsgroup: it.comp.appl.access
Titolo: Aggiornamento DB via VBA.

WXP Pro SP3/A03 SP3
Ciao a tutti,
ho provato, su un DB di prova, ad inserire il seguente codice su di una
maschera richiamata da una macro all'avvio di Access:
Private Sub Form_Open(Cancel As Integer)
Dim dbOld As Database
Dim dbNew As Database
Dim RelOld As Integer
Dim RelNew As Integer
Dim TitleOld, Msg As String
Dim TitleNew As String
Dim DBFileNew As String
Dim DBFileOld As String
DBFileNew = "X:ServerMio.mdb"
DBFileOld = "C:Documents and Settings" + LeggiUtenteCorrente() +
"DesktopMio.mdb"
Set dbOld = CurrentDb
If FileExist(DBFileNew) Then
Set dbNew = DBEngine.OpenDatabase(DBFileNew)
TitleOld = dbOld.Properties!AppTitle
TitleNew = dbNew.Properties!AppTitle
RelOld = CInt(Right(TitleOld, Len(TitleOld) - 1))
RelNew = CInt(Right(TitleNew, Len(TitleNew) - 1))
If RelNew - RelOld > 0 Then
CopyFile DBFileNew, DBFileOld, 0
MsgBox "File aggiornato, riavvia!"
DoCmd.Quit
End If
End If
End Sub
In teoria, ed anche in pratica, viene verificata l'esistenza di una
versione pi� recente di un DB su di una cartella fissa di un server e
copiata sulla scrivania dell'utente.
Dopo la prova ho messo il codice, con l'opportuna modifica del nome del
DB, in una form richiamata dalla macro Autoexec in un DB "ufficiale".
Beh, il messaggio appare sempre ma il DB non viene mai sovrascritto.
Qualche commento? Grazie.
-- 
TANNHAUSER
"I've seen things you people wouldn't believe..."
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Qualche commento? Grazie.
Problemi di spazi nei percorsi...? usa chr(34) per emulare le virgolette
all'inizio e alla fine del percorso (incluso il nome file) e vedi se funge.
-- 
Ciao
Pablitomf
----------------------------
http://www.accessgroup.it/
----------------------------
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.


 "DesktopMio.mdb"
-- 
Ciao
Geppo 

 Qualche commento?
Oltre a quanto gi� suggerito dagli altri:
Sei sicuro che a parte della copia tutto funziona?
Hai controllato i valori dei variabili RelOld e RelNew?
Come hai programmato i tuoi metodi FileExist e CopyFile?
Se p.e. usano delle API, sei sicuro che hai i diritti e funzionano
sul sistema?
Perch� non usi i metodi di VBA Dir e FileCopy?
Puoi anche provare di creare un file di testo nel percorso dell'utente
e poi se dalla finestra debug funziona:
Kill("PercorsoENomeDelFileDiTesto")
Vuol dire provare in pratica se tu e Access hanno i diritti necessari.
� anche meglio di non cancellare/copiare file in uso.
Cio� prima della riga con CopyFile:
dbOld.Close: Set dbOld = Nothing
dbNew.Close: Set dbNew = Nothing
DoEvents
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 DoEvents
Grazie a tutti per i preziosi consigli; ho verificato con tutti i vostri
suggerimenti ma non riuscivo a trovare dove fosse il problema. Alla fine
ho scoperto che la funzione LeggiUtenteCorrente() mi resitutiva "USERxxxx"
seguito da decine di caratteri non stampabili. A quel punto ho sostituito
LeggiUtenteCorrente() con Left(LeggiUtenteCorrente(),8) e la cosa si �
risolta.
Buona giornata.
