Consulta access, no repetir registros.

Iniciado por agutin1983, 6 Diciembre 2005, 16:03 PM

0 Miembros y 1 Visitante están viendo este tema.

agutin1983

Hola gente. Una consulta de access.
tengo dos tablas, factura e item_factura. en factura tengo los datos del encabezado y totales y en item.. tengo los detalles de lo qe se compro. Luego hago una consulta que combinen los id.
hay manera de evitar que me repita los registros de factura por cada registro de item que combine.
Para que cuando abro la consulta desde VB quiero ver la factura y el detalle y luego pasar la siguinte factura y ver el detalle....

espero que se entienda, saludos a todos.

el_chente23

Lo que puedes hacer es cargar los datos del encabezado de las facturas en un recordset, y en otro recordset los del detalle, entonces empiezas a barrer el primer recordset, ya sea moverte de 1 en 1 por el recordset y cuando te posiciones en determinada factura tomas su id y lo buscas en el recordset del detalle y unicamente muestras esos datos en pantalla (Esto pensando que no tienes id repetidos en la tabla de facturas). Espero te sirva

Saludos

agutin1983

es lo que estoy haciendo. esta es la manera "formal" que me aprendi cuando usaba Pascal. por cada avanze de registro en el recordset del encabezado, recorro desde principio a fin de archivo el recordset del detalle chequeando uno por uno si el id es igual que en encabezado, entonces lo muestro y sigo al siguiente o solo paso al siguiente en caso de que coincida. yo no se si este es un metodo un poco viejo (aunque muy eficaz), quiero saber si hay otra forma de hacerlo (mas eficiente) que sea mas rapido codificarlo, utilizando algun objeto, yo todo lo anterior lo hago con dao.
Por ejemplo habra alguna manera de aprovechar las relaciones de access, si te fijas, cuando hacer una relacion por ej. con 2 tablas: factura, item_factura, (creo que se entiende como es la relacion, id de factura con id_fac de item_factura) en la tabla factura aparece un "+" que te muestra SOLO los datos que coincden en item_factura.

bueno...escucho ideas, muchas gracias el_chente.

el_chente23

Bueno, la forma que te expuse es una forma, en ado hay otra manera de hacerlo, es usando el propiedad del recordset que es el find, pero me dices que usas dao, por ese metodo nose si funcione el find, pero lo que preguntas si hay una manera de evitar que te repita los datos del encabezado cuando lo unes con el detalle es imposible(por lo menos yo no he econtrado la menera de hacer algo asi), porque te va a repetir los datos del encabezado por cada registro del detalle.

Saludos

agutin1983

como es el metodo del find con adodc? en dao esta el findfirst, que te encuentra el primero, pero no tiene sentido, la porque luego de un tiempo su pueden agregar mas datos y no quedan los registros en la base de manera uno seguido del otro. la unica forma es recorrerlo de principio a fin con un if si pertenese o no. otra cosa, sabes de tutoriales de adodc, quiero empezar a usar ese pero no tengo ni idea. Saludos, gracias por tu ayuda.

el_chente23

No, no conozco ningun manual, lo que se lo he aprendido conforme lo he necesitado, pero seguro encuentras mas de uno por la red, de todos modos te puedo ayudar en lo que necesites  ;).

Saludos