Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-05-2003
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
Necesito sugerencias amigos del foro

Hola amigos tengo lo siuiente, yo se que alguno de ustedes me podrá dar una magnífica solución:

Aquí el caso:

Tengo una aplicación en un colegio: Que tiene las siguientes tablas:

Tabla Campos
Alumnos rut, nombres, curso,nivel...

Accidente rut, fecha, lugar, motivo....

Anotaciones rut, profesor, fecha, anotacion (Campo Blob, memo)

Atrasos rut, fecha, horaentrada, horallegada, ....

justificaciones rut, fechaini, fechafin,fechajust, ...

me piden que imrpima una ficha en una hoja o más, de toda la información del alumno de las diferentes tablas, la cual se puede
venir o no registros, ahora puede ser individual o un curso completo, yo lo hago con un compositereport, pero me corta algunas anotaciones, me tira errores del canvas de la impresora un lio, espero amigo

Ojo, las tablas pueden venir uno o varios registros
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.

Última edición por Manuel fecha: 01-06-2003 a las 22:24:18.
Responder Con Cita
  #2  
Antiguo 30-05-2003
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si haces una consulta SQL uniendo todas las tablas por el campo RUT, ya tienes lo que quieres, si es solamente de un alumno, le añades la claúsula Where para filtrar por ese alumno.

Una vez hecha la consulta, no tienes más que utilizar QuickReport o calquier otro programa para realizar informes.

Un Saludo.
Responder Con Cita
  #3  
Antiguo 01-06-2003
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
Cita:
Posteado originalmente por marcoszorrilla
Si haces una consulta SQL uniendo todas las tablas por el campo RUT, ya tienes lo que quieres, si es solamente de un alumno, le añades la claúsula Where para filtrar por ese alumno.

Una vez hecha la consulta, no tienes más que utilizar QuickReport o calquier otro programa para realizar informes.

Un Saludo.
Gracias, marcoszorrilla pero yo ya habia intentado hacer eso, pero me sucede lo siguiente. Ejemplefico:

accidentes:
rut fecha motivo
1 12/05/2003 caída
1 15/05/2003 Golpe
1 20/05/2003 Apretón

Atrasos
rut fecha Hora
1 20/03/2003 08:00

y así con las demás tablas

al unirlas me queda lo siguiente

rut fecha_1 fecha hora motivo
----------------------------------------------------------------
1 12/05/2003 20/03/2003 08:00 caída
1 15/05/2003 20/03/2003 08:00 Golpe
1 20/05/2003 20/03/2003 08:00 Apretón

como ven como puedo descriminarar cuantos accidentes son, por cuando veo la tabla unida veo 3 y en ralidad hay uno, imprimirlo todo me saldía más información que la que es en realidad. por favor una ayuda
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
  #4  
Antiguo 02-06-2003
obiwuan obiwuan is offline
Miembro
 
Registrado: may 2003
Posts: 488
Poder: 22
obiwuan Va por buen camino
Creo que se os pasa algo por alto.

En cierta ocasión me plantearon algo similar, pero en un hospital, y la solución fue crear una tabla temporal. Esa tabla temporal se iba llenando poco a poco con los datos de las otras tablas, siempre era unión de tabla pacientes (en este caso alumnos) con el resto de las demás, una a una, ya que si una de ellas no tiene datos, la unión de todas ellas te viene a dar un conjunto vacío.

Algo así como

create table LoQueSea(campos tipos);

insert into LoQueSea select MismosCampos from alumnos a, OtraTabla O where a.id=o.idalumno

insert into LoQueSea select MismosCampos from alumnos a, OtraTablaX O where a.id=o.idalumno

y por ultimo sería un

select * from LoQueSea where SiHayCondicion order by SiHayOrdenación

Es un poco más complejo pero que seguro que evita errores de "este dato está en esta tabla pero no en esta otra". Tal como lo planteo, en caso de que una unión sea vacía, no afecta al resto de uniones.

PD: También se puede plantear usando la cláusula UNION en vez de la tabla temporal, pero en este último caso hay que ir con cuidado con la select planteada ya que es demasiado compleja. Mi solución te permite encontrar un posible fallo de una manera más fácil.
Responder Con Cita
  #5  
Antiguo 02-06-2003
Avatar de Manuel
Manuel Manuel is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz/Chile
Posts: 324
Poder: 22
Manuel Va por buen camino
gracias Obiwuan lo provaré
__________________
Manuel Muñoz L. Trabajando con delphi 7.0 , migrando sistema a Delphi XE8, matando BDE y pasando FIREDAC.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 01:58:27.


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