46 messaggi dal 11 novembre 2002
Sviluppo con VB.NET 1.1.

Utilizzando ADODB faccio delle modifiche ad un DataBase in Access e lo chiudo.
Poi subito lo riapro in modo esclusivo per assegnargli una PassWord.

Ma nell'apertura in modo esclusivo da errore dicendo che è già aperto.
Se esco dal programma e rientro mi permette di assegnare la password.

I comandi utilizzati sono i seguenti:

Dim cnTmp As ADODB.Connection = New ADODB.Connection

cnTmp.Provider = "Microsoft.Jet.OLEDB.4.0;Data Source=" & strPth & ";"
cnTmp.Properties.Item("Jet OLEDB:Database Password").Value = strPwd
cnTmp.Mode = ADODB.ConnectModeEnum.adModeRead
cnTmp.Open()
cnTmp.Close()

cnTmp = nothing

cnTmp.Mode = ADODB.ConnectModeEnum.adModeShareExclusive

cnTmp.Open()
cnTmp.Execute(strCmd)

cnTmp = Nothing

C'è un modo per fare in modo che la Close della connessione funzioni in modo completo?

Ciao a tutti e grazie.
Paolo
547 messaggi dal 24 maggio 2002
Contributi
Ciao Paolo, ci sono due o tre cose che non mi convincono nel codice che hai postato (credo siano dovute dal fatto che lo sciprt è di esempio...) comunque:

secks ha scritto:
cnTmp.Open()
cnTmp.Close()

in mezzo no ci fai niente?

cnTmp = nothing
cnTmp.Mode = ADODB.ConnectModeEnum.adModeShareExclusive

Se setti l'oggetto cnTmp a nothing e poi cambi le proprietà non credo che possa funzionare. L'oggetto è formalmente "cancellato".

In più ti consiglierei di provare ad eseguire le due operazioni con due objConnection diversi..

Spero di esserti stato utile, Marco.
46 messaggi dal 11 novembre 2002
E' vero, ho posto solo un esempio in formato ridotto.
Questo è l'esempio completo.
Alla fine, sull'open della sub Pwd mi dice che non può aprirlo, nonostante siano state chiuse tutti gli oggetti nella sub Crea.
Grazie x l'attenzione e ciao.
Paolo.

private sub Crea
Dim ctTmp As New ADOX.Catalog
Dim cmdTmp As New OleDbCommand
Dim dcnTmp As New OleDbConnection

With ctTmp
.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + strPathLis + ";")
End With

dcnTmp = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & LibGenDef.AUXPATHLOCALTMP)
dcnTmp.Open()
strSql = "SELECT * INTO [TabGen] IN '" + strPathLis + "' FROM TabGen WHERE lis_cod = '" + y("tmp_cod") + "'"
cmdTmp = New OleDbCommand(strSql, dcnTmp)
cmdTmp.ExecuteNonQuery()

ctTmp = Nothing

cmdTmp.Connection.Close()
cmdTmp.Dispose()

dcnTmp.Close()
dcnTmp.ReleaseObjectPool()
dcnTmp.Dispose()

End Sub

private sub Pwd
Dim strPwd As String = "Pippo"
Dim sCmd As String = "ALTER DATABASE PASSWORD [" + strPwd + "] NULL;"
Dim cnTmp As ADODB.Connection
Dim strPathLis As String = LibGenDef.LISTINIPATH + DIRLIS + y("tmp_cod") + "\Listino" + ".mdb"

cnTmp = New ADODB.Connection
With cnTmp

.Provider = "Microsoft.Jet.OLEDB.4.0;Data Source=" + strPathLis + ";"

.Mode = ADODB.ConnectModeEnum.adModeShareExclusive
.Open()

.Execute(sCmd)

End With

cnTmp = Nothing

End Sub

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.