problema con el ado y la ubicacion de la base de datos

dradana2003
04 de Agosto del 2004
estoy trabajando con un programa y utilizo el ado, hasta ahora todo iba bien hasta que el usuario quiere, poder localizar la base de datos en acces, en la red, yo siempre habia trabajado en maquinas locales por facor, hay alguna forma de lograr esto en tiempo de ejecucion y si pudieras poner un codigo mejos

saludos

krizall
04 de Agosto del 2004
hola dradana... puedes usar una variable string como ruta de tu bd en lugar de poner una ruta especifica

por ejemplo en un form de cofiguracion sacar la ruta actual de la bd

pro ejemplo

en un modulo declarar

public Rutabd as string

en un form con un comondialog

private buscarbd

cd.showopen
rutabd=cd.filename

end sub

ahora cada ves que te conectes a tu bd solo cambia la ruta qeu tienes por rutabc



bueno, esto es solo un ejemplo, de ahi te puedes basar para sacar el modulo a como tu lo quieras

si necesitas algo no dudes en escribir qeu para eso esta el foro y tambien puedes escribirme, que si puedo te hecho una manito

suerte

Buyeya
04 de Agosto del 2004
hola, yo lo uso asi y anda bárbaro, asi cargas la base desde donde se ejecuta la aplicación..
si, querés sustitui el App.path por una variable hacia la ruta, donde este la base.. y si la quiere buscar, usa un commondialog

strCon = "DSN=MS Access;DBQ="
strCon = strCon & App.Path "Data.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=512;PageTimeout=5;PWD=XXX;UID=admin;"

With cnCon
.ConnectionString = strCon
.ConnectionTimeout = 10
'No sirve si la base está en uso
.Open
End With

Espero te sirva, un saludo

dradana2003
04 de Agosto del 2004
OYE ME DICES QUE SI LA BASE DE DATOS ESTA EN USO NO SIRVE Y SI NECESITO QUE OTRO ADO SE CONECTE Y ENCUANTRA LA BASE DE DATOS EN USO QUE HAGO, POR OTRO LADO DECLARANDO TODO ESTO EN LOS CODIGOD SUPONGO QUE NECESITAREMOS DECLARAR LA TABLA DONDE VAMOS A TRABAJAR Y NO SE COMO HACER ESO
GRACIAS

semperfimxl
04 de Agosto del 2004
Como te mencionaron antes, utiliza el CommonDialog para ubicar la ruta hacia tu base de datos.

Usa dicha ruta en tu rutina de conexion ...
Respecto a las tablas no tienes que redefinir nada...


Dim oConn As ADODB.Connection
Dim oRecordset As ADODB.Recordset

Private Sub Form_Load()
On Error GoTo Cambiar_Proveedor

Set oConn = New Connection
oConn.Provider = "Microsoft.Jet.OLEDB.3.51" ' <- Access 97 !!
oConn.Properties("Data Source").Value = cRuta_MDB
oConn.Properties("Password").Value = "xxx"

Intentar_Conexion:
oConn.Open

On Error GoTo 0 ' Resumimos el tratamiento normal de errores

Set oRecordset = New Recordset

oRecordset.Open "Tabla1", oConn, adOpenKeyset, adLockOptimistic
If Not oRecordset.BOF Then
oRecordset.MoveFirst
Do While Not oRecordset.EOF
lstUsuarios.AddItem oRecordset.Fields("Campo1") & vbCr
oRecordset.MoveNext
Loop
End If

Exit Sub

Cambiar_Proveedor:
' Si se genero error al tratar de abrir con Access 97
' entonces prueba tratando de abrir con Access 2000

If oConn.Provider = "Microsoft.Jet.OLEDB.3.51" Then
Set oConn = New Connection
oConn.Provider = "Microsoft.Jet.OLEDB.4.0" '<- Access 2000 !!
oConn.Properties("Data Source").Value = cRuta_MDB
oConn.Properties("Password").Value = "xxx"
GoTo Intentar_Conexion
End If

' Si ya se cambio a Access 2000 y persiste el error entonces
' notificamos al usuario y cerramos la forma ...

MsgBox "Error( " & Err.Number & ") !!" & vbCrLf & _
Err.Description
Unload Me

End Sub