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

Ayuda Access

Estas en el tema de Ayuda Access en el foro de Bases de Datos General en Foros del Web. Mi duda es la siguiente: Quiero sumar las horas de un servicio en un intervalo de fechas. Tengo 2 tablas (obras y personal), no se ...
  #1 (permalink)  
Antiguo 24/06/2008, 03:27
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Ayuda Access

Mi duda es la siguiente:
Quiero sumar las horas de un servicio en un intervalo de fechas. Tengo 2 tablas (obras y personal), no se si se puede hacer mediante un bucle o mediante una sql, lo he probado mediante una sql y no me sale.

Un saludo.
  #2 (permalink)  
Antiguo 24/06/2008, 05:51
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Como es esa sql que has probado?? Como es la estructura de las tablas??

un saludo
  #3 (permalink)  
Antiguo 24/06/2008, 06:03
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

las tablas son:

OBRAS: idobras, nombre
PERSONAL: idpersonal, horas, fecha, idobras

el codigo que he escrito es el siguiente:

Dim dbs As Database, qdf As QueryDef, sql As String

Me.Cuadro_combinado14.SetFocus
servicio = Me.Cuadro_combinado14.Text
Me.Fecha_Inicio.SetFocus
fecha1 = Me.Fecha_Inicio.Text
Me.Fecha_Final.SetFocus
fecha2 = Me.Fecha_Final.Text

Set dbs = CurrentDb
sql = "select sum ([personal-obra.horas]) as '" & tot & "' from obras inner join personal-obra on ([obras.idobra]) = ([personal-obra.obra]) where ([obras.nombre]) like '" & servicio & "' and ([personal-obra.fecha]) between #" & [fecha1] & " # and # " & [fecha2] & "#"
Set qdf = dbs.CreateQueryDef("consulta-horas", sql)

Y quiero que el resultado de la sql guardarlo en un textbox

Antes de nada muchas gracias.
  #4 (permalink)  
Antiguo 24/06/2008, 06:36
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Primero, en VBA es mejor uasra la propiedad value en la luagr d ela propiedad text en controles que dispongan de esta propiedad, ya que no sera necesario que tengan el foco.

Puedes guardar la consulta de seleccion uniendo las dos tabla, por ejemplo, para ponerte el ejemplo la llamo Consulta1.

Luego, prueba con una consulta agregada de dominio (mas informacion en la ayuda) sobre la cosulta guardada:

Me.CuadroTexto.Value = DSum("Horas", "Consulta1", "Nombre='" & Serviocio & "' AND fecha between #" & Format(fecha1, "mm/dd/yyyy") & "# and #" & Format(fecha2, "mm/dd/yyyy") & "#")

Un saludo
  #5 (permalink)  
Antiguo 24/06/2008, 09:09
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

No entiendo cuando te refieres a guardar una consulta de seleccion.

Poniendo lo que tu me has indicado me da el error: error 2001. Cancelo la operacion anterior

Ahora mi codigo lo he escrito asi:

Me.Total_Hora_Normal.Value = DSum("Horas", "consulta_horas", "Nombre='" & servicio & "' AND fecha between #" & Format(fecha1, "mm/dd/yy") & "# and # " & Format(fecha2, "mm/dd/yy") & "#")

Y no se si lo que te refieres a consulta de seleccion es la siguiente:

SELECT Sum([Personal-Obra].Horas) AS horas
FROM Obras INNER JOIN [Personal-Obra] ON Obras.IdObra=[Personal-Obra].Obra;


Un saludo. Gracias.
  #6 (permalink)  
Antiguo 24/06/2008, 09:19
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Estas tarbajando con access, no???

Abre una consulta en blanco, ponla en vista sql y copia la consulta:

SELECT Sum([Personal-Obra].Horas) AS horas
FROM Obras INNER JOIN [Personal-Obra] ON Obras.IdObra=[Personal-Obra].Obra;

Guardala y ponle el nombre que uiqreas (en el ejemplo era "Consulta1")

Prueba tambien asi:

Me.Total_Hora_Normal.Value = DSum("Horas", "consulta_horas", "Nombre='" & servicio & "' AND fecha > #" & Format(fecha1, "mm/dd/yy") & " # and Fecha < # " & Format(fecha2, "mm/dd/yy") & "# ")

Un saludo
  #7 (permalink)  
Antiguo 24/06/2008, 09:33
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

Estoy trabajando con Access, pero me sigue dando el mismo error poniendo lo que me has indicado anteriormente

Un saludo
  #8 (permalink)  
Antiguo 24/06/2008, 16:05
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

En el formato falta dos y: format(fecha,"mm/dd/yyyy")

En que linea te maraca el error??

UN saludo
  #9 (permalink)  
Antiguo 24/06/2008, 23:08
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

Me da el error en la linea que me escribiste:

Me.Total_Hora_Normal.Value = DSum("Horas", "consulta1", "Nombre='" & servicio & "' AND fecha > #" & Format(fecha1, "mm/dd/yy") & " # and Fecha < # " & Format(fecha2, "mm/dd/yy") & "# ")


Pongo el cursor encima y en me.total_hora_normal.value me devuelve nulo.

Un saludo
  #10 (permalink)  
Antiguo 25/06/2008, 00:56
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Puede ser que el dsum no obtenga resultados, por que no hay registros que cumplan las co ndiciones. Usaremos la funcion nz para devolver un 0 en estos casos:

Me.Total_Hora_Normal.Value =nz(DSum("Horas", "consulta1", "Nombre='" & servicio & "' AND fecha > #" & Format(fecha1, "mm/dd/yyyy") & " # and Fecha < # " & Format(fecha2, "mm/dd/yyyy") & "# "),0)

Un saludo
  #11 (permalink)  
Antiguo 25/06/2008, 01:48
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

Me sigue dando el error. cancelo la operacion anterior

Un saludo
  #12 (permalink)  
Antiguo 25/06/2008, 02:11
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Puedes poner el codigo completo y exacto que estas usando???

Un saludo
  #13 (permalink)  
Antiguo 25/06/2008, 02:49
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

private sub cmdejecutar_click()

Dim servicio As String
Dim fecha1 As Date
Dim fecha2 As Date



servicio = Me.Cuadro_combinado14.Value
fecha1 = Me.Fecha_Inicio.Value
fecha2 = Me.Fecha_Final.Value

Me.Total_Hora_Normal.Value = Nz(DSum("Horas", "consulta1", "Nombre='" & servicio & "' AND fecha > #" & Format(fecha1, "mm/dd/yyyy") & " # and Fecha < # " & Format(fecha2, "mm/dd/yyyy") & "# "), 0)

end sub


Y esta es la sql (consulta1):

SELECT Sum([Personal-Obra].Horas) AS horas
FROM Obras INNER JOIN [Personal-Obra] ON Obras.IdObra=[Personal-Obra].Obra;
  #14 (permalink)  
Antiguo 25/06/2008, 04:14
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Ayuda Access

Incluye en la cosulta el campo fecha y el campo numbre que usas al hacer el dsum.

Un saludo
  #15 (permalink)  
Antiguo 25/06/2008, 04:55
 
Fecha de Ingreso: junio-2008
Mensajes: 15
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Ayuda Access

Me da este error:

ha intentado ejecutar una consulta que no incluye la expresion especifica 'Fecha' como parte de una funcion de agregado.
  #16 (permalink)  
Antiguo 15/02/2011, 16:43
 
Fecha de Ingreso: febrero-2011
Mensajes: 1
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Ayuda Access

hola, tengo una duda, estoy haciendo un formato para llenar una factura y en la parte de los conceptos e importes, tengo varios renglones, pero dependiendo lo q se vende se ocupa uno, dos o tres conceptos, mi problema es que si no lleno alguno, me aparece el importe con valor cero, quisiera que si fuese cero, no se mostrara, como le podria hacer. 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




La zona horaria es GMT -6. Ahora son las 16:56.