Newsgroup: it.comp.appl.access
Titolo: Creare database uguali - Sviluppo "verso l'alto"

Salve a tutti!
L'oggetto è un po' contorto, spero di essere più chiaro con una breve
descrizione.
Ho un database abbastanza strutturato e complesso fatto e finito.
Riguarda un elenco di prove di collaudo per un certo impianto.
Ora vorrei modificare il dababase ampliandolo "verso l'alto", cioè
fare in modo, tramite un form all'avvio o qlc di simile, di poterne
creare uno nuovo con le stesse tabelle (vuote naturalmente), stesse
maschere e stessa struttura.
E' una cosa fattibile?
Grazie!

 ha scritto nel messaggio 
news:1163099031.6...@m73g2000cwd.googlegroups.com...
Salve a tutti!
L'oggetto č un po' contorto, spero di essere piů chiaro con una breve
descrizione.
Ho un database abbastanza strutturato e complesso fatto e finito.
Riguarda un elenco di prove di collaudo per un certo impianto.
Ora vorrei modificare il dababase ampliandolo "verso l'alto", cioč
fare in modo, tramite un form all'avvio o qlc di simile, di poterne
creare uno nuovo con le stesse tabelle (vuote naturalmente), stesse
maschere e stessa struttura.
E' una cosa fattibile?
Grazie!
Scusa, ma fammi capire, vorresti dal tuo db, con un click su un pulsante, creare un nuovo db ed 
esportarci tutto ma proprio tutto (dati esclusi) il contenuto dello stesso database?
Una soluzione potrebbe essere copiare il db corrente con nuovo nome, svuotarlo di tutte le tabelle 
non di sistema e di compattarlo.
Prova su evento click di un eventuale pulsante  scrivere questa funzione
-------------------------------------------------------
On Error Resume Next
Dim AppAcc As New Access.Application
Dim MySys As Scripting.FileSystemObject
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim rcd As DAO.Recordset
Dim Errore_intref as Boolean
Dim Strdest As String
Strdest = Left(Application.CurrentProject.FullName, Len(Application.CurrentProject.FullName) - 4) & 
" Nuovo.mdb"
Err.Clear
Set MySys = CreateObject("scripting.filesystemobject")
'copia il db corrente nel nuovo file ...nuovo.mdb
MySys.CopyFile Application.CurrentProject.FullName, Strdest, False
'se si verifica errore, messaggio e uscita
If Err <> 0 Then
    MsgBox "Impossibile creare il nuovo database", vbExclamation, "Informazione"
    Set MySys = Nothing
    Exit Function
End If
Set db = DBEngine.OpenDatabase(Strdest)
Ricomincia:
Errore_intref = False
For Each tbl In db.TableDefs
Err.Clear
If Not Left(tbl.Name, 4) = "Msys" Then
    Set rcd = db.OpenRecordset(tbl.Name, dbOpenDynaset)
    Do While Not rcd.EOF
        rcd.Delete
'si verifica errore se la cancellazione avviene su una tabella che possiede record correlati
        If Err <> 0 Then
            Errore_intref = True
            GoTo Fuori
        End If
        rcd.MoveNext
    Loop
Fuori:
    rcd.Close
End If
Next tbl
If Errore_intref Then GoTo Ricomincia
Set rcd = Nothing
Set tbl = Nothing
db.Close
Set db = Nothing
AppAcc.OpenCurrentDatabase Strdest, True
AppAcc.DoCmd.RunCommand acCmdCompactDatabase
AppAcc.CloseCurrentDatabase
AppAcc.Quit
Set AppAcc = Nothing
--------------------------------------------
hai bisogno dei riferimenti "DAO 3.6 object library" e  "Microsoft Scripting Runtime".
Io l'ho provata e sembrerebbe funzionare...............
Attento che se hai tabelle collegate questa routine te le svuota tutte, non fa distinzione. Prova su 
una copia (della copia(della copia)) del tuo db.
Fammi sapere
Michele 

 svuotarlo di tutte le tabelle
Ciao Michele
ma allora non sarebbe più semplice fare una copia del db ed importare tutto?
File-> carica dati esterni-> importa-> opzioni : solo definizione
forse non ho capito niente ... :)
Daniele

Ciao Michele
Qui in ufficio mancano le librerie. Appena ho il notebook sotto mano
provo per bene e poi ti faccio sapere.
Grazie per esserti interessato

 ma allora non sarebbe piů semplice fare una copia del db ed importare tutto?
Si, ma perderesti tutto quello che č commandbar, riferimenti, opzioni, opzioni di avvio ecc....
Per fare una cosa del genere, io e Silvio stiamo preparando un db che esegue questa operazione, ma 
siamo un pň indietro.
Michele

 Michele
Ciao
Daniele 

Ciao Michele!
Ho provato a scrivere il tuo codice ma mi dà svariati errori.
Ho seguito anche altre strade ma il risultato è stato pessimo, forse
per l'elevato numero di correlazioni tra tabelle.
Non importa, ho lasciato perdere. Se mai qualcuno vorrà fare una copia
del database useranno il metodo classico del copia-incolla.
Grazie comunque!
Ciao!

 ha scritto nel messaggio 
news:1163579504....@e3g2000cwe.googlegroups.com...

Che tipo di errori è che ti da? Che access usi?
Michele