Hola,
Esto que sucede es raro, raro, raro, pero veo que le ha pasado a mas gente, y parace que nadie sabe por qué sucede.
El problema sucede al menos con Delphi 5 y Paradox 7
Lo que pasa es que al ejecutar un query sale el mensaje "Invalid Parameter", y te vuelves loco buscando el parametro que pasas a la query y que da el error. Lo curioso es que sucede tambien con querys SIN PARAMETROS.
Otra cosa que sucede es que despues de ese error, no se ejecutan más querys correctamente, todas dan "invalid Parameter".
Tampoco esta definido cuando empieza a dar esos errores, puede suceder a las 2 horas de iniciar el programa, a las 4 horas......
Buscando información en estos foros encontre un mensaje respondido por Marcoszorrilla, de este mismo año:
http://www.clubdelphi.com/foros/show...alid+parameter
En el, se exponia que se hacian multiples querys y en un momento dado dejaban de funcionar.
Con el consejo de marcos parece que se soluciona, pero el problema sigue ahi.
En un foro encontre esto:
Cita:
Re: Invalid Parameter after xxx select queries
--------------------------------------------------------------------------------
Thanx for your answers guys ! I just found a "work around" by myself. First i tried
the following test:
// Delphi5 // i have one database1 component and query5 attached to it. // clips is
paradox7 table.
Código Delphi [-]for i:=1 to 5000 do
begin
query5.close;
query5.sql.clear;
query5.sql.add('Select *from clips where id=56');
try
query5.open
except
showmessage(inttostr(i));
end;
end; So i found out that after 1534 (sometimes 1535) sql queries it crash with "invalid
parameter" error. And even more: All sql queries after 1535 are also crashing ! e.g
"1536,1537..." I also noticed that pdoxusrs.lck file in project directory is growing
after each SQL query - in this case after each "query5.open". and the program crashes
when the file is around 26MB. The I come up with an idea. I tried to
"database1.close" and I saw that pdoxusrs.lck file disappear. so i think it's some
kind of refresh for it. following code works perfectly for me:
Código Delphi [-]
for i:=1 to 5000 do
begin
query5.close;
query5.sql.clear;
query5.sql.add('Select * from clips where id=56');
try
query5.open
except
database1.close;
database1.open;
end;
end; ...and all the 5000 queries are done Again - thx for your responses ! Love that
google groups thing
|
De lo que se deduce que es nuestro amigo pdousrs.lck el que provoca el error.
Ahora, a mi me esta sucediendo esto mismo, solo en una maquina, pero lo curioso es que NO ESTA EN RED, ni tengo un TDatabase, asi que no se que "cerrar" para liberar el pdousrs.lck
La query en cuestion, tampoco modifica registros, es un SELECT "normalito", con REQUESTLIVE=False, AUTOREFRESH=False y CACHEDUPDATES=False
Seria muy interesante conocer dos cosas:
¿ Por qué crece el fichero pdousrs.lck ?
¿ Como liberar pdousrs.lck ?
Muchas gracias