PDA

Ver la Versión Completa : Error al mostrar registros


Fenareth
09-04-2008, 18:38:04
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 [-] (http://www.clubdelphi.com/foros/#)//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:

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?

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
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.