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

Recordset dentro de otro

Estas en el tema de Recordset dentro de otro en el foro de Visual Basic clásico en Foros del Web. Hola a todos. Hace tiempo que postée un tema similar al que me ocurre y no le pude encontrar solucón.. Veran lo que necesito es ...
  #1 (permalink)  
Antiguo 28/06/2011, 11:05
 
Fecha de Ingreso: agosto-2007
Mensajes: 77
Antigüedad: 17 años, 4 meses
Puntos: 0
Recordset dentro de otro

Hola a todos. Hace tiempo que postée un tema similar al que me ocurre y no le pude encontrar solucón..

Veran lo que necesito es que mi aplcacion mientras está recorriendo un recordset, haga otro dependiendo del valor de un campo.

Un ejemplo seria

rs.Source = "SELECT Id, Nombre, Dirección, NIF FROM Personas ORDER BY Nombre"

Y mientras recorro este recordset

rs2.Source = "SELECT Supervisor FROM Supervisore WHERE Persona = '" & rs!nombre & "'.

Algo así si me explico. La BBDD de datos no es mía y no la puedo tocar, ya se que relacinándolo funcionaría, pero no puedo modificar nada. Lo tengo que hacer por la aplicación.

Les paso el código que hago servir:

Dim rs2 As Recordset
Set rs2 = New Recordset
connectar
LvEscriptors.ListItems.Clear
While Not rs.EOF
Set ObjItem = LvEscriptors.ListItems.add(, , rs(0))
ObjItem.SubItems(1) = rs!titulo & ""
ObjItem.SubItems(2) = rs!Nombre & ""
ObjItem.SubItems(3) = rs!País & ""
rs2.Source = "SELECT Propietario.Nombre FROM Propietario INNER JOIN Editoriales ON Propietario.IdPropietario = Editoriales.Propietario WHERE (((Editoriales.Nombre)='" & rs!Nombre & "'))"
ObjItem.SubItems(4) = rs2!Nombre & ""
ObjItem.SubItems(5) = rs!País & ""
ObjItem.SubItems(6) = rs!Contacto & ""
ObjItem.SubItems(7) = rs!FechaEnv & ""
ObjItem.SubItems(8) = rs!FechaReb & ""
ObjItem.SubItems(9) = rs!FechaCon & ""
ObjItem.SubItems(10) = rs!FechaCa & ""
ObjItem.SubItems(11) = rs!anticipo & ""
ObjItem.SubItems(12) = rs!Observaciones & ""
rs.MoveNext
Wend
rs.Close

En la línea donde hago rs2!Nombre me da error siempre diciendo:
"La operación no está permitida si el objeto está abierto"

El rs primero si que la hago la connexion i funciona per no se hacer la segunda conexion (con rs2) mientras la otra está abierta y si cierro la conexíon rs, no me carga todo lo que quiero.

Espero haberme explicado bien ya que es bastante complejo, creo.

Muchas gracias por adelantado.
  #2 (permalink)  
Antiguo 28/06/2011, 11:23
Avatar de Kruzado  
Fecha de Ingreso: marzo-2007
Mensajes: 307
Antigüedad: 17 años, 9 meses
Puntos: 17
Respuesta: Recordset dentro de otro

tu mismo te das la respuesta... relacionala....
  #3 (permalink)  
Antiguo 28/06/2011, 11:25
 
Fecha de Ingreso: agosto-2007
Mensajes: 77
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Recordset dentro de otro

No puedo la BBDD no es mía, no la puedo tocar de tal i cómo está.
  #4 (permalink)  
Antiguo 28/06/2011, 12:18
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Recordset dentro de otro

Debes hacerlo así para la segunda conexión:

Código vb:
Ver original
  1. '...
  2. '...
  3.   ObjItem.SubItems(3) = rs!País & ""
  4.  
  5.    IF RS2.STATE=1 THEN RS2.CLOSE
  6.  
  7.    rs2.Source = "SELECT Propietario.Nombre FROM Propietario INNER JOIN Editoriales ON Propietario.IdPropietario = Editoriales.Propietario WHERE (((Editoriales.Nombre)='" & rs!Nombre & "'))"
  8.  
  9.    RS2.OPEN, CONEXION, adOpenDynamic , adLockOptimistic
  10.    IF RS2.EOF=FALSE THEN
  11. '...CODIGO
  12. '...CODIGO
  13.   END IF
  14.  
  15.    ObjItem.SubItems(4) = rs2!Nombre & ""
  16.    ObjItem.SubItems(5) = rs!País & ""
  17. '...
  18. '...
  #5 (permalink)  
Antiguo 01/07/2011, 09:02
 
Fecha de Ingreso: agosto-2007
Mensajes: 77
Antigüedad: 17 años, 4 meses
Puntos: 0
Respuesta: Recordset dentro de otro

En CONNEXION QUE PONGO? Ya tengo una conexión abierta y es por dónde me falla siempre por que me dice que la tengo abierta.


Gracias por tu respuesta
  #6 (permalink)  
Antiguo 01/07/2011, 10:47
Avatar de lokoman  
Fecha de Ingreso: septiembre-2009
Mensajes: 502
Antigüedad: 15 años, 2 meses
Puntos: 47
Respuesta: Recordset dentro de otro

En tu CODE hay una llamada a una sub CONNECTAR, que es donde (se supone) se establece la conexion a la base de datos. El nombre de la variable que usas para esa conexion es la que debes de poner.

Lo que te falla es el RECORDSET, no es la CONEXION de la BASE DE DATOS. Me explico:
Tienes un bloque WHILE NOT RS.EOF, tu estableces la conexion a la base ANTES del bloque, o sea, solo una vez.

Dentro del WHILE llamas VARIAS veces al MISMO RECORDSET (rs2), por lo que antes de abrirlo debes preguntar si ya está abierto, para entonces cerrarlo, ese es el CODE " IF RS2.STATE=1 THEN RS2.CLOSE "

Asi no te puede dar problemas, verifica y nos cuentas!

Etiquetas: recordset
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




La zona horaria es GMT -6. Ahora son las 19:21.