Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Controlar Tiempo e Imprimir Formulario de Informe (https://www.clubdelphi.com/foros/showthread.php?t=83950)

nefore 20-08-2013 01:01:06

Controlar Tiempo e Imprimir Formulario de Informe
 
Hola estoy aprendiendo a programar en Delphi, y me he topado con el siguiente problema:

Tengo un sistema de ABM de Base de Datos y necesito controlar el tiempo para generar un informe (semanal y mensual) sobre las diversas tablas que contiene la BD, es decir, necesito controlar que, al pasar una semana, se emita un informe en un form del delphi y permita al usuario imprimirlo.
El problema es que no tengo idea de como hacer para controlar que haya transcurrido esa semana y mucho menos el de imprimir un formulario.

Muchas gracias por su atencion

oscarac 20-08-2013 06:55:13

que tipo de informe sera ese?

quieres chequear las tablas que existen en la base de datos?
se un poco mas claro en tus consultas por favor

Casimiro Notevi 20-08-2013 09:17:35

nefore, vamos a tener que recordarte la guía del novato :D, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración :)

nefore 20-08-2013 18:37:06

Cita:

Empezado por nefore (Mensaje 465792)
Hola estoy aprendiendo a programar en Delphi, y me he topado con el siguiente problema:

Tengo un sistema de ABM de Base de Datos y necesito controlar el tiempo para generar un informe (semanal y mensual) sobre las diversas tablas que contiene la BD, es decir, necesito controlar que, al pasar una semana, se emita un informe en un form del delphi y permita al usuario imprimirlo.
El problema es que no tengo idea de como hacer para controlar que haya transcurrido esa semana y mucho menos el de imprimir un formulario.

Muchas gracias por su atencion

Lo siento si no he sido claro, como he dicho al principio estoy aprendiendo a programar y no queria ser muy amplio en el sentido de aburrir.
En fin, para aclarar:
Tengo un ABM de Personas (codigo de persona, nombre, dni, sexo, direccion, etc.) y Medicos (ademas de los datos de personas posee también datos como nº matricula, direccion del consultorio, etc).
A todo esto, genero una inspeccion (con su respectivo codigo de inspeccion, ademas de tener asociado un codigo de persona sobre la cual realizo la inspeccion) en donde se consideran aspectos como: Si esta enfermo, si es una mujer si esta embarazada, cuando fue su ultima inspeccion, etc.

Ahora bien, teniendo en cuenta las inspecciones, yo semanalmente debo generar un informe que contenga los pacientes de dicha semana, reflejando la inspeccion correspondiente a esas personas por Ejemplo:
Tengo una tabla en donde deberia mostrar

Codigo
125

DNI
37456789

Apellido y Nombre
Gonzalez Jose

Enfermedad
x

Contagiosa
x

Tratamiento

Embarazo


Y asi sucesivamente con todos los clientes de la semana
Asi tambien, debo brindar la posibilidad de imprimir este informe

De ahi que me surgen la preguntas: ¿Como haria para controlar una semana? y ¿Como hago para imprimir ese formulario o la tabla?
Espero haber sido claro y disculpen las molestias

oscarac 20-08-2013 18:44:05

Cita:

Empezado por nefore (Mensaje 465812)
Lo siento si no he sido claro, como he dicho al principio estoy aprendiendo a programar y no queria ser muy amplio en el sentido de aburrir.
En fin, para aclarar:
Tengo un ABM de Personas (codigo de persona, nombre, dni, sexo, direccion, etc.) y Medicos (ademas de los datos de personas posee también datos como nº matricula, direccion del consultorio, etc).
A todo esto, genero una inspeccion (con su respectivo codigo de inspeccion, ademas de tener asociado un codigo de persona sobre la cual realizo la inspeccion) en donde se consideran aspectos como: Si esta enfermo, si es una mujer si esta embarazada, cuando fue su ultima inspeccion, etc.

Ahora bien, teniendo en cuenta las inspecciones, yo semanalmente debo generar un informe que contenga los pacientes de dicha semana, reflejando la inspeccion correspondiente a esas personas por Ejemplo:
Tengo una tabla en donde deberia mostrar

Codigo DNI Apellido y Nombre Enfermedad Peligrosidad Tratamiento Embarazo
125 37456789 Gonzalez Jose x x


Y asi sucesivamente con todos los clientes de la semana
Asi tambien, debo brindar la posibilidad de imprimir este informe

De ahi que me surgen la preguntas: ¿Como haria para controlar una semana? y ¿Como hago para imprimir ese formulario o la tabla?
Espero haber sido claro y disculpen las molestias

esta explicacion difiere totalmente de tu explicacion inicial
mmm yo me pregunto

porque no simplemente colocas un rango de fecha y que el usuario defina que fecha utilizar, segun mi experiencia no es saludable limitar ciertos procesos, conociendo la idiosincracia de los usuarios a veces te salen con cada requerimiento que es para jalarse los pelos

nefore 20-08-2013 18:53:23

Creeme que lo haria con un par de DateTimePicker si pudiera, pero en realidad es un trabajo de universidad, y en el documento para la creacion del programa, me exige que semanalmente realize este informe, o sea, en el formulario debe aparecer solamente un edit conteniendo la fecha de emision (del informe) y una tabla con el resumen semanal de controles de los pacientes. Ademas de dos botones de cerrar e impimir

Casimiro Notevi 20-08-2013 19:32:26

Cuando se realiza la inspección de un paciente, se anota la fecha, sólo has de controlar esa fecha cada vez que quieras sacar un informe.
O incluso puedes añadir un campo que sea la fecha de una semana próxima. Al sacar el informe será entra una semana atrás y la fecha actual.
De todas formas, como dice oscarac, eso en la vida real no tiene mucha utilidad, no es práctico, usable y además es fácilmente descontrolable.

TiammatMX 20-08-2013 23:12:36

Cita:

Empezado por nefore (Mensaje 465816)
Creeme que lo haria con un par de DateTimePicker si pudiera, pero en realidad es un trabajo de universidad, y en el documento para la creacion del programa, me exige que semanalmente realize este informe, o sea, en el formulario debe aparecer solamente un edit conteniendo la fecha de emision (del informe) y una tabla con el resumen semanal de controles de los pacientes. Ademas de dos botones de cerrar e impimir

Independientemente de cómo llegues a configurarlo, el "preguntar" por la condición no debería ser problema. Una vez que llegues al menú o pantalla principal, corres un procedimiento o función que te avise que para ciertos registros ya se cumplió la condición de haber pasado una semana.

ecfisa 21-08-2013 00:41:42

Hola nefore.

Al igual que mis compañeros, pienso que lo mas simple y flexible es usar una consulta con rango de fechas .

Según veo para generar el listado habría, al menos, dos tablas involucradas: PACIENTES e INSPECCION y estas están relacionadas por el campo CODIGO.

Creo que una consulta similar a esta resolvería tu problema:
Código SQL [-]
SELECT T1.CODIGO,
       T1.DNI,
       T1.APELLIDONOMBRE,
       T2.ENFERMEDAD,
       T2.CONTAGIOSA,
       T2.TRATAMIENTO,
       T2.EMBARAZO
FROM PACIENTES T1, INSPECCION T2
WHERE T1.CODIGO = T2.CODIGO
  AND T2.FECHA_INSPECCION >= :DESDE AND T2.FECHA_INSPECCION <= :HASTA
Luego a los parámetros DESDE y HASTA le envias los rangos de fechas que desees (por semana, por mes, etc.).

Saludos :)

nefore 22-08-2013 22:44:55

Cita:

Empezado por tiammat (Mensaje 465830)
Independientemente de cómo llegues a configurarlo, el "preguntar" por la condición no debería ser problema. Una vez que llegues al menú o pantalla principal, corres un procedimiento o función que te avise que para ciertos registros ya se cumplió la condición de haber pasado una semana.

Cita:

Empezado por ecfisa (Mensaje 465851)
Hola nefore.

Al igual que mis compañeros, pienso que lo mas simple y flexible es usar una consulta con rango de fechas .

Según veo para generar el listado habría, al menos, dos tablas involucradas: PACIENTES e INSPECCION y estas están relacionadas por el campo CODIGO.

Creo que una consulta similar a esta resolvería tu problema:
Código SQL [-]
SELECT T1.CODIGO,
       T1.DNI,
       T1.APELLIDONOMBRE,
       T2.ENFERMEDAD,
       T2.CONTAGIOSA,
       T2.TRATAMIENTO,
       T2.EMBARAZO
FROM PACIENTES T1, INSPECCION T2
WHERE T1.CODIGO = T2.CODIGO
  AND T2.FECHA_INSPECCION >= :DESDE AND T2.FECHA_INSPECCION <= :HASTA
Luego a los parámetros DESDE y HASTA le envias los rangos de fechas que desees (por semana, por mes, etc.).

Saludos :)

Efectivamente, son buenas ideas, muchas gracias a todos por tomarse su tiempo para entender y responder.
Ahora por el tema de los parámetros por ejemplo: ¿Existira alguna funcion en delphi, que me devuelva los dias de la semana, de acuerdo a una determinada fecha?, o sea por ejemplo yo en una variable tengo la fecha de hoy (22/08/13), y ¿existira una funcion que me devuelva "jueves"?

ecfisa 22-08-2013 23:00:43

Cita:

Empezado por nefore (Mensaje 465936)
¿Existira alguna funcion en delphi, que me devuelva los dias de la semana, de acuerdo a una determinada fecha?, o sea por ejemplo yo en una variable tengo la fecha de hoy (22/08/13), y ¿existira una funcion que me devuelva "jueves"?

Hola nefore.

Código Delphi [-]
...
uses DateUtils;

function DayName(aDate: TDate): string;
begin
  case GetUserDefaultLangID and $03FF of
    LANG_SPANISH: Result := LongDayNames[DayOfTheWeek(aDate)+1];
    LANG_ENGLISH: Result := LongDayNames[DayOfTheWeek(aDate)];
    //...
  end;
end;

// Ejemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DayName(StrToDate('22/08/2013')));
end;

Saludos. :)

Edito: Para la próxima, recuerda que debes crear un nuevo hilo para una nueva pregunta. ;)

nefore 23-08-2013 02:39:25

Cita:

Empezado por ecfisa (Mensaje 465937)
Hola nefore.

Código Delphi [-]
...
uses DateUtils;

function DayName(aDate: TDate): string;
begin
  case GetUserDefaultLangID and $03FF of
    LANG_SPANISH: Result := LongDayNames[DayOfTheWeek(aDate)+1];
    LANG_ENGLISH: Result := LongDayNames[DayOfTheWeek(aDate)];
    //...
  end;
end;

// Ejemplo de uso:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(DayName(StrToDate('22/08/2013')));
end;

Saludos. :)

Edito: Para la próxima, recuerda que debes crear un nuevo hilo para una nueva pregunta. ;)

Ah muchas gracias! y disculpa nuevamente, me parece que no estoy con los pies sobre la tierra


La franja horaria es GMT +2. Ahora son las 17:25: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