SoloCodigo
Programación General => C/C++ => C++ Builder => Mensaje iniciado por: kekabzo en Lunes 22 de Mayo de 2006, 17:25
-
Hola amigos, otra vez...aqui..esto es interminable!!
Esta vez la duda q me surge, es la siguiente:
Tengo una tabla DEUDAS, en la q hay un importe por cada apunte, y yo calculo una cosa, para q cada importe de esa deuda se le reste una cantidad.
Pero no me recorre toda la tabla, pq solo me lo hace en el primero...
el codigo es este:
qrApuntes->SQL->Clear();
qrApuntes->Close();
qrApuntes->SQL->Add("SELECT importe");
qrApuntes->SQL->Add("FROM deudas");
qrApuntes->SQL->Add("WHERE idMatricula=:idmatri");
qrApuntes->ParamByName("idmatri")->AsInteger=id;//lo saco en otra arriba
qrApuntes->Open();
importe=qrApuntes->FieldByName("importe")->AsFloat;
while(!qrApuntes->Eof)
{
// qrApuntes->SQL->Clear();
//qrApuntes->Close();
qrApuntes->SQL->Add("UPDATE deudas");
qrApuntes->SQL->Add("SET importe=:im");
qrApuntes->SQL->Add("WHERE idMatricula=:idmatri");
qrApuntes->ParamByName("idmatri")->AsString =id;
qrApuntes->ParamByName("im")->AsFloat=(importe - resta);
qrApuntes->ExecSQL();
qrApuntes->Next();
}
como lo puedeo hacer..muchas gracias
-
Comprueba que el datasource esté bien configurado, es decir, que como dataset tenga tu tabla y además despues del open situa la tabla al principio con first
Un saludo
-
Espero no haber llegado tarde para responderte.
La razón de que solo te lo haga en una fila (creo que eso dijiste) es porque solo le estás diciendo (ejemplo)
importe=qrApuntes->FieldByName("importe")->AsFloat;
En este caso solo está haciendo el cálculo para la fila seleccionada, y así lo irá haciendo si recorres manualmente la tabla.
Para que te lo haga todo debes recorrer la tabla con un ciclo for, ya se que recorras solo los renglones o las columnas, o si es necessario recorrer ambas pues utiliza un ciclo for doble. Sic.
Espero te sirva y me hayas entendido.
Saludos. :hola: :smartass: :whistling: :comp: :lightsabre: