Bonjour,

J'aimerais pouvoir récupérer les erreurs de la abse de donnée (FB 1.0) depuis Delphi. Je travaille avec les composants de base "Interbase".
Ce qu'il me faut, c'est, sur une exception de type EDatabaseError, récupérer la chaîne de caractère de la contrainte violée (ConstrainName). Pour ce faire, dans l'event Applicaltion.OnException, je lance la routine
suivante (prise sur le net) afin de récupérer la constrainte en infraction
avec IB:

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
function TDM.GetConstraintName: string;
var
  p: PStatusVector;
  i: Integer;
begin
  p:= StatusVectorArray;
  Result:= '';
  i:= 0;
  while p[i]<>0 do
  begin
    if p[i] = 2 then
    begin
      Result:= PChar(p[i+1]);
      Break;
    end
    else
    if p[i]=3 then Inc(i);
    Inc(i,2);
  end; //while
end;
Je lance l'appli et viole une des contrainte de la base (style une valeur
NULL dans un champs NOT NULL ALLOWED). L'exception est bien lancé et la
routine GetConstraintName également lancée. Malheureusement, cette dernière
me retourne toujours une chaîne vide bien que p recoivent une adresse
valide. quelqu'un a-t-il une idée de la raison ?

Merci

David

[Modération, rbag : Pensez à utiliser la balise [CODE] qui améliore la lisibilité, merci]