Access y Visual 6.0

Hola: Tengo una base de datos la cual le coloque una contraseña por el menu de herramientas,
seguridad, establecer contraseña. Utilizo una conexión desde Visual Basic
con esta base de datos ODBC le enviola contraseña y todo funciona.
Resulta que necesito otra base de datos y hacer actualizaciones a la base que tengo abierta.
La pregunta es como hago para abrir desde Visual basic
esta base de datos sin utilizar ODBC ya que no solo tengo que abrir una sino varias bases
que pueden tener nombre distinto, pero la contraseña es la misma.

2 Respuestas

Respuesta
1
La contraseña no importa, puede ser distinta. La apertura de las tablas no necesita ODBC ya que lo hago con OLE DB.
Aquí tienes un código de ejemplo:
Public gcnnBD1 As ADODB.Connection
Public gcnnBD2 As ADODB.Connection
Public gcnnBD3 As ADODB.Connection
Public gCadCnnBD1 as String
Public gCadCnnBD2 as String
Public gCadCnnBD3 as String
Public Sub gpAbreConexion()
dim sBase1 as String
dim sBase2 as String
dim sBase3 as String
dim sPassword1 as String
dim sPassword2 as String
dim sPassword3 as String
sBase1 = App.Path & "\Base1.mdb
sPassword1 = "Algo1"
gCadCnnBD1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sBase1 & ";Persist Security Info=False;Jet OLEDB:Database Password=" & sPassword1
Set gcnnBD1 = New ADODB.Connection
gcnnBD1.ConnectionString = gCadCnnBD1
gcnnBD1.Open
sBase2 = App.Path & "\Base2.mdb
sPassword2 = "Algo2"
gCadCnnBD2 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sBase2 & ";Persist Security Info=False;Jet OLEDB:Database Password=" & sPassword2
Set gcnnBD2 = New ADODB.Connection
gcnnBD2.ConnectionString = gCadCnnBD2
gcnnBD2.Open
sBase3 = App.Path & "\Base3.mdb
sPassword3 = "Algo3"
gCadCnnBD3 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sBase3 & ";Persist Security Info=False;Jet OLEDB:Database Password=" & sPassword3
Set gcnnBD3 = New ADODB.Connection
gcnnBD3.ConnectionString = gCadCnnBD3
gcnnBD3.Open
End Sub
Luego puedes abrir Recordsets para cualquiera de las bases. Suponiendo que fuera a la segunda
dim rsTabla1 as ADODB.Recordset
Set rsTabla1 = New ADODB.Recordset
rsTabla1.CursorLocation = adUseClient
rsTabla1.CursorType = adOpenStatic
rsTabla1.LockType = adLockOptimistic
RsTabla1. Open "Select * From Tabla1", gcnnBD2
Si tienes alguna duda dímelo
Respuesta
1
Perdona pero no entiendo tu dificultad. Parece que el problema lo tienes porque la base de datos tiene una contraseña, sin embargo me dices que puedes abrir perfectamente una base de datos protegida con contraseña. Si puedes abrir una, lo mismo puedes abrir más de una.
Luego me dices que no quieres utilizar ODBC como si el usar ODBC fuese la causa del problema. ¿Es qué ODBC no permite abrir más de una base de datos? No recuerdo haber hecho nunca un acceso por ODBC con más de una base de datos, pero desde luego el acceso directo admite varias bases de datos simultáneamente abiertas.
En fin si estás dispuesto a usar DAO, que desde luego admite varias bases de datos, simultáneamente abiertas no tienes más que proporcionar la password en la sentencia OpenDatabase
No se si he resuelto tu duda. Si no es así, aclarame donde está la dificultad, porque no la veo
Mira con este código estoy abriendo la base de datos en este momento.
Dim mBase1 As Database
Set mBase1 = OpenDatabase(OpenFile.mLblFileOpen)
Set mMuestraActualiza = mBase1.OpenRecordset("SELECT * from TABLA WHERE Identifica = 0 ", dbOpenDynaset)
Do While Not mMuestraActualiza.EOF
Identifica = mMuestraActualiza(0).Value
Update ???????????????
loop
La pregunta es como le envío los parámetros de la contraseña a la
Base de datos en el opendatabase.
Ademmas te podría preguntar cual es la sentencia para actualizar (update)
Un dato sobre esta misma base. Dime si me sirve algo de lo que tengo aquí o si esta mal.
La apertura de la base de datos se hace con una instrucción tipo:
Set mBase1 = OpenDatabase ("c:\MiBase.mdb",,, "pwd=MiContraseña"
La definición del Recordset es correcta
En el bucle, si lo que quieres es leer la variable Identifica desde la base de datos, el código sería:
Do While Not mMuestraActualiza.EOF
Identifica = mMuestraActualiza.Fields(0).Value
mMuestraActualiza.MoveNext
loop
Y si lo que quieres es actualizar la base de datos con el valor de la variable identifica, el código es:
Do While Not mMuestraActualiza.EOF
mMmMuestraActualiza.Edit
mMuestraActualiza
.fields(0).Value=Identifica
mMmMuestraActualiza.Update
mMuestraActualiza.MoveNext
loop
Y si quieres añadir registros sería:
mMmMuestraActualiza.AddNew
mMuestraActualiza
.fields(0).Value=Identifica
mMmMuestraActualiza.Update

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas