Ver Mensaje Individual
  #1  
Antiguo 21-01-2011
gri gri is offline
Miembro
NULL
 
Registrado: ene 2011
Posts: 10
Reputación: 0
gri Va por buen camino
while anidado para leer una tabla

Hola necesito leer una tabla y encontrar los productos que se llaman igual y que tienen fechas iguales y sumar las cantidades de estos productos , yenviar sus datos en otra tabla.
con el codigo que tengo lo hace una vez(los datos correctos) y lo escribe en la otra tabla, pero necesito que lo haga otra vez.

utilice 2 while uno dentro de otro. pero el de adentro llega al final, y como es el mismo no puedo regresar al primer while y necesito regresar al primer while.
el codigo es mas o menos asi:
(Table2 es donde revisa y obtiene los datos y table1 debe escribirlos despues con todo y calculo)

Código Delphi [-]
while Not Table2.Eof do
begin
  Cant:=0;
  Table2.Edit;
    DataSource2.DataSet.Edit;
    a:=Table2.FieldValues['FechaMenu'];
    b:=Table2.FieldValues['Dia'];
    c:=Table2.FieldValues['Nombre'];
    d:=Table2.FieldValues['Cantidad'];
    e:=Table2.FieldValues['Unidad'];
    f:=Table2.FieldValues['Clasificacion'];
    table2.First;//para comparar las variables con cada registro de la tabla
    while Not table2.Eof  do
    begin
    DataSource2.DataSet.Edit;
      if (a=Table2.FieldValues['FechaMenu'])and (c=Table2.FieldValues['Nombre']) then
      begin
      cant:= cant + Table2.FieldValues['Cantidad'];
      end;
      Table2.Edit;
      Table2.Next;
    end; {fin del while 2}

    if not(Table1.Locate('Descripcion',c, [])) then
      begin
      table1.Append;
      Table1.Edit;
      Table2.Edit;
      Table1.FieldValues['Proveedor']:=f;
      Table1.FieldValues['Descripcion']:=c;
      Table1.FieldValues['Unidad']:=e;
      Table1.FieldValues['CantidadP']:=cant;
      Table1.FieldValues['FechaE']:=a;
      //Table2.First;// probando para ver si lo hace 2 veces
      end;
    Table1.Edit;
    Table1.Post;
   Table2.Next;//AKI YA NO PUEDE LLEGAR POR QUE YA LLEGO AL EOF DE MI TABLE 2
  //end;{fin del if que comprueba lo que tengo en la primera posicion es = a la fecha}
 end; {fin del while}

Ayudenme
Responder Con Cita