Newsgroup: it.comp.appl.access
Titolo: Esperti: Scelta del BE

Avendo strutturato l'applicazione con Back-end e Front-end, è possibile
scegliere il back-end al momento dell'avvio? Eventualmente anche con una
maschera apposita, oppure con una stringa-path del nuovo Back.end da passare
al Front-end).
Esempio di utlizzo, potrebbe essere quello di aver scelto di usare un
Back-end nuovo per ogni anno solare. In questo modo, se fosse possibiile
scegliere il BE ogni volta, si otterrebbe di poter usare DB piccoli (avendo
al loro interno solo i dati relativi all'anno in corso) e nello stesso tempo
di poter consultare i dati degli anni precedenti.
Grazie per le risposte.
Landers.

 al Front-end).
Certamente. Guardati questo esempio, e dai un'occhiata al sito comune per
maggiori info e per la funzione BrowseFolder().
Io ho un FE e tre BE che per motivi di efficienza ho diviso in dati di
transito (tabelle che si riempono e svuotano continuamente), archivio
storico (migliaia di record relativi alle vendite) ed il resto sono i dati
(anagrafiche, documenti,ecc.). I tre BE possono risiedere in qualunque
directory, e possono anche essere relativi ad anni differenti, che è quello
che vorresti tu.
Riallego le tabelle da una maschera che mi fa scegliere il percorso (a mano
o sfogliando le directory) e con delle checkbox scelgo se allegare tutti e
tre i BE, o solo alcuni. Dal mio cut & paste dovresti capire il concetto ed
adattarlo alle tue esigenze (più semplice con un FE ed un BE). Per capire a
quale dei 3 BE appartiene una tabella, lo ricavo dal percorso attuale.
Public Sub RelinkAllTables(pathBE As String)
 'aggiorna i collegamenti dei 3 backend: data, storico e transito
 Dim tdf As TableDef, strDBPath As String, strNomeFile As String
 For Each tdf In CurrentDb.TableDefs
  With tdf
   If Len(.Connect) > 0 Then 'la tabella è collegata se include una stringa
di connessione
    strDBPath = Right(.Connect, Len(.Connect) - (InStr(1, .Connect,
"DATABASE=") + 8))
    strNomeFile = Dir(strDBPath) 'nome del Backend cui la tabella appartiene
    .Connect = ";DATABASE=" & pathBE & strNomeFile
    .RefreshLink 'riallega le tabelle
   End If
  End With
 Next tdf
End Sub
Private Sub BtnCollega_Click()
 If IsNull(Me!PathArchivi) Or Me!PathArchivi = "" Then
  MsgBox "Non è stato selezionato il percorso degli archivi da collegare.",
vbExclamation
  Exit Sub
 End If
 If Dir(Me!PathArchivi, vbDirectory) = "" Then
  MsgBox "Il percorso " & Me!PathArchivi & " non è valido.", vbExclamation
  Exit Sub
 End If
 'controllo esistenza archivi
 Dim PathArc As String
 PathArc = Me!PathArchivi & IIf(Right(Me!PathArchivi, 1) = "\", "", "\")
'aggiunge \ finale mancante
 If Dir(PathArc & "2190data.mdb") = "" Then
  MsgBox "Impossibile trovare il file archivio DATA: " & PathArc &
"2190data.mdb", vbCritical
  Exit Sub
 End If
 If Dir(PathArc & "2190tran.mdb") = "" Then
  MsgBox "Impossibile trovare il file archivio TRAN: " & PathArc &
"2190tran.mdb", vbCritical
  Exit Sub
 End If
 If Dir(PathArc & "2190stor.mdb") = "" Then
  MsgBox "Impossibile trovare il file archivio STOR: " & PathArc &
"2190stor.mdb", vbCritical
  Exit Sub
 End If
 If MsgBox("Si è sicuri di voler impostare il nuovo percorso degli archivi
Data, Storico e Transito?", vbQuestion + vbYesNo) <> vbYes Then
  Exit Sub
 End If
 DoCmd.Hourglass True
 RelinkAllTables (PathArc)
 'aggiorna TblConfigurazione e variabile globale
 DoCmd.RunSQL "UPDATE TblConfigurazione SET PathBackEnd = '" & PathArc & "'
WHERE IDconf='CONFCORR'"
 PathBackEnd = PathArc
 Me!PathCorrente.Requery 'aggiorna sulla maschera
 DoCmd.Hourglass False
 MsgBox "Gli archivi sono stati collegati correttamente.", vbInformation
End Sub
Private Sub BtnSceltaDir_Click()
 Dim percorso As String
 percorso = cmdlg_BrowseFolder()
 If percorso <> "" Then Me!PathArchivi = percorso 'se si annulla, lascia
percorso attuale
End Sub
--
Ciao, AntoGal
*************************************************
Home Page (area programmatori di VolFtp)
http://volftp.mondadori.com/italiani/galletta/
per scaricare un gioco di DAMA ITALIANA
*************************************************