Newsgroup: it.comp.appl.access
Titolo: Automatizzare aggiornamento db.

Stimolato da un oggetto analogo, vorrei sottoporre una soluzione che
ho adottato.
Prima usavo la soluzione di Lebans il Grande, ma ci hanno blindato il
sistema al punto che non possiamo usare nemmeno un file .bat se non è
installato dall'assistenza.
Di solito le mie applicazioni sono avviate da un'icona su schermo, ma
la cosa è irrilevante. Per ogni applicazione di nome <appl> c'è un
file Access che ho chiamato <Xappl>, in cui si apre una maschera
mAvvio che SuTimer chiama la seguente funzione.
Tutte le mie applicazioni si trovano in "t:\progetti\sw_bald\gestione
\" e poi una cartella col nome dell'applicazione, contenente il DB, e
una sottocartella "\rete" contenente l'ultima versione del FE.
Inoltre i FE in locale si trovano tutti in "d:\sw\" con relativa
sottocartella.
Ecco perché uso la variabile chiamata <Quale>: per una nuova
applicazione devo solo cambiare il suo valore.
L'applicazione ha due tabelle collegate, settings e settings1, una al
FE in locale e una al FE in rete. Confrontando data e ora contenute
nelle tabelle si vede se va fatto l'aggiornamento, dopodiché si avvia
l'applicazione.
Non mi so spiegare la ragione per cui ho dovuto piazzare i due
DoEvents, ma se ne manca uno la cosa non funziona.
L'esempio è riferito a file di Access 2007 (estensione .accdb) ma mi
funzionava anche con Access 2000.
Function fAvvia()
On Error Resume Next
    Quale = "corsi"
    Forms!mAvvio.TimerInterval = 0
    DataQui = DLookup("[setting]", "settings", "key='giornoagg'")
    DataLa = DLookup("[setting]", "settings1", "key='giornoagg'")
    If DataQui < DataLa Then
        FileCopy "t:\progetti\sw_bald\gestione\" & Quale & "\rete\" &
Quale & ".accdb", "d:\sw\" & _
Quale & "\" & Quale & ".accdb"
    End If
    Dim oWshShell As Object
    Set oWshShell = CreateObject("WScript.Shell")
    oWshShell.Run Chr$(34) & "d:\sw\" & Quale & "\" & Quale & ".accdb"
    DoEvents
    Set oWshShell = Nothing
    DoEvents
    Application.Quit
End Function
Naturalmente io, che sono un pasticciato improvvisatore, accoglierei
ben volentieri eventuali suggerimenti.
Riccardo Baldinotti

 ben volentieri eventuali suggerimenti.
In effetti la frase adatta a questa soluzione è "CHE CASINO" :D
non ti basta solo numerare le versioni e hai risolto?
Es.
SERVER :
ci sono le versioni 1.mdb, 2.mdb, 3.mdb
CLIENT:
c'è la versione 1.mdb
all'apertura del client cicli la cartella del SERVER e ti tiri fuori
la versione + alta (nel nostro caso 3), poi ti cicli la cartella del
CLIENT e fai altrettanto (quindi 1)
a questo punto sai che dal SERVER, per allinearti devi copiarti 2 e
3...
basta un ciclo :
For x=2 to 3 (tu ovviamente li avrai in variabili questi parametri)
  ...copia il il file x & ".mdb" nel CLIENT...
Next x
permettendoti di allineare il CLIENT al server.
facile no?


Effettivamente...
L'unica cosa è che spesso la "nuova versione" è solo un'inezia in una
funzione, ma comincerò a ragionarci.
Grazie.
Riccardo Baldinotti


e cosa centra... proprio perchè un aggiornamento può essere una
"virgola" o un "epistolato intero" che devi standardizzare il più
possibile, per astrarti dal "COSA" e concentrarti sul "COME"... ti
assicuro che come ti ho detto io, la cosa la risolvi (io la uso da
sempre).
Se vuoi più particolari, chiedi e ti sarà dato.