Newsgroup: it.comp.appl.access
Titolo: Esportare tabelle

Ciao a tutti,
ho un database che successivamente dovrei trasformare in eseguibile con il 
Run Time di Access 2003.
A tal proposito mi verrebbe inibito l'esportazione delle tabelle per un 
eventuale backup.
Per questo volevo implementare da subito il mio DB con una funzione per 
trasferire tutte le tabelle in un DB di backup e viceversa reimportare le 
stesse sul DB (eseguibile).
Ho provato con la funzione TransferDatabase ma mi risulta un pò macchinosa 
ed inoltre io vorrei trasferire tutte le tabelle in una esecuzione sola.
Come posso fare?
Grazie a tutti dell'aiuto
Roberto 

 ha scritto nel messaggio 
news:i7u_e.23180$kA.28...@news3.tin.it...

Volevo correggermi su quanto detto prima...la funzione TransferDatabase 
potrebbe andar bene, l'ho modificata in questo modo ma non capisco perchè 
(anche avendo solo la finestra del DB aperta) mi da un errore...riassumento 
mi dice che qualche oggetto appartenente al MsysObject è aperto...in verità 
solo la finestra del DB è aperta.
Riporto il codice
Public Function EXPORT()
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentData
Dim percorso As String
percorso = "C:\"
DoCmd.Close acForm, "Pannello comandi" 'Chiudo il pannello per esportare 
anche la tabella relativa
    ' Cerca tutte le tabelle
    For Each obj In dbs.AllTables
     If Not obj.IsLoaded = True Then 'mi assicuro che non ci sia qualche 
tabella aperta, nel caso la salto per non restituire un errore...ma così non 
è :-((
            ' Esporta tutte le tabelle
            DoCmd.TransferDatabase acExport, "Microsoft Access", percorso & 
"db1.mdb", acTable, obj.Name, obj.Name
     End If
    Next obj
DoCmd.OpenForm "Pannello comandi" 'riapro il pannello
End Function
Quando l'ho scritta pensavo che funzionasse...e invece cazzarola....son qui 
a chiedervi aiuto...
Ciao a tutti
Roberto 

[CUTTONE]

[CUT]
credo che l'errore che ti restituisce sia perchè esporti TUTTE le 
tabelle.. quidni ti prende pure quelle di sistema (che ovviamente sono 
aperte)
prova a vedere se puoi filtrare alltravverso l'obj che hai dichiarato, 
oppure fai un recordset con una query fatta +/- così:
IstrSQL = "SELECT Name as NomeTabella " _
         & "FROM [" & DLookup("DoveTblComuni", "installazione") & 
"].MSysObjects " _
         & "WHERE (Left([Name], 3) <> 'MSy') " _
         & "AND (MSysObjects.Type = 1)"
praticamente prende l'lenco (da un db esterno (vedi la funzione dlookup) 
) e ne restituisce un recordset,
da li poi puoi fare così:
Set rst = CurrentDb.OpenRecordset(IstrSQL, dbOpenDynaset)
rst.MoveLast
rst.MoveFirst
     Do While Not rst.EOF
         DoCmd.TransferDatabase acExport, "Microsoft Access", percorso & 
  "db1.mdb", acTable, rst!nometabella, rst!nometabella
         rst.MoveNext
         aggiornabarra
     Loop
rst.close
spero di essere stato d'aiuto.
Ciao
Nick
ps... riguardati il discorso dell'eseguibile?? forse hai capito male :) 
(ma questo non centra con l'esportazione delle tabelle)

 (ma questo non centra con l'esportazione delle tabelle)
Con qualche piccola modifica ora č perfetto....funziona tutto!!!
GRAZIE...
Ripoorto la soluzione con le modifiche....
[CUT]
IstrSQL = "SELECT Name as NomeTabella " _
         & "FROM MsysObjects " _
         & "WHERE (Left([Name], 3) <> 'MSy') " _
         & "AND (MSysObjects.Type = 1)"
[CUT]
in effetti non ho ben capito la funzione DLookup e perciň ho sostituito 
cosě...
Roberto