| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
schumi Cdt

Registrado: 12 May 2005Mensajes: 19
|
Publicado: Sab 19 Ago, 2006 12:23 pm Asunto: Bucle |
|
|
Buenas!
Una duda que tengo es que estoy recorriendo todo una tabla para poder encontar un codigo y allí modificar un regitro.
Vaya, un bucle.
| Código: |
void ProductoFinal::ModificarMarcaProd(Integer CM,Integer CP)
{
TLocateOptions Opts;
DataModule2->ProductoFinal->Open();
Opts.Clear();
Opts << loPartialKey;
DataModule2->ProductoFinal->First();
while (!(DataModule2->ProductoFinal->Eof))
{
if(DataModule2->ProducteFinal->Locate("CodigoMarca",CM,Opts))
{
Global::Modificar(DataModule2->ProducteFinal);
DataModule2->ProducteFinal->FieldByName("CodigoProv")->AsInteger = CP;
DataModule2->ProductoFinal->Next();
}
}
DataModule2->ProductoFinal->Post();
DataModule2->ProductoFinal->Close();
}
}
|
El problema que tengo es que es un bucle infinito y no se porque.
Alguien me podria echar una mano??
Muchas gracias! |
|
| Volver arriba |
|
 |
best_guitar Lt


Registrado: 12 Nov 2005Mensajes: 92
|
Publicado: Sab 19 Ago, 2006 12:54 pm Asunto: |
|
|
| has probado de entrar en una tabla con menos datos a ver si localiza el eof haciendo un watch? sugiero... |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Dom 20 Ago, 2006 1:26 am Asunto: |
|
|
modifica tu codigo de la siguiente manera el Next() debe ir fuera del IF
| Código: | void ProductoFinal::ModificarMarcaProd(Integer CM,Integer CP)
{
TLocateOptions Opts;
DataModule2->ProductoFinal->Open();
Opts.Clear();
Opts << loPartialKey;
DataModule2->ProductoFinal->First();
while (!(DataModule2->ProductoFinal->Eof))
{
if(DataModule2->ProducteFinal->Locate("CodigoMarca",CM,Opts))
{
//Global::Modificar(DataModule2->ProducteFinal);
DataModule2->ProducteFinal->Edit();
DataModule2->ProducteFinal->FieldByName("CodigoProv")->AsInteger = CP;
DataModule2->ProducteFinal->Post();
}
DataModule2->ProductoFinal->Next();
}
DataModule2->ProductoFinal->Close();
} |
forma lógica,
1.- te vas al primer regisro
2.- entras al ciclo mientras no llegues al fina (eof)
3.- si encuentrs el registro Editas, Modificas, Grabas)
4.- te mueves al siguiente registro, regresas al paso 2
si estas en el final cierras el DataSet _________________
 |
|
| Volver arriba |
|
 |
|