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 :

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;
Les messages 'here' et 'before open' s'affichent bien, et ça plante à l'open sans passer par l'except.

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 ???