Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda por favor (ficheros-hacer consulta de datos de la venta a clientes)

Estas en el tema de ayuda por favor (ficheros-hacer consulta de datos de la venta a clientes) en el foro de C/C++ en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/06/2008, 12:44
 
Fecha de Ingreso: junio-2008
Mensajes: 5
Antigüedad: 15 años, 10 meses
Puntos: 0
ayuda por favor (ficheros-hacer consulta de datos de la venta a clientes)

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();
}
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:13.