Newsgroup: it.comp.appl.access
Titolo: nuovo anno nuovo database

Salve avrei l'esigenza alla fine dell'anno di creare un nuovo db con le 
tabelle vuote, ho creato questa funzione, mi crea il db ma quando deve 
esportare le tabelle mi dà un errore dicendo che il file non esiste 
controllo da gestione risorse ed il file esiste.
Qualche idea??
Questo è il codice che ho scritto.
grazie.
Function nuovodb()
Dim strinput As String
Dim title
Dim valori As String
Dim default
Dim messaggio
messaggio = "Nuovo DataBase"
title = "Inserire Nome e Percorso Nuovo DataBase"
default = "c:\temp\ "
strinput = InputBox(title, messaggio, default)
If StrPtr(strinput) = 0 Then
MsgBox "Azione annullata"
DoEvents
End If
If CStr(strinput) <> default Then valori = (strinput)
Dim wrkpredefinita As Workspace
    Dim dbsNuovo As Database
    Set wrkpredefinita = DBEngine.Workspaces(0)
 
    DoCmd.Echo True, "creazione database in corso"
DoEvents
        Set dbsNuovo = wrkpredefinita.CreateDatabase((strinput), 
dbLangGeneral, dbEncrypt)
DoEvents
DBEngine.Idle dbRefreshCache
 dbsNuovo.Close
 DoEvents
DoEvents
DoEvents
DBEngine.Idle dbRefreshCache
 
 DoCmd.TransferDatabase acExport, "Microsoft Access", (strinput), acTable, 
"cedente", "cedente", True
End Function

 ha scritto nel messaggio
news:dPyg7.1649$423....@news.infostrada.it...

Quella doppia parentesi è un errore di trascrizione o è reale?: Set dbsNuovo
= wrkpredefinita.CreateDatabase((strinput).
E poi se l'utente ti restituisce un valore di "strinput" = a "c:\temp\Miodb"
non hai previsto il controllo dell'estensione ".mbd".
Il metodo Idle con l'opzione dbRefreshCache non è applicabile perchè non ci
sono scritture incomplete da forzare: il nuovo db è stato già creato e
salvato e, in più, Windows provvede al refresh.
Tutti quei DoEvents sono inutili.
Prima di "TransferDatabase" crea una routine che verifichi l'esistenza del
file.
In DoCmd.TransferDatabase acExport, "Microsoft Access", (strinput), acTable,
non c'è bisogno di (strinput) ma solo di strinput perchè è già una stringa.
Il resto va bene. Prova così e facci sapere.
Ciao, Carlo

 wrote in message
dPyg7.1649$423....@news.infostrada.it...

Io ho semplicemente creato una query di eliminazione che mi svuota le tbl
interessate. Per far funzionare tutto ho creato una macro che prima mi
richiama il comando filecopy e copia il mio mdb in uno nuovo (che sarà
l'archivio del vecchio anno) e successivamente mi esegue la query di
eliminazione.
ciao

 Ciao, Carlo
ciao come da  te consigliato ho levato le parentesi di troppo e i 
dbRefeshCache, qui sotto trovi la versione ripulita
Dim title
Dim valori As String
Dim default
Dim messaggio
messaggio = "Nuovo Database"
title = "Inserire Nome e Percorso Nuovo Database"
default = "c:\temp\"
strinput = InputBox(title, messaggio, default)
If StrPtr(strinput) = 0 Then
MsgBox "Azione Annullata"
    End If
DoEvents
Dim wrkPredefinita As Workspace
Dim dbsNuovo As Database
Dim prpCiclo As Property
Set wrkPredefinita = DBEngine.Workspaces(0)
Set dbsNuovo = wrkPredefinita.CreateDatabase(strinput, dbLangGeneral, 
dbEncrypt)
DoEvents
DoCmd.TransferDatabase acExport, "Microsoft Access", strinput, acTable, 
"cedente", "cedente", True
End Function
tuttavia mi dà sempre lo stesso errore, non trova il db quando invece 
esiste.
cosa intendi per controllo dell'estensione  ".mdb" come si crea, il db 
creato ha già estensione .mdb, non mi sembra necessario creare una routine 
per verificare l'esistenza del file se questo già esiste mi dà errore.
Spero che mi darai una mano.
Ciao Mario