Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Error al mostrar registros (https://www.clubdelphi.com/foros/showthread.php?t=55166)

Fenareth 09-04-2008 18:38:04

Error al mostrar registros
 
Buenos días a todos,

Tengo tiempo ya trabajando con un proyecto en Delphi 6 y tablas en Paradox y me está generando ahorita un problema al intentar mostrar el detalle de un documento...


Código Delphi [-]//MUESTRA DETALLE DE LA REMISION
dbgrid1.Visible := true;
dm.DETALLE_REMICOM.Last;
f:=1;
for i:=1 to dm.DETALLE_REMICOM.RecordCount do
begin
if dm.DETALLE_REMICOM.FieldByName('idremision_compra').AsInteger = strtoint(botonbuscar) then
begin
dbgrid1.Cells[2,f]:= dm.DETALLE.FieldByName('idproducto').AsString;
dbgrid1.Cells[3,f]:= inttostr(dm.DETALLE.FieldByName('idalmacen').AsInteger);
dbgrid1.Cells[4,f]:= currtostr(dm.DETALLE.FieldByName('cantidad').AsCurrency);
dbgrid1.Cells[5,f]:= dm.DETALLE.FieldByName('precio').AsVariant;
dbgrid1.Cells[6,f]:= dm.DETALLE.FieldByName('descuento').AsVariant;
dbgrid1.Cells[7,f]:= dm.DETALLE.FieldByName('importe').AsVariant;

THackStringGrid(dbgrid1).InsertRow();
f:= f+1;
end;
dm.DETALLE_REMICOM.Prior;
end;



Aunque se llame dbgrid1 en realidad es un StringGrid lo que usamos para mostrar la información
i y f son variables locales una me permite recorrer la tabla y la otra me permite ir insertando la información en la siguiente fila del StringGrid

El problema se da cuando hago la búsqueda me muestra siempre el primer registro de la tabla, lo curioso es que si mi documento original tiene 4 lineas de detalle
me muestra 4 veces el primer registro, si tiene 3, nomas 3 veces pero siempre el primero.

Intenté posicionándome al inicio de la tabla y recorrerla hacia adelante y nada... Colocándome al final de la tabla y haciendo recorridos hacia atrás y nada
lo curioso del asunto es que otro documento que usa exactamente el mismo código de búsqueda y presentación de los registros me muestra perfectamente la información
y lo único en lo que difieren es en la tabla que usan, de ahí en mas hasta los mismos puntos y comas tiene, jejeje...

A alguien se le ocurre qué pueda estar pasando ?

Les agradezco su tiempo y su ayuda a todos :)

enecumene 09-04-2008 18:48:08

Hola, intenta cambiando alguna de estas lineas:

Código Delphi [-]
MUESTRA DETALLE DE LA REMISION
  dbgrid1.Visible := true;
  dm.DETALLE_REMICOM.First;
  f:=1;
  for i:=1 to dm.DETALLE_REMICOM.RecordCount -1 do   
  begin          
          if dm.DETALLE_REMICOM.FieldByName('idremision_compra').AsInteger = strtoint(botonbuscar) then          
          begin                  
                 dbgrid1.Cells[2,f]:= dm.DETALLE.FieldByName('idproducto').AsString;
                 dbgrid1.Cells[3,f]:= inttostr(dm.DETALLE.FieldByName('idalmacen').AsInteger);
                 dbgrid1.Cells[4,f]:= currtostr(dm.DETALLE.FieldByName('cantidad').AsCurrency);
                 dbgrid1.Cells[5,f]:= dm.DETALLE.FieldByName('precio').AsVariant;
                 dbgrid1.Cells[6,f]:= dm.DETALLE.FieldByName('descuento').AsVariant;
                 dbgrid1.Cells[7,f]:= dm.DETALLE.FieldByName('importe').AsVariant;

                 THackStringGrid(dbgrid1).InsertRow();
                 f:= f+1;
         end;
         dm.DETALLE_REMICOM.Next;
   end;

luego nos comentas como te fue.

Saludos.

Fenareth 09-04-2008 18:55:56

Hola enecumene muchas gracias por responder y sobre todo tan rápido :D...

Verás, originalmente mi código incluia tanto el First como el Next para recorrer la tabla, como me dió este problema intenté cambiarlo a Last y a Prior es por eso que lo muestra asi en el código...

Alguna otra opción que se les ocurra ? :o

enecumene 09-04-2008 19:05:54

y cambiando el 1 por el 0?

Código Delphi [-]
for i := 0 to dm.DETALLE_REMICOM.RecordCount - 1 do   
  begin
     //....

Saludos.

Fenareth 09-04-2008 19:11:55

Jajajaja, hoy es para mi de esos días en que juras que 2+2=5 y según tu revisas para encontrar el problema y aunque pasar mil veces por ese 2+2=5 no lo ves mal... :confused:

Sorry enecumene ya vi mi garrafal error, aun cuando hago búsqueda en una tabla la información estaba intentando jalarla de otra muy diferente...

Pero ya lo corregí y que crees ??!! Funciona perfecto !!! :p

De nuevo una disculpa y muchas gracias por tus respuestas :D

enecumene 09-04-2008 19:18:53

Cita:

Empezado por fenareth (Mensaje 278642)
Jajajaja, hoy es para mi de esos días en que juras que 2+2=5 y según tu revisas para encontrar el problema y aunque pasar mil veces por ese 2+2=5 no lo ves mal... :confused:

Sorry enecumene ya vi mi garrafal error, aun cuando hago búsqueda en una tabla la información estaba intentando jalarla de otra muy diferente...

Pero ya lo corregí y que crees ??!! Funciona perfecto !!! :p

De nuevo una disculpa y muchas gracias por tus respuestas :D

Vale, despreocupate, esas son cosas que nos suceden de vez en cuando :), bye.


La franja horaria es GMT +2. Ahora son las 02:49:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi