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

Consulta Interactiva

Estas en el tema de Consulta Interactiva en el foro de Bases de Datos General en Foros del Web. Hola a todos. Tengo una consulta que me saca las nóminas de los monitores de una empresa que imparte cursos de formación. nominas:'fecha_fin_curso Por mes','monitor','variable_por_dietas','Suma ...
  #1 (permalink)  
Antiguo 10/05/2010, 23:29
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Consulta Interactiva

Hola a todos.

Tengo una consulta que me saca las nóminas de los monitores de una empresa que imparte cursos de formación.

nominas:'fecha_fin_curso Por mes','monitor','variable_por_dietas','Suma de kilometraje','Variable_por_nomina','Total'

La idea es que el usuario mediante un formulario pueda escoger el mes, y saque las nóminas de todos los monitores para ese mes, ó el monitor y saque todas las nóminas de ese monitor para todos los meses ó ambas cosas, es decir, la nómina de un monitor para un mes determinado.

Tengo 2 cuestiones:
La primera es: ¿Cómo hago para crear un combo con los 12 meses del año (enero, febrero...)?

Y la segunda y más importante:
Tengo el siguiente código:
Código:
Private Sub Comando2_Click()
Dim Filtro As String
Dim qdf As DAO.QueryDef
Dim sSql As String

sSql = "SELECT * FROM nominas "


If Nz(Me.monitor, "") <> "" Then
Filtro = Filtro & " monitor='" & Me.monitor & "' AND "
End If



If Nz(Filtro, "") <> "" Then
Filtro = Left(Filtro, Len(Filtro) - 4)
Set qdf = CurrentDb.QueryDefs("nominas")
qdf.SQL = sSql & " Where " & Filtro
DoCmd.OpenQuery "nominas"

Else
MsgBox "Es necesario escoger al menos un factor de búsqueda", vbInformation
End If
End Sub
Pero no sale, me dice:
Cita:
Se ha producido el error '3102'en tiempo de ejecución:
Referencia circular causada por 'nominas'
Y lo peor es que me destruye la consulta 'nominas' y me la cambia por otra cosa que no tiene nada que ver y tengo que volver a hacerla.

Alguien me puede decir que estoy haciendo mal??
Gracias!
  #2 (permalink)  
Antiguo 11/05/2010, 01:39
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Consulta Interactiva

Para hacer un combo con los meses, entiendo que usaras numeros, crea un combo con dos columnas:

Tipo de origen de la fila: Lista de valores
origen de la fila: 1;"ENERO";2;"FEBRERO";3;"MARZO";4;"ABRIL";5;"MAYO" ;6;"JUNIO";7;"JULIO";8;"AGOSTO";9;"SEPTIEMBRE";10; "OCTUBRE";11;"NOVIEMBRE";12;"DICIEMBRE"
Ancho de columnas: 0cm;2cm
Columna dependiente: 1

Para tu segunda prgunta, dices que nominas es una conuslta ya creada, verdad?? Cual es la sql de la misma??

Un saludo
  #3 (permalink)  
Antiguo 11/05/2010, 05:47
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Consulta Interactiva

Hola Taribo007, gracias por tu respuesta.

Ahora mismo pruebo el combo de los meses a ver que tal.

En cuanto a lo otro, la consulta "nominas" es la siguiente:

Cita:
SELECT [Ofertas_Cursos Consulta2].[fecha_fin_curso Por mes], [Ofertas_Cursos Consulta2].monitor, [Suma De Ing_dietas]+[Suma De ing_media_dieta] AS Variable_por_dietas, [Ofertas_Cursos Consulta2].[Suma De kilometraje], [Suma De variable]+[Suma De dietas]-[Variable_por_dietas] AS Variable_por_nomina, [Variable_por_dietas]+[Suma De kilometraje]+[Variable_por_nomina] AS Total
FROM [Ofertas_Cursos Consulta2];
Como ves, está basada a su vez en otra consulta "Ofertas_Cursos Consulta2"

Gracias.
  #4 (permalink)  
Antiguo 15/05/2010, 00:56
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Consulta Interactiva

Hola?

No se os ocurre nada para filtrar por monitor? o corregir el error que me da?

Ayuda! Gracias.
  #5 (permalink)  
Antiguo 19/05/2010, 07:20
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Consulta Interactiva

a ver...
Tengo el siguiente código que sí funciona que realicé con la ayuda de Taribo007:
Cita:
Option Compare Database

Private Sub Comando5_Click()
Dim Filtro As String
Dim qdf As DAO.QueryDef
Dim sSql As String

sSql = "SELECT * FROM Ofertas_Cursos "


If Nz(Me.nom_curso, "") <> "" Then
Filtro = Filtro & " nom_curso='" & Me.nom_curso & "' AND "
End If
If Nz(Me.nom_cliente, "") <> "" Then
Filtro = Filtro & " nom_cliente='" & Me.nom_cliente & "' AND "
End If
If Nz(Me.provincia_curso, "") <> "" Then
Filtro = Filtro & " provincia_curso='" & Me.provincia_curso & "' AND "
End If
If Nz(Me.monitor, "") <> "" Then
Filtro = Filtro & " monitor='" & Me.monitor & "' AND "
End If
If Not IsNull(Me.horario_mañana) Then
Filtro = Filtro & " horario_mañana=" & Me.horario_mañana & " AND "
End If


If Nz(Filtro, "") <> "" Then
Filtro = Left(Filtro, Len(Filtro) - 4)
Set qdf = CurrentDb.QueryDefs("ConsultaInteractiva")
qdf.SQL = sSql & " Where " & Filtro
DoCmd.OpenQuery "ConsultaInteractiva"
'y esto para abrir el informe, que tendra como origen la consulta ConsultaInteractiva
DoCmd.OpenForm "Listado de Cursos Consulta"

Else
MsgBox "Es necesario escoger al menos un factor de búsqueda", vbInformation
End If
End Sub
En él seleccionaba varios campos con un formulario y ejecutaba la consulta filtrando por esos campos.
Ahora necesito hacer lo mismo pero sobre la consulta "nóminas" y no consigo hacerla. Puse lo que tengo puesto al principio del tema pero no va.

Alguien me puede decir cómo modificar esto para que me haga lo que necesito?

Última edición por ErPiloto; 20/05/2010 a las 08:26 Razón: ampliacion de la explicación
  #6 (permalink)  
Antiguo 20/05/2010, 09:24
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
Pregunta Respuesta: Consulta Interactiva

Vale, he conseguido que funcione en parte:
Si pongo:
Código:
Option Compare Database

Private Sub Comando2_Click()
Dim Filtro As String
Dim qdf As DAO.QueryDef
Dim sSql As String

sSql = "SELECT * FROM nominas "


If Nz(Me.monitor, "") <> "" Then
Filtro = Filtro & " monitor='" & Me.monitor & "' AND "
End If


If Nz(Filtro, "") <> "" Then
Filtro = Left(Filtro, Len(Filtro) - 4)
Set qdf = CurrentDb.QueryDefs("nominas2")
qdf.SQL = sSql & " Where " & Filtro
DoCmd.OpenQuery "nominas2"

Else
MsgBox "Es necesario escoger al menos un factor de búsqueda", vbInformation
End If
End Sub
funciona bien y me filtra por monitor. Pero si le añado el filtro para los meses ya me falla:
Código:
Option Compare Database

Private Sub Comando2_Click()
Dim Filtro As String
Dim qdf As DAO.QueryDef
Dim sSql As String

sSql = "SELECT * FROM nominas "


If Nz(Me.monitor, "") <> "" Then
Filtro = Filtro & " monitor='" & Me.monitor & "' AND "
End If
If Nz(Me.Cuadro_combinado7, "") <> "" Then
Filtro = Filtro & " fecha_fin_curso Por mes='" & Me.Cuadro_combinado7 & "' AND "
End If


If Nz(Filtro, "") <> "" Then
Filtro = Left(Filtro, Len(Filtro) - 4)
Set qdf = CurrentDb.QueryDefs("nominas2")
qdf.SQL = sSql & " Where " & Filtro
DoCmd.OpenQuery "nominas2"


Else
MsgBox "Es necesario escoger al menos un factor de búsqueda", vbInformation
End If
End Sub
y me da el siguiente error:
Cita:
Error 3075 en tiempo de ejecución. Error de sintaxis (falta operador) en la expresion de consulta 'monitor='Jose Carlos Borreguero' AND fecha_fin_curso Por mes='Enero"
Y el error me lo da en la linea que pone
Código:
qdf.SQL = sSql & " Where " & Filtro
Por favor alguien puede decirme donde esta el fallo?
Gracias.
  #7 (permalink)  
Antiguo 20/05/2010, 09:55
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 17 años, 3 meses
Puntos: 18
Respuesta: Consulta Interactiva

ESte es el nombre dle campo???

fecha_fin_curso Por mes

De ser asi, primero te recomendaria que no usaras espacios, ni acentos, ni caracteres especiales en nombres de campos, tablas u objetos en general de la bd. Te ahorraras errores futuros.

No obstante, al tener espacios, has de ponerlo entre coschetes:

If Nz(Me.Cuadro_combinado7, "") <> "" Then
Filtro = Filtro & " [fecha_fin_curso Por mes]='" & Me.Cuadro_combinado7 & "' AND "
End If

Un saludo
  #8 (permalink)  
Antiguo 22/05/2010, 02:35
 
Fecha de Ingreso: enero-2010
Mensajes: 52
Antigüedad: 14 años, 10 meses
Puntos: 0
De acuerdo Respuesta: Consulta Interactiva

SI!!!!
era eso! puñeteros corchetes!
es que esta consulta la hice con el asistente y es el nombre que me creó al agrupar por meses.

Muchísimas gracias de nuevo!

Etiquetas: interactiva
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 12:23.