violation d'accès sur open de TQuery
Bonjour,
J'ai un problème concernant le code qui suit... l'erreur se produit sur le open suivant : v_search_query.Open;
J'ai une fenêtre CPU qui s'affiche au moment de l'ouverture de la requete, le programme s'arrête avec une violation d'accès et le try .. except ne remonte aucun message ...
ce bout de code est appelé de nombreuses fois et ne plante qu'au bout d'une heure de traitement.. j'ai vérifier le contenu de la requete et des paramètres au moment du plantage et je ne vois rien d'anormal.
La première requete est un simple select qui regarde si l'enregistrement existe dans la base.. et la deuxième l'insère si nécessaire.
A savoir que j'ai déjà éxecuté ce code sur un autre PC en mode Debug avec D7 et meme OS (Windows 2000) et le problème n'est pas apparu. Le PC que j'utilise en ce moment est à priori dans la meme config.
Voilà.. si vous avez des idées.. merci de votre aide..
Letissya.
procedure enregistrerLiens(v_type: string; v_variante,v_varianteM: integer);
var
v_i:integer;
v_laVariante: TStringList;
v_lesLiens: TLiensFltrow;
v_leLien: TLienFltrow;
v_leNumeroDeCle: integer;
v_laCle: integer;
v_query, v_search_query: TQuery;
begin
v_query:=dmSqlMsnTaskFault.queryInsereLienMessage;
v_search_query := dmSqlMsnTaskFault.querySearchLinkMessage;
v_search_query.Prepare;
v_query.Prepare;
for v_i:=0 to v_lesLiens.count-1 do
begin
try
v_leLien:=TLienFltrow(v_lesLiens.items[v_i]);
v_leNumeroDeCle:=strToInt(v_laVariante[v_i]);
v_laCle:=strToInt(v_leLien.m_referenceTSM.m_cles[v_leNumeroDeCle]);
v_search_query.close;
v_search_query.paramByName('p_faultCase').asString:=v_variante;
v_search_query.paramByName('p_cleDico').asInteger:=v_laCle ;
=> v_search_query.Open;
if v_search_query.EOF then
try
v_query.paramByName('p_faultCase').asString:=v_variante;
v_query.paramByName('p_cleDico').asInteger:=v_laCle ;
v_query.paramByName('p_special').asString:=v_leLien.m_special;
v_query.execSQL;
v_query.Close;
except
on e:exception do
WriteLn(v_log,'ERROR recording the link FC ' + v_variante
+ #10#13 + e.message + #10#13);
end;
except
on e:exception do
WriteLn(v_log,'ERROR searching for the link FC '+ v_variante
+ #10#13 + e.message + #10#13);
end;
end;
v_search_query.Close;
v_search_query.UnPrepare;
v_query.UnPrepare;
end;