Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Error al Recorrer SQL se queda colgado (https://www.clubdelphi.com/foros/showthread.php?t=93761)

webmasterplc 17-02-2019 19:40:46

Error al Recorrer SQL se queda colgado
 
Buenas mi consulta es la siguiente, necesito actualizar un precio de bolivares a dolares de forma masiva en un sistema de gestión, el fabricante nos proporciona una libreria que trae dos funciones una que e devuelve un precio y otra que la uso para enviar nuevos precios, como lo quiero hacer de forma masiva lo que hago es realizar una consulta a la base de datos y la recorro para enviar los parametros paso a paso pero el sistema se coloca en no responde y ala final no hace nada

la consulta es la siguente



Código Delphi [-]
begin;
       with datosa2.Sqajuste do
          begin
            Close;
            ParamByName('categoria').AsString:=listafpago.LookupValue; //aqui envio un parametro a la consulta sql
            Open;
          end;
             if not datosa2.Sqajuste.IsEmpty then
                 while not datosa2.Sqajuste.Eof do
                  begin
                    codigo:=datosa2.Sqajuste.FieldByName('FI_CODIGO').AsString; //Asigno el codigo que le pasare a la funcion
                    LocalSt:=traercostostprecios(1,ComboPrecio.ItemIndex,codigo,EdtLote.Text,EdtRandom.Text); //   La Salida es un String, separando los campos x el carácter ; (Punto y coma) trae 6 valores que coloco en un lisbox 
                    if LocalST<>'' then
                    PrepareListBox(LocalST);
                    p1:=StrToCurr(ListBox1.Items[4]);
                    imp:=StrToCurr(ListBox1.Items[3]);
                    np1:=p1*StrToCurr(EdtTasa.Text);
                    nprecio:=CurrToStr(np1);
                    pfinal:=('1000,01;1000,02;'+nprecio+';0;0;0;0;0');
                    actualizarPrecio(0,ComboPrecio.ItemIndex,codigo,EdtLote.Text,EdtRandom.Text,pfinal);//esta es la funcion para actualizar precioa
                   end;
          datosa2.Sqajuste.Next;
       end;

webmasterplc 18-02-2019 01:15:34

Replanteando la pregunta haciendo el analisis al codigo hice la siguiente prueba.
Código Delphi [-]
 begin;
       with datosa2.Sqajuste do
          begin
            Close;
            ParamByName('categoria').AsString:=listafpago.LookupValue;
            Open;
          end;
          begin
             if not datosa2.Sqajuste.IsEmpty then
                 begin
                 codigo:=datosa2.Sqajuste.FieldByName('FI_CODIGO').AsString;
                 ShowMessage(CODIGO);
                |end;
             datosa2.Sqajuste.Next;
end;
       end;
para verificar el recorrido y solo me da un mensaje con el prmer registro, aunque si mustro los datos de la consulta en un grid me muestra todos los registros.

Casimiro Notevi 18-02-2019 01:24:25

Creo que necesitas leer esto.

webmasterplc 18-02-2019 03:39:35

Resuelto
Código Delphi [-]
             if not datosa2.Sqajuste.IsEmpty then

                 while not datosa2.Sqajuste.Eof do
                  begin
                   //consultas y sentencias
                   datosa2.Sqajuste.Next; // este lo estaba dejando fuera y por ende no avanzaba gracias 
                 end;

end;

Casimiro Notevi 18-02-2019 10:20:17

Obviamente, no es eso, pues esa sentencia ya está puesta antes, según nos has mostrado en el código :)

webmasterplc 18-02-2019 14:21:48

Cita:

Empezado por webmasterplc (Mensaje 530709)
Buenas mi consulta es la siguiente, necesito actualizar un precio de bolivares a dolares de forma masiva en un sistema de gestión, el fabricante nos proporciona una libreria que trae dos funciones una que e devuelve un precio y otra que la uso para enviar nuevos precios, como lo quiero hacer de forma masiva lo que hago es realizar una consulta a la base de datos y la recorro para enviar los parametros paso a paso pero el sistema se coloca en no responde y ala final no hace nada

la consulta es la siguente



Código Delphi [-]
begin;
       with datosa2.Sqajuste do
          begin
            Close;
            ParamByName('categoria').AsString:=listafpago.LookupValue; //aqui envio un parametro a la consulta sql
            Open;
          end;
             if not datosa2.Sqajuste.IsEmpty then
                 while not datosa2.Sqajuste.Eof do
                  begin
                    codigo:=datosa2.Sqajuste.FieldByName('FI_CODIGO').AsString; //Asigno el codigo que le pasare a la funcion
                    LocalSt:=traercostostprecios(1,ComboPrecio.ItemIndex,codigo,EdtLote.Text,EdtRandom.Text); //   La Salida es un String, separando los campos x el carácter ; (Punto y coma) trae 6 valores que coloco en un lisbox 
                    if LocalST<>'' then
                    PrepareListBox(LocalST);
                    p1:=StrToCurr(ListBox1.Items[4]);
                    imp:=StrToCurr(ListBox1.Items[3]);
                    np1:=p1*StrToCurr(EdtTasa.Text);
                    nprecio:=CurrToStr(np1);
                    pfinal:=('1000,01;1000,02;'+nprecio+';0;0;0;0;0');
                    actualizarPrecio(0,ComboPrecio.ItemIndex,codigo,EdtLote.Text,EdtRandom.Text,pfinal);//esta es la funcion para actualizar precioa
                   end;
          datosa2.Sqajuste.Next;
       end;

aqui la dejo por fuera de begin y el end y no avanza


La franja horaria es GMT +2. Ahora son las 05:24:47.

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