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

consulta seleccionando de formulario

Estas en el tema de consulta seleccionando de formulario en el foro de Bases de Datos General en Foros del Web. Hola. He hecho un "programilla" en acces, para usuarios de mi empresa. Pero tengo un problema. Creo una consulta, pero quiero que el usuario pueda ...
  #1 (permalink)  
Antiguo 30/10/2007, 10:57
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
consulta seleccionando de formulario

Hola. He hecho un "programilla" en acces, para usuarios de mi empresa.
Pero tengo un problema.
Creo una consulta, pero quiero que el usuario pueda decirle la variable para que la consulta busque los datos.
No se si me explico.
Por ejemplo, quiero que la consulta me diga cuantas horas se han dedicado a un proyecto concreto. Si le digo que coja el valor de un campo de un formulario, si no se escribe el nombre del proyecto entero no lo reconoce. Si convierto el campo del formulario en un campo combinado para que me seleccione de una lista, no me lo reconoce, me da error. Y como quiero que lo escoja el usuario, no quiero que entre cada vez en la consulta y cambie el valor.
Como puedo hacerlo?

Muchas gracias.

elissatt
  #2 (permalink)  
Antiguo 31/10/2007, 09:45
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

En la fila criterios de la consulta, en el campo donde quieras aplicar el filtro pon:

forms!Nombreformulario!nombreControl

o

formularios!Nombreformulario!nombreControl

dependiendo de la version de acces que tengas.

Hay otras formas de ahcerlo, para que esta funcione, el form ha de estar abierto en el momento de ejecutar la consulta.

un saludo
  #3 (permalink)  
Antiguo 31/10/2007, 09:55
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: consulta seleccionando de formulario

Hola Taribo. Esto me funciona cuando es un control normal. Si creo un control de lista, me da error, como si estuviera vacio y no me reconoce la selección.

Gracias por tu respuesta y tu ayuda.

Un saludo
  #4 (permalink)  
Antiguo 31/10/2007, 10:08
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Te refieres a una lista con seleccion multiple??? En ese caso, tendras que construir una sql por codigo con la consulta, recorrer la lista e ir concatenando los item seleccionados a la clausula where.

Un saludo
  #5 (permalink)  
Antiguo 31/10/2007, 10:11
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: consulta seleccionando de formulario

En ese caso tendré que estudiar más. Mi experiencia por desgracia no incluye leguaje sql, así que me limito a criterios simples.

Muchas gracias

Un saludo
  #6 (permalink)  
Antiguo 31/10/2007, 10:23
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Haz una cosa, abre tu consulta en vista sql, copiala y pegal aqui. Te voy a proponer una forma de hacerlo por codigo.

Un slaudo
  #7 (permalink)  
Antiguo 31/10/2007, 11:13
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: consulta seleccionando de formulario

SELECT PROYECTO.CODIGO, PROYECTO.NOMBRE, FASES.FASE, HORAS.HORES
FROM PROYECTO INNER JOIN (FASES INNER JOIN HORAS ON FASES.CODIGOFASE = HORAS.FASE) ON PROYECTO.CODIGOPROJECTE = HORAS.PROJECTE
WHERE (((PROYECTO.NOMBRE)=[Forms]![POR PROYECTO]![PRIMERO]));

Esta sería la forma que tu me has propuesto, pero como te he dicho no funciona con cuadros de lista o combinados.

Eres muy amable, gracias por todo
  #8 (permalink)  
Antiguo 31/10/2007, 11:17
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Realmente si deberia funcionar con cuadros combinados, ya que estos no permiten seleccion multiple. Y tambien deberia funcionar con listas sin seleccion multiple. Te ocurre esto???

Un saludo
  #9 (permalink)  
Antiguo 31/10/2007, 11:25
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Por pasos:

1. Crea una nueva consulta llamada consulta1, con lo que sea, da igual su contenido.

2. Crea un boton en el form, y en su evento click pon este codigo:

Dim qdf As DAO.QueryDef
Dim strFiltro1 As String
Dim varSelec As Variant
Dim strSql As String

For Each varSelec In Me.Lista.ItemsSelected
strFiltro1 = strFiltro1 & "'" & Me.Lista.ItemData(varSelec) & "',"
Next varSelec

If strFiltro1 <> "" Then strFiltro1 = Left(strFiltro1, Len(strFiltro1) - 1)
strSql = strSql & "SELECT PROYECTO.CODIGO, PROYECTO.NOMBRE, FASES.FASE, HORAS.HORES "
strSql = strSql & " FROM PROYECTO INNER JOIN (FASES INNER JOIN HORAS ON FASES.CODIGOFASE = HORAS.FASE) "
strSql = strSql & " ON PROYECTO.CODIGOPROJECTE = HORAS.PROJECTE "
strSql = strSql & " WHERE (((PROYECTO.NOMBRE) IN (" & strFiltro1 & ")"

Set qdf = CurrentDb.QueryDefs("Consulta1")
qdf.SQL = strSql

DoCmd.OpenQuery

3. Activa la referencia a Microsoft DAO x.xx Object Library
¿Como?

Con la ventana de codigo VB abierta (alt+f11), herramientas>>referencias>> activa la referencia que te he indicado.

Y si lo he hecho bien, se te abrira la consulta con el campo nombre de la tabla proyecto filtrado por todos los valores que hayas elegido en la lista.

Un saludo
  #10 (permalink)  
Antiguo 31/10/2007, 11:36
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: consulta seleccionando de formulario

Pues como te he dicho no funciona, pero probaré esa nueva consulta que me propones a ver si hay suerte. Ya te dire algo.

Que tengas un buen puente, si lo haces.

Un saludo.
  #11 (permalink)  
Antiguo 31/10/2007, 17:26
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Solo un detalle del codigo que te mande, cambia esta linea:

DoCmd.OpenQuery

por esta:

DoCmd.OpenQuery "Consulta1"

Un saludo
  #12 (permalink)  
Antiguo 02/11/2007, 11:54
 
Fecha de Ingreso: octubre-2007
Mensajes: 6
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: consulta seleccionando de formulario

Hola de nuevo:

Lo he escrito así:

Private Sub Comando3_Click()

Dim qdf As DAO.QueryDef
Dim strFiltro1 As String
Dim varSelec As Variant
Dim strSql As String

For Each varSelec In Me.Lista.ItemsSelected
strFiltro1 = strFiltro1 & "'" & Me.Lista.ItemData(varSelec) & "',"
Next varSelec

If strFiltro1 <> "" Then strFiltro1 = Left(strFiltro1, Len(strFiltro1) - 1)
strSql = strSql & "SELECT PROYECTO.CODIGO, PROYECTO.NOMBRE, FASES.FASE, HORAS.HORES "
strSql = strSql & " FROM PROYECTO INNER JOIN (FASES INNER JOIN HORAS ON FASES.CODIGOFASE = HORAS.FASE) "
strSql = strSql & " ON PROYECTO.CODIGOPROJECTE = HORAS.PROJECTE "
strSql = strSql & " WHERE (((PROYECTO.NOMBRE) IN (" & strFiltro1 & ")"

Set qdf = CurrentDb.QueryDefs("Consulta1")
qdf.SQL = strSql

DoCmd.OpenQuery "Consulta1"

End Sub

Y me da error en Me.Lista

Me dice error de compilación
No se encontró el método o el dato miembro.

Algo he hecho mal

  #13 (permalink)  
Antiguo 05/11/2007, 05:57
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Re: consulta seleccionando de formulario

Tienes que cambiar Lista, por el nombre real del control de tu lista.

Un saludo
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 07:53.