Buenas! yo queria que alguien me ayudara en esto: es una consulta de clientes, en la que el usuario introduce el codigo del cliente y la fecha de que venta es la que quiere ver, despues mostraria los datos del cliente y lo que se le ha vendido.
mi problema esque la fecha no me funciona y al mostrarme las ventas, si tengo varios productos del mismo cliente sólo me muestra el primero y varias veces.
podriais decirme que tengo mal y ayudarme de como seria? muchas gracias.
void consultc (void)
{
FILE *pf, *pf2, *pf3, *pf4;
struct cliente cliente;
struct venta venta;
struct articulo articulo;
struct crea crea;
int codcliente, year, mes, cont;
if (((pf = fopen ("cliente.syc", "rb")) == NULL) ||
((pf2 = fopen ("venta.syc", "rb")) == NULL) ||
((pf3 = fopen ("articulo.syc", "rb")) == NULL) ||
((pf4 = fopen ("crea.syc", "rb")) == NULL ))
{
pantallaerror ();
}
else
{
fseek (pf, 0, SEEK_END);
if (ftell (pf) != 0)
{
while (!feof (pf))
{
tituloder ();
cprintf ("Consultar cliente");
linea ();
visual ();
cprintf ("Codigo cliente: ");
scanf ("%d", &codcliente);
cprintf ("\n\rAnio: ");
scanf ("%d", &year);
cprintf ("\rMes: ");
scanf ("%d", &mes);
fseek (pf2, 0, SEEK_SET);
fread (&venta, sizeof (venta), 1, pf2);
fseek (pf, 0, SEEK_SET);
fread (&cliente, sizeof (cliente), 1, pf);
while (!feof (pf) && codcliente != cliente.cod)
fread (&cliente, sizeof (cliente), 1, pf);
linea ();
visual ();
if (cliente.cod == codcliente)
{
cprintf ("Nombre: %s %s", cliente.nombre, cliente.apellidos);
cprintf ("\n\rDireccion: %s", cliente.direccion);
cprintf ("\n\rDNI: %s ", cliente.DNI);
cprintf ("Tlf: %d", cliente.tlf);
venta.codcliente = codcliente;
fread (&articulo, sizeof (articulo), 1, pf3);
while (!feof (pf))
{
if (venta.fecha.da_year > year || venta.fecha.da_year > year && venta.fecha.da_mon >= mes)
{
cprintf ("\n\n");
cprintf ("\n\rFecha: %d/%d/%d", venta.fecha.da_day, venta.fecha.da_mon, venta.fecha.da_year);
cprintf ("\n\rCod.Venta: %d - ", crea.codventa);
cprintf ("Cod.Articulo: %d", venta.cod);
cprintf ("\n\rNombre del articulo: %s", articulo.nombre);
cprintf ("\n\rCantidad: %d - ", crea.cant);
cprintf ("Precio: %0.2f", articulo.precio);
cprintf ("\n\rTotal: ");
textcolor (LIGHTGREEN);
cprintf ("%0.2f", venta.precio);
textcolor (WHITE);
if (cont >= 1)
{
gotoxy (31, 12);
cprintf ("Siguientes");
fflush (stdin);
getchar ();
visual ();
cprintf ("\n\rCodigo articulo: %d", venta.cod);
cprintf ("\n\rNombre del articulo: %s", articulo.nombre);
cprintf ("\n\rCantidad: %d - ", crea.cant);
cprintf ("Precio: %0.2f", articulo.precio);
cprintf ("\n\rTotal: ");
textcolor (LIGHTGREEN);
cprintf ("%0.2f", venta.precio);
textcolor (WHITE);
fseek (pf3, 0, SEEK_SET);
fread (&articulo, sizeof (articulo), 1, pf3);
fseek (pf2, 0, SEEK_SET);
fread (&venta, sizeof (venta), 1, pf2);
}
else
{
visual ();
gotoxy (8, 4);
cprintf ("No hay mas pedidos");
fflush (stdin);
getchar ();
}
fseek (pf3, 0, SEEK_CUR);
fread (&cliente, sizeof (cliente), 1, pf);
}
}
}
else
{
visual ();
gotoxy (10, 4);
cprintf ("Ese cliente no existe");
fflush (stdin);
getchar ();
}
visual ();
gotoxy (13, 4);
cprintf ("Fin de la lista");
fflush (stdin);
getchar ();
}
}
else
{
visual ();
gotoxy (14, 4);
cprintf ("No hay clientes");
}
fcloseall ();
}
fflush (stdin);
getchar();
}