Ignorer les erreurs d'un TClientdataset

Gregory - 10 févr. 2018 à 18:39 - Dernière réponse : XeGregory51 4 Messages postés samedi 10 février 2018Date d'inscription 27 juillet 2018 Dernière intervention
- 11 févr. 2018 à 06:35
Bonjour,

Comment peut on ignorer les erreurs d'un TClientdataset lors d'une mauvaise saisie ?

J'utilise un formulaire dynamique pour la saisie des données.



procedure TForm1.OnAddRecordClick(Sender: TObject);
var
  I: Integer;
  MyForm: TForm;
  ScrollBox: TScrollBox;
begin
  if not MyDataSet.Active then
    Exit;

  MyForm := TForm.Create(nil);
  with MyForm do
  begin
    Caption := 'Ajouter un enregistrement';
    BorderIcons := [biSystemMenu];
    BorderStyle := bsSingle;
    Font.Size := 10;
    Font.Name := 'Segoe UI';
    Position := poMainFormCenter;
    Width := 500;
    Height := Width;
  end;

  ScrollBox := TScrollBox.Create(MyForm);
  with ScrollBox do
  begin
    Parent := MyForm;
    Align := alClient;
    BorderStyle := bsNone;
    VertScrollBar.Tracking := True;
  end;

  for I := 0 to MyGrid.Columns.Count - 1 do
  begin
    case MyGrid.Columns[I].Field.DataType of
      ftString, ftCurrency, ftDateTime, ftInteger, ftfloat, ftAutoInc:
        begin
          with TDBEdit.Create(MyForm) do
          begin
            Parent := ScrollBox;
            Align := alTop;
            AlignWithMargins := True;
            Hint := MyGrid.Columns[I].Title.Caption;
            ShowHint := True;
            DataSource := F_MyXml.DataSource;
            DataField := MyGrid.Columns[I].Title.Caption;
          end;
        end;

      ftMemo:
        begin
          with TDBMemo.Create(MyForm) do
          begin
            Parent := ScrollBox;
            Align := alTop;
            AlignWithMargins := True;
            Height := 150;
            Hint := MyGrid.Columns[I].Title.Caption;
            ShowHint := True;
            ScrollBars := ssBoth;
            DataSource := F_MyXml.DataSource;
            DataField := MyGrid.Columns[I].Title.Caption;
          end;
        end;
    end;
  end;

  MyForm.ShowModal;
  MyDataSet.Edit;
  try
    MyDataSet.Post;
  except
    ShowMessage('Erreur !');
  end;
  MyForm.Free;
end;


Merci
Afficher la suite 

Votre réponse

3 réponses

XeGregory51 4 Messages postés samedi 10 février 2018Date d'inscription 27 juillet 2018 Dernière intervention - Modifié par XeGregory51 le 10/02/2018 à 19:44
0
Merci
J'ai ajouter un TApplicationEvents
procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
  E.Message := 'Type de données incorrect !';
  ShowMessage(E.Message);
end;


Quand pensez vous ?

Merci ;)
XeGregory51 4 Messages postés samedi 10 février 2018Date d'inscription 27 juillet 2018 Dernière intervention - 11 févr. 2018 à 06:35
J'ai trouvé aussi cette solution la, avec le (ApplicationEvents OnException) pour ignorer toute les erreurs de la class "EDatabaseError"

procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
if E.ClassName <> 'EDatabaseError' then
   begin
    ShowMessage(E.Message);
   end;
end;


mais bon, il y a surement une solution plus adaptée.
Commenter la réponse de XeGregory51
XeGregory51 4 Messages postés samedi 10 février 2018Date d'inscription 27 juillet 2018 Dernière intervention - 11 févr. 2018 à 06:19
0
Merci
J'ai chercher une autre méthode que le (ApplicationEvents OnException) pour intercepter les messages du TClientDataSet, mais en vain je n'arrive pas a prendre la main sur les exceptions.

Le problème du (ApplicationEvents OnException) c'est qu'il traite l'intégralité des exceptions de l'application, c'est pas mon but.

La question que je me pose, est ce que c'est vraiment le TClientDataSet qui génère les erreurs de saisie (TDBEdit, ...) ?

Avez vous une petite idée ?

Merci.
Commenter la réponse de XeGregory51

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.