Newsgroup: it.comp.appl.access
Titolo: DoCmd.CopyObject - DB con password

Un saluto a tutti i partecipanti al NG.
In questa riga di comando non riesco ad inserire correttamente la password
del DB di destinazione, e quindi non copia l'oggetto richiesto senza
l'immissione della password manualmente:
DoCmd.CopyObject "c:\miodb.mdb", tbl.Name, acTable, tbl.Name
grazie per l'aiuto che potrete darmi.
Un saluto a tutti ed i migliori auguri di un sereno Natale a tutto il Group.
Ciao - Daniele
 
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


questa la sintassi:
DoCmd.CopyObject(DatabaseDestinazione, NuovoNome, TipoOggettoOrigine, 
NomeOggettoOrigine)
Penso tu debba aprire prima il db con il metodo OpenDatabase e passargli la 
stringa di connessione con la pwd e poi usare copyObject.
Ciao, Carlo 

 Ciao, Carlo
 
  Carlo ti ringrazio.
Ciao e tanti auguri di buon Natale.


 Ciao, Carlo
Carlo scusami
ho provato ad aprire il db come oggetto DAO, ma il problema sussiste. Sembra
che il metodo CopyObject, lavori indipendentemente dall'apertura o meno
dell'oggetto db "DAO".
Forse sto sbagliando qualcosa che non capisco.
Se hai qualche altro suggerimento ti ringrazio in anticipo.



Puoi specificare esattamente cosa vuoi fare?
Da un db esterno all'attuale.
Dal corrente ad uno esterno
Questo un esempio:
Set db = OpenDatabase("c:\db1.mdb", False, False, "; pwd=pass")
DoCmd.CopyObject "c:\Db1.mdb", "Tabella12", acTable, "Tabella1"
Oppure:
Set db = OpenDatabase("c:\db1.mdb", False, False, "; pwd=pass")
With db
DoCmd.TransferDatabase acExport, "Microsoft Access", "c:\db1.mdb", acTable, 
"Tabella1", "Tabella1234"
End With
Ciao, Carlo 

 DoCmd.CopyObject "c:\Db1.mdb", "Tabella12", acTable, "Tabella1"
Faccio un ciclo sulle tabelle del db corrente e le copio sul db esterno
usando l'oggetto docmd.
Ciao Daniele



Allora l'esempio che ti ho inviato è perfetto...devi solo aggiungere il 
ciclo sulle tabelle magari prendendole da una query del tipo:
SELECT MSysObjects.Name, MSysObjects.Type
FROM MSysObjects
WHERE (((MSysObjects.Name) Not Like "MSys*") AND ((MSysObjects.Type)=1));
Fammi sapere.
Ciao, Carlo 

 Ciao, Carlo
Carlo ti allego il codice che sto tentando di far funzionare :
Dim db As DAO.Database, tbl As DAO.TableDef, dbint As DAO.Database
Set db = OpenDatabase("i:\MBanner.mdb", False, 0, ";pwd=PASS")
For Each tbl In db.TableDefs
If (tbl.Attributes And dbSystemObject) Then
Else
sql = "drop table [" & tbl.Name & "]"
db.Execute sql
End If
Next
Set dbint = CurrentDb
DoCmd.Hourglass True
For Each tbl In dbint.TableDefs
If (tbl.Attributes And dbSystemObject) Then
Else
==> DoCmd.CopyObject "i:\mbanner.mdb", tbl.Name, acTable, tbl.Name<==
End If
 
prima apro db per cancellare tutte le tabelle. Poi sempre tenendo aperto db,
copio le tabelle da currentdb. Su questa riga di comando ==> <== il codice
mi chiede sempre la password per ogni tabella che copia.
Ciao - Daniele



Questo un esempio di codice funzionante:
Public Function CopiaOggetto()
Dim db As Database
Dim rcs As Recordset, i As Integer
Set db = OpenDatabase("c:\db1.mdb", True, False, "; pwd=pass")
db.NewPassword "pass", ""
db.Close
Set db = Nothing
    Set db = OpenDatabase("c:\db1.mdb", False, False)
        Set rcs = CurrentDb.OpenRecordset("Query2")
            rcs.MoveLast
            rcs.MoveFirst
            For i = 1 To rcs.RecordCount
                With db
                DoCmd.TransferDatabase acExport, "Microsoft Access", 
db.Name, acTable, rcs![Name], rcs![Name]
                End With
            rcs.MoveNext
            Next i
            rcs.Close
            Set rcs = Nothing
    db.Close
    Set db = Nothing
        Set db = OpenDatabase("c:\db1.mdb", True, False)
        db.NewPassword "", "pass"
        db.Close
        Set db = Nothing
End Function
In pratico apro il db esclusivo con la password, poi tolgo la password e 
chiudo il db
Lo riapro in condiviso e faccio le operazioni; lo chiudo e lo riapro in 
esclusivo, rimetto la password e lo richiudo.
Ciao, Carlo 


Ti ho già dato la risposta prima di leggere questo post.
In pratica devi aprire il db in esclusivo con la password e poi eliminarla e 
fare tutte le operazioni che vuoi.
Alla fine rimetti la password.
Ciao, Carlo 


 
Carlo scusami se non ti ho ringraziato ieri sera ma mi sono dovuto assentare
per un impegno improvviso.
Grazie per l'aiuto e ancora tanti auguri di Buon Natale.
Ciao - Daniele



 
Carlo scusami se non ti ho ringraziato ieri sera ma mi sono dovuto assentare
per un impegno improvviso.
Grazie per l'aiuto e ancora tanti auguri di Buon Natale.
Ciao - Daniele
