Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Como puedo obtener mediante VBA el valor de un campo de una subconsulta

Estas en el tema de Como puedo obtener mediante VBA el valor de un campo de una subconsulta en el foro de Bases de Datos General en Foros del Web. Buenas tardes. Como el titulo dice, estoy necesitando obtener el valor de una subconsulta. El codigo vba es el siguiente @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código vb: Ver ...
  #1 (permalink)  
Antiguo 16/09/2014, 15:10
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 22
Como puedo obtener mediante VBA el valor de un campo de una subconsulta

Buenas tardes.

Como el titulo dice, estoy necesitando obtener el valor de una subconsulta.

El codigo vba es el siguiente


Código vb:
Ver original
  1. Sub comprueba_usuario()
  2.  
  3. Dim miconexion As New ADODB.Connection
  4.  
  5. Dim mirecorset As New ADODB.Recordset
  6.  
  7. Dim instruccion As String
  8.  
  9. Set miconexion = CurrentProject.Connection
  10.  
  11. Dim INS As String
  12.  
  13.  
  14. instruccion = "SELECT * FROM empleados AS t1 WHERE (Exists (SELECT t2.idusuario as app  FROM usuarios as t2 WHERE t1.Nombre_Completo like '%'+t2.Nombre+'%' and t1.Nombre_Completo like '%'+t2.Apellido+'%'));"
  15.  
  16. mirecorset.Open instruccion, miconexion
  17.  
  18. While mirecorset.EOF = False
  19.  
  20. 'En la consulta del select al campo t2.idusuario lo renombré como app. Necesito obtener el valor del campo t2.idusuario para poder actualizar el campo del idusuario de la tabla empleados pero me da un error. en la línea siguiente
  21.  
  22. INS = "UPDATE empleados SET idusuario ='" & mirecorset!app & "' where id=" &id
  23.  
  24. DoCmd.RunSQL INS
  25.  
  26. 'Debug.Print mirecorset!Nombre_completo
  27.  
  28. mirecorset.MoveNext
  29.  
  30.  
  31. Wend
  32.  
  33. mirecorset.Close
  34. Set mirecorset = Nothing
  35. miconexion.Close
  36. Set miconexion = Nothing
  37.  
  38.  
  39. End Sub
  #2 (permalink)  
Antiguo 16/09/2014, 15:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como puedo obtener mediante vba el valor de un campo de una subconsulta

El resultado de la subconsulta no existe en ese contexto. Solo existe dentro de sí misma, porque únicamente válida el TRUE o FALSE. Nada mas.
Los únicos datos recuperablesson los del SELECT.
Para lo que quieres deberías usar JOIN.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 16/09/2014, 20:24
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 22
Respuesta: Como puedo obtener mediante vba el valor de un campo de una subconsulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
El resultado de la subconsulta no existe en ese contexto. Solo existe dentro de sí misma, porque únicamente válida el TRUE o FALSE. Nada mas.
Los únicos datos recuperablesson los del SELECT.
Para lo que quieres deberías usar JOIN.
Gracias por responder, pero como puedo solucionar esto ya que no puedo hacer un join sino tengo un campo en común. Hay algo que se me ocurrió pero me sale que la operación de la consulta debe ser actualizable y es esto:

Código MySQL:
Ver original
  1. Dim ins as string
  2.  
  3. ins = "update empleados as t1 set t1.idusuario=(SELECT t2.idusuario as app  FROM usuarios as t2 WHERE t1.Nombre_Completo like '%'+t2.Nombre+'%' and t1.Nombre_Completo like '%'+t2.Apellido+'%')"
  4.  
  5. Docmd.runsql ins
  #4 (permalink)  
Antiguo 21/09/2014, 06:35
(Desactivado)
 
Fecha de Ingreso: septiembre-2008
Mensajes: 269
Antigüedad: 16 años, 2 meses
Puntos: 22
Respuesta: Como puedo obtener mediante VBA el valor de un campo de una subconsulta

Buenos días.

Pude obtener lo que necesitaba de la siguiente manera: como tenia dos tablas sin campos en común y con diferentes registros cree un campo llamado por ejemplo ""
Unir_tablas y a todos los registros les puse el valor 1.

Cree un inner join y esa información la pase a otra tabla. Realice la siguiente consulta y listo.

Código SQL:
Ver original
  1. SELECT * FROM nuevatabla AS t1
  2. WHERE (EXISTS (SELECT t2.idusuario AS app  FROM usuarios AS t2
  3.          WHERE t1.Nombre_Completo LIKE '*'+t2.Nombre+'*' AND t1.Nombre_Completo LIKE '*'+t2.Apellido+'*'));"

Última edición por gnzsoloyo; 21/09/2014 a las 16:53

Etiquetas: campo, mediante, subconsulta, tabla, valor, vba
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 03:10.