Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Usar Objects como cursores de SQL

Estas en el tema de Usar Objects como cursores de SQL en el foro de Visual Basic clásico en Foros del Web. Hola, tengo un módulo con el siguiente código: Código: Option Explicit Public cnConexion As ADODB.Connection Public rsRegistro As ADODB.Recordset Public dirAplicacion As String 'Asignamos valores ...
  #1 (permalink)  
Antiguo 02/06/2008, 02:07
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Usar Objects como cursores de SQL

Hola, tengo un módulo con el siguiente código:
Código:
Option Explicit
Public cnConexion As ADODB.Connection
Public rsRegistro As ADODB.Recordset
Public dirAplicacion As String


'Asignamos valores a la conexión.
Public Sub Conexion()
    ChDir dirAplicacion
    ChDrive dirAplicacion
    Debug.Print dirAplicacion
    Set cnConexion = New ADODB.Connection
    cnConexion.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; data source=" & dirAplicacion & "\jardineria.mdb"
    cnConexion.CursorLocation = adUseClient
    cnConexion.Open
End Sub

'Carga el recordset.
Public Function Cargar(sSource As String)
    Set rsRegistro = New ADODB.Recordset
    rsRegistro.ActiveConnection = cnConexion
    rsRegistro.CursorType = adOpenDynamic
    rsRegistro.LockType = adLockOptimistic
    rsRegistro.Source = sSource
    If rsRegistro.State = adStateOpen Then
        rsRegistro.Close
    End If
    rsRegistro.Open
End Function
Ya pregunté una vez sobre utilizar este módulo con objetos y como se haría, pero nadie me respondió.
Me explico. Lo que quería hacer era usar "cursores" en donde almacenar los resultados y poder operar con ellos.

Nunca lo había usado, asique me puse a probar y llegué a que esto me funciona:
Dim tbCusor as Object

Set tbCursor=cargar("Select * From Clientes")

Do while tbCusor.eof
.....
Loop

No sé si esto que hago está bien hecho o es "eficiente", pero es la única cosa que he sido capaz de hacer y que funcionara.

Me gustaría que me dijerais si está bien hacer esto o hay formas mejore de realizar esto.

Gracias y un Saludo!
  #2 (permalink)  
Antiguo 02/06/2008, 03:07
Colaborador
 
Fecha de Ingreso: enero-2008
Ubicación: Unas veces aquí, otras veces allí
Mensajes: 1.482
Antigüedad: 16 años, 3 meses
Puntos: 37
Respuesta: Usar Objects como cursores de SQL

Hola, una crítica constructiva:

Ese código, tal y como está escrito, no puede funcionar.
- En la conexión no aplicas ningún valor a la ariable "dirAplicacion", supongo que aquí quieres utilizar la ruta de la aplicación. Para esto es mas eficiente usar App.Path.

- La función Cargar debe de devolver un recordset para que funcione el objeto. En esta función la instrucción If sobra, ya que al asignar rsRegistro como nuevo recordset, lo cierra si está abierto.

Bueno, yo pondría el código así:

Código:
Option Explicit
Public cnConexion As ADODB.Connection
Public rsRegistro As ADODB.Recordset

Public Sub Conexion()
    Set cnConexion = New ADODB.Connection
    cnConexion.ConnectionString = "Provider=Microsoft.Jet.Oledb.4.0; data source=" & App.Path & "\jardineria.mdb"
    cnConexion.CursorLocation = adUseClient
    cnConexion.Open
End Sub

'Carga el recordset.
Public Function Cargar(sSource As String)
    Set rsRegistro = New ADODB.Recordset
    rsRegistro.ActiveConnection = cnConexion
    rsRegistro.CursorType = adOpenDynamic
    rsRegistro.LockType = adLockOptimistic
    rsRegistro.Source = sSource
    rsRegistro.Open
    Set Cargar = rsRegistro
End Function
  #3 (permalink)  
Antiguo 02/06/2008, 03:36
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años
Puntos: 1
Respuesta: Usar Objects como cursores de SQL

Lo de dirApliación, mea culpa...xD
En el formLoad del MdiPrincipal asigno dirApliacion=App.path
Esto lo hago por unos errores que ya comenté en otro post, que cuando uso un commonDialog para guardar o abrir algo, a continuación me saltaba un error al pasar por ahí.
Lo del If creo que lo puse una vez porque me saltara un error y al ponerlo se solucionaba....pero ya digo que creo, porque recuerdo que originalmente no se lo tenía.

Gracias por responder!
Un Saludo y Gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:44.