Access - Pasar de DAO a ADO

 
Vista:

Pasar de DAO a ADO

Publicado por jose Luis (30 intervenciones) el 09/04/2007 21:30:23
No se si el tema es dificil, tengo un formulario en el cual busco unos campos de una tabla de la base de datos con el codigo siguiente;
Dim rs As DAO.Recordset
Dim nume As Integer
If Me.tipmod = 1 Then
nume = Me.tipmod
Else
nume = 0
End If
Dim strSQL As String
strSQL = "SELECT gastos.* FROM gastos WHERE gastos.tipgas=" & nume
Set rs = CurrentDb.OpenRecordset(strSQL, DbOpenSnapshot)
Me.mpg1.Value = (rs!pg1)

quisiera pasar esto a ADO

me podeis decir como se haria?
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pasar de DAO a ADO

Publicado por Enrique (1299 intervenciones) el 09/04/2007 22:53:33
Hola José Luis:
Esta sería, más o menos, la traducción de tu código de DAO a ADO:

'En la Sección de Declaraciones de la Ventana de código del Formulario:
Private cn As ADODB.Connection
Private rs As ADODB.Recordset
-----------------------------------------------------------------
Private Sub..........( ) '<---- El Evento que creas conveniente
Dim nume As Integer
If Me.tipmod = 1 Then
nume = Me.tipmod
Else
nume = 0
End If
Set rs = New ADODB.Recordset
Set cn = Application.CurrentProject.Connection
rs.Open "SELECT * FROM gastos WHERE tipgas=" & nume, cn '<--- Solo lectura
If Not rs.EOF Then
Me.mpg1 = rs!pg1
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End If
End Sub

La línea del Open se deja como te la pongo porque veo que abres el Recordset solo para lectura, pero si fuera para grabar a la Tabla sería:
rs.Open "SELECT * FROM gastos WHERE tipgas=" & nume, cn, adOpenDynamic, adLockOptimistic

Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar de DAO a ADO

Publicado por Jose Luis (30 intervenciones) el 10/04/2007 09:42:19
Gracias por tu rapida respuesta enrique, lo acabo de probar con access 97 y me da un error "no se encontro el metodo o el dato miembro" en la linea Set cn = Application.CurrentProject.Connection , y se intensifica lo de CurrentProject. NO vale esto para el 97?, o habre echo algo mal.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar de DAO a ADO

Publicado por Enrique (1299 intervenciones) el 10/04/2007 18:21:48
Hola José Luis:
Pués no, para Access 97 no vale CurrentProject porque el 97 no tiene esa propiedad, pero la puedes sustituir por: Application.CurrentDb.Name, aunque tendrás que cambiar la línea del cn.Open:

Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=" & Application.CurrentDb.Name & ";"
rs.Open "SELECT * FROM gastos WHERE tipgas=" & nume, cn
If Not rs.EOF Then
......
......
Todo lo demás igual que antes, inclusive las Declaraciones al principio del módulo del formulario, así como lo más importante que es marcar la Referencia:
Microsoft ActiveX Data Objects 2.X Library, donde X puede ir del 1 al 7 (creo recordar). Con la 2.1 debe de ir bien, pero si encuentras la 2.5 mejor. En Access 97 la referencia que entra marcada por defecto es la de DAO: Microsoft DAO 3.51 Object Library (la de ADO hay que marcarla expresamente).

Espero que ahora si te funcione bien.
Saludos
Enrique
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar de DAO a ADO

Publicado por jose luis (30 intervenciones) el 10/04/2007 18:59:24
muchas gracias enrique, seguro que funcionara, en cuanto pueda probarlo te lo digo. Y repito las gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar de DAO a ADO

Publicado por jose luis (30 intervenciones) el 10/04/2007 20:08:31
Enrique lo he probado ya en access 2000 y funciona de maravilla.
Muchisimas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Pasar de DAO a ADO

Publicado por Enrique (1299 intervenciones) el 10/04/2007 20:21:34
Me alegro, José Luis, pero ya sabrás que en Access 2000 lo puedes hacer como te dije al principio y no necesitas usar el motor Jet 3.51 ni el 4.0 de Microsoft, si la tabla con la que conectas está en la base activa.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar