PDA

Ver la Versión Completa : Necesito sugerencias amigos del foro


Manuel
28-05-2003, 18:41:45
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

marcoszorrilla
30-05-2003, 23:09:58
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.

Manuel
01-06-2003, 22:33:34
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

obiwuan
02-06-2003, 22:10:57
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.

Manuel
02-06-2003, 22:43:10
gracias Obiwuan lo provaré