Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema Al Recorrer Tabla (https://www.clubdelphi.com/foros/showthread.php?t=74597)

Ignacio Gentile 28-06-2011 14:01:03

Problema Al Recorrer Tabla
 
Buenos días.

Mi problema es que al recorrer una tabla (con un while) luego de leer el segundo registro no avanza más y a partir de ahi los valores que obtiene son siempre los mismos..

Este es el código:
Código Delphi [-]
while not (frmTablas.tblSucursal.Eof) do
begin
   nuevoItem.id := frmTablas.tblSucursal.FieldValues['cod_sucursal'] ;
   nuevoItem.Descripcion:=frmTablas.tblSucursal.FieldValues['descripcion_sucursal'];
   bandera := ValidarSucursales(nuevoItem.id,codigo);
   if bandera = 1 then
      begin
         cmbSucursal.Items.AddObject(nuevoItem.Descripcion, nuevoItem) ;
      end;
   frmTablas.tblSucursal.Next;
end;
Ejemplo: Al entrar al ciclo, nuevoItem.id toma el valor 1. Luevo del frmTablas.tblSucursal.Next el valor 2 y hasta ahi está bien; pero a partir de ahi el siguiente valor sigue siendo 2 y entra en un bucle del cual no sale..Lo mismo sucede si en vez del while... uso un
for i:=0 to frmTablas.tblSucursal.RecordCount-1..en este caso no entra en un bucle pero después de la segunda lectura todas las lecturas dan lo mismo, cuando en la base de datos son diferentes.

Alguien me podría ayudar ya que no encuentro el error..Muchas gracias..

ecfisa 28-06-2011 14:42:20

Hola Ignacio.

Te agradeceríamos que cuando incluyas código Delphi, lo encierres entre las etiquetas [delphi] [/delphi]

La explicación sobre el uso de las etiquetas vB, la tenés aquí .

Saludos y gracias por tu colaboración.:)

ecfisa 28-06-2011 15:17:16

Hola de nuevo.

No noto nada en tu código que pueda provocar ese comportamiento a excepción de la función ValidarSucursales.
Sería bueno poder ver el código de la misma.

Saludos.

Ignacio Gentile 28-06-2011 15:21:35

Código Delphi [-]
 function TfrmElegirEmpresa.ValidarSucursales(sucursal,empresa:integer): integer;
var id_sucursal,id_empresa,bandera:integer;
begin
   bandera := 0;
  frmTablas.tblUsuarioempresa.First;
  while not frmTablas.tblUsuarioempresa.Eof do
    begin
      id_sucursal:= frmTablas.tblUsuarioempresa['cod_sucursal'];
      id_empresa := frmTablas.tblUsuarioempresa['cod_empresa'];
      if (id_sucursal = sucursal) and (id_empresa=empresa) then bandera := 1;
      frmTablas.tblUsuarioempresa.Next;
    end;
  ValidarSucursales := bandera
end;

ese es el codigo de la función..No tiene nada raro, solo recibe dos parámetros y recorre una tabla..En caso de que el elemento que está leyendo concuerde con esos parámetros devuelve 1.

ecfisa 28-06-2011 15:34:12

Hola.

Podrías hacer la siguiente prueba, anulando la línea del condicional.:
Código Delphi [-]
  while not (frmTablas.tblSucursal.Eof) do
  begin
    nuevoItem.id := frmTablas.tblSucursal.FieldValues['cod_sucursal'] ;
    nuevoItem.Descripcion:=frmTablas.tblSucursal.FieldValues['descripcion_sucursal'];
   // if ValidarSucursales(nuevoItem.id,codigo) = 1 then
       cmbSucursal.Items.AddObject(nuevoItem.Descripcion, nuevoItem);
    frmTablas.tblSucursal.Next;
  end;
Si los datos de la tabla están correctos deberían cargarse todos los items en el combo e indicaría que no carga más items por no cumplirse la condición en ValidarSucursales.

De repetirse el problema, habría que revisar los valores de la tabla.

Saludos.


La franja horaria es GMT +2. Ahora son las 23:30:22.

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