Salut à tous,
J'ai un problème récurrent dans mon prog avec ADO, dans la mesure où il se ferme sans raison apparente et surtout sans message d'erreur.
Je me suis rendu compte en fait que si une requête contenait une erreur de syntaxe au moment de faire l'open, ça crashait le prog sans passer par le try except.
L'exemple suivant est plus parlant :
Les messages 'here' et 'before open' s'affichent bien, et ça plante à l'open sans passer par l'except.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 with dm.TADOQuery3 do begin Close; SQL.Clear; SQL.Add('Select bloque from Client where ID='); // ID n'a pas de valeur : pââââs bien ! SHOWMESSAGE('here'); try SHOWMESSAGE('before open'); Open; SHOWMESSAGE('after open'); except on e:exception do MessageDlg('planté',mtwarning, [mbOk], 0); end; end;
Si je lance le prog via Delphi, le seul message d'erreur que j'obtiens est 'débordement de pile', et rien d'autre.
Donc maintenant, je sais que si j'ai un débordement de pile, c'est parce qu'une requête est mal formattée, mais encore faut-il savoir laquelle et où !!
Plutôt bizarre comme comportement, et c'est surout trés pénible pour le débuggage.
Auriez-vous une solution ???
Partager