PDA

Ver la Versión Completa : Exception class EAccess violation...


Giniromero
13-06-2003, 12:30:40
hola a todos,

EStoy pasando una plicacion de paradox 5 a interbase7 con delphi 6.

Se que no debería, pero tengo tablas. Estas, eso si, en un datemodule.

Entre otras, tengo una con datos económicos, TbEcono, que esta conectada con la de los usuarios por un campo que tienen ambas en comun que es numalu.

el caso es que la aplicacion original, que estaba totalmente baseda en tablas, me calculaba el saldo de cada cliente directamente en el main, mostrandomelo en un TLabel y esto mismo lo consigo hacer en otro form de mi aplicacion, pero cuando pongo el mismo código para mi tabla econo me sale constantemente el mensaje:

----Project xxx raised exception calss EAccess Violation with message "Access violation at address 0059536A in modulo XXX" read of address ffffffff process stopped use step or run to continue---
el codigo que no me funciona es:

//calcula el saldo que tiene en Econo
Procedure TFrmFxMain.CalculaSaldo;
var nAux :single;
var dbpos : TBookmark;
begin
try
nAux := 0; //pongo a 0 el contador
dbPos := FrmDataModule.TbEcono.Getbookmark;
FrmDataModule.TbEcono.Disablecontrols; //deshabilito control query
FrmDataModule.TbEcono.first; //me pongo en el primer registro para este cliente
while not FrmDataModule.TbEcono.EOF do begin //mientras no llege al último registro
nAux := nAux + FrmDataModule.TbEconoIMPHABER.Value; //voy sumando lo que figura en importe del query
FrmDataModule.TbEcono.Next; //y me voy al siguiente registro si lo hay
end;

finally
//una vez que se han contado todos los registros, mostramos el resultado
lblSaldo.Caption := formatFloat('#,##0.00 €',nAux);
FrmDataModule.TbEcono.GotoBookmark(dbPos);
FrmDataModule.TbEcono.FreeBookmark(dbpos);//liberamos el bookmark
FrmDataModule.TbEcono.EnableControls; //le devolvemos el control de la query
end;
end;

¿podeis ayudarme con esto?

Me estoy volviendo loca:confused:

gracias

Virginia

Giniromero
13-06-2003, 12:47:38
Hola a todos,

algunas veces, no hay nada mejor que escribir una duda en un foro, pues al hacerlo, tienes que explicarlo, y tu mismo encuentras una salida... (esto no ocurre siempre, pero...)

El caso, es que quiero que sepais, el codigo es correcto, y SI funciona, solo que el procedimiento lo estaba llamando desde varios sitios de mi aplicación, y alguna de estas "llamadas" no estaba preparada para asumirlo.

Os lo digo, por si os encontrais en la situacion que yo, y efectivamente, el problema no es el codigo que habeis escrito, sino las llamadas que tengais a este mismo código.

Gracias por la ayuda que siempre me pretais.

Virginia