Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Exclamation Contar registros por fecha

Muy buenas amigos. Después de tanto tiempo, vuelvo por estos lados.
Tengo una db en mysql 5 con delphi 7.
En una tabla tengo un campo fecha (año, mes día) y desde delphi necesito hacer una consulta en la que me cuente la cantidad de registros que hay en un mes y año determinado.
El usuario seleccionara el mes (de 1 a 12) y el año (2012, 2013....etc) y necesito que me muestre la cantidad de registros que hay en un mes en particular.
Mi idea (no se si errada) es:
Código Delphi [-]
var
contador: integer;
begin
        cantidad:=0;
        dm.tarea.first;
        while not dm.tarea.eof do
               begin
                      //aca es donde no tengo en claro como comparar las fechas con mi mes y año. Seguramente será con un if donde irá incrementando mi contador, pero no se como hacerlo.
               end;
end;

Muchas gracias por su ayuda.
Responder Con Cita
  #2  
Antiguo 20-11-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is online now
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Usa sql, algo similar a esto:
Ejemplo, mes 11:
Código SQL [-]
select count(*) from tabla where extract(month from fecha)= 11
Responder Con Cita
  #3  
Antiguo 20-11-2013
Avatar de TOPX
TOPX TOPX is offline
Miembro
 
Registrado: may 2008
Ubicación: Bogotá
Posts: 527
Poder: 16
TOPX Va camino a la fama
Buenas.

Mi idea es, que en la propiedad que tiene la sentencia sql de dm.tarea diga algo como:
Código SQL [-]
SELECT COUNT(*) as cantidad
FROM tabla
WHERE YEAR(fecha) = :anio_fecha
  AND MONTH(fecha) = :mes_fecha
Y luego, en Delphi asigna asigna los valores para los parámetros anio_fecha y mes_fecha.
-
__________________
"constructive mind, destructive thoughts"
Responder Con Cita
  #4  
Antiguo 20-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
muchas gracias

Gracias por sus comentarios.
Intenté hacer como me dijo TOPX y pasar por parámetros mes y año.

Me dió este error:
Project mantenimiento.exe raised exception class EZSQLException with message 'SQL Error: You have an error in your SQL syntax; check de manual that corresponds to your MySQL server version for the right syntax to use near '*) as cantidad FROM tarea WHERE YEAR (fecha)=2013 AND MONTH(fecha)=11' at line 1'. Proecess stopped. Use Step or Run to continue.


Con esta consulta me devolvería por parámetros el resultado o como lo tomo nuevamente en delphi (supongamos que quiero asignarlo a una variable).
Responder Con Cita
  #5  
Antiguo 20-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Corregido el error

El error era únicamente un espacio demás.
Ahora la pregunta es, como hago para tomar el resultado de la consulta y asignarlo a una variable??

Muchas gracias

Última edición por lucho1981 fecha: 20-11-2013 a las 15:57:05.
Responder Con Cita
  #6  
Antiguo 20-11-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola lucho1981.

Un ejemplo para la consulta anterior:
Código Delphi [-]
...
var
  Cantidad: Integer;
begin
  with TuQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT COUNT(*) AS CANTIDAD FROM TABLA')
    SQL.Add('WHERE YEAR(FECHA) = :ANIO_FECHA');
    SQL.Add('AND MONTH(FECHA) = :MES_FECHA');
    Open;
    Cantidad := FieldByName('CANTIDAD').AsInteger;
  end;
...

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 20-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Muchas gracias.

Muchas gracias. Me sirvió a la perfección.

Cita:
Empezado por ecfisa Ver Mensaje
Hola lucho1981.

Un ejemplo para la consulta anterior:
Código Delphi [-]
...
var
  Cantidad: Integer;
begin
  with TuQuery do
  begin
    Close;
    SQL.Clear;
    SQL.Add('SELECT COUNT(*) AS CANTIDAD FROM TABLA')
    SQL.Add('WHERE YEAR(FECHA) = :ANIO_FECHA');
    SQL.Add('AND MONTH(FECHA) = :MES_FECHA');
    Open;
    Cantidad := FieldByName('CANTIDAD').AsInteger;
  end;
...

Saludos
Responder Con Cita
  #8  
Antiguo 28-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Thumbs down Nueva consulta

Amigos tengo una consulta que para mi puede ser parecida (es por ello que no inicio un nuevo hilo)
Tengo una tabla en mysql, la que tiene un campo time (hh:mm:ss), necesito sumar todos los campos de una determinada fecha.
Mi consulta es la siguiente
Código SQL [-]
SELECT SUM(*) as TOTAL
FROM TAREA
WHERE YEAR (fecha) = :anio
AND MONTH (fecha) = :mes

Luego de leer un poco vi que SUM es solo para valores enteros.
Como puedo hacer para sumar dicho campo?
Responder Con Cita
  #9  
Antiguo 28-11-2013
lucho1981 lucho1981 is offline
Miembro
 
Registrado: abr 2006
Ubicación: Tucuman-Argentina
Posts: 44
Poder: 0
lucho1981 Va por buen camino
Thumbs up Me autorrespondo

Luego de leer un poco mas, efectivamente la función SUM de Mysql no suma valores Time.
Lo que hice fue convertir todo a segundos, sumar, y convertir a time otra vez.
Código SQL [-]
SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(hs_previstas))) as TOTAL
FROM tarea
WHERE YEAR(fecha)= :anio
AND MONTH(fecha)= : mes

Todo anduvo perfecto.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Contar registros de un dataset martinlillo Conexión con bases de datos 6 29-09-2011 16:35:55
Contar Registros KAYO SQL 10 22-07-2010 20:47:43
Contar registros de una tabla sandra mendoza Conexión con bases de datos 4 14-10-2008 01:08:38
Contar registros en una columna dtomeysoto SQL 5 18-04-2008 22:32:52
Contar Registros Roilo SQL 10 18-07-2006 22:20:24


La franja horaria es GMT +2. Ahora son las 21:33:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi