IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Traitement Particulier Avec Dbnavigate??


Sujet :

Bases de données Delphi

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Traitement Particulier Avec Dbnavigate??
    Slt à tous.

    depuis un bon bout de temps je cherche à utiliser mon dbnavigate de manière à satisfaire certain besoin ,mais sans succès.
    je m'explique: j'aimerais que mon dbnavigate , notament son boutton nbPost reagit en fonction du contenu de mes champs. si au moins un champs est vide , en appuyant sur le nbpost du dbnavigate qu'un message soit affiché et qu'il n'y ait pas d'insertion dans ma table,ce pour eviter d'avoir une table avec des champs vides.

    pour cela j'ai mis un code derriere le BEFOREACTION de mon dbnavigate et dans cette procedure j'ai remplacer la variable button par nbpost,pour q'uil reagit seulement au clic sur ce boutton.

    mais malheuresement mon dbnavigate reagit au clic de n'importe quel boutton,(il me montre le message au clic de n'importe quel boutton) et en plus à chaque fois l'enregistrement est envoyer dans ma table
    que mes champs soient vide ou non.

    EN RESUME
    J'AIMERAIS SAVOIR S'IL YA UNE FONCTION OU UNE ASTUCE QUELCONQUE QUI PERMET D'ABORTER L'ACTION D'UN DBNAVIGATE SI CERAINES CONDITIONS NE SONT PAS VERIFIER.

    MERCI D'AVANCE

  2. #2
    Membre averti Avatar de Bejaia-In
    Inscrit en
    Avril 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 365
    Points : 392
    Points
    392
    Par défaut
    Si tu veux qu'un enregistrement vide ne soit pas validé, il suffit de mettre ce code dans l'évenement BeforePost de ta table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if DataSet.IsEmpty then Abort;// Si la table est vide ne pas valider
    if DataSet.FindField('UnChampdeTable').isNull then Abort;//Si le champ est vide ne pas valider.
    ....................................................................
    Aidez-vous... Dieu vous aideras et nous aussi..
    ....................................................................

  3. #3
    Membre expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Points : 3 329
    Points
    3 329
    Par défaut
    <- mets le code dans le code BeforePost de ta table c'est beaucoup mieux.

    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
    procedure TForm1.Table1BeforePost(DataSet: TDataSet);
    var I:integer;
        SaisieOk : Boolean;
    begin
     SaisieOk := True;
    For i:=0 to Table1.FieldCount-1 do
      begin
       if Table1.Fields[I].IsNull then
          begin
           SaisieOk := False;
           Exit;
          end;
      end;
     
    if not SaisieOK Then
       begin
        ShowMessage('Vous devez saisire le champs :'+Table1.Fields[I].FieldName);
        Abort;
       end;
    end;

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Bejaia-In
    Si tu veux qu'un enregistrement vide ne soit pas validé, il suffit de mettre ce code dans l'évenement BeforePost de ta table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if DataSet.IsEmpty then Abort;// Si la table est vide ne pas valider
    if DataSet.FindField('UnChampdeTable').isNull then Abort;//Si le champ est vide ne pas valider.
    Merci pour ton code ,ça m'a beaucoups aidé;
    mais tu vois le pb qu'à chaque boutton de DBnavigate on p associer une procedure befor action ( ) ;dont l'un des parametres est le nom du boutton concerné;
    comme ca le code mis dans ce procedure ne se declenche qu'au clic du boutton mentionné comme parametre dans le le procedure beforeaction,mais le mien je le donne comme parametre nbpost, pour que le code se declenche seulement au clic de nbpost,mais le code se declenche au clic de n'importe quel boutton ,je ne sais pas pourquoi.

    stp aide moi à le savoir.

    merci

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut,

    Citation Envoyé par songue77
    mais tu vois le pb qu'à chaque boutton de DBnavigate on p associer une procedure befor action ( ) ;dont l'un des parametres est le nom du boutton concerné
    Ce n'est pas exactement ça ! Tu ne peux associer au DBNavigator qu'un seul évènement BeforeAction. Lors d'un click sur l'un des boutons du DBNavigator, le paramètre Button indique le bouton sur lequel a été effectué le click.

    Voici un code exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.DBNavigator1BeforeAction(Sender: TObject;
      Button: TNavigateBtn);
    begin
      if Button = nbPost then
        // Click sur Bouton Post
        // Traitement en conséquence
        //...
      else if Button = nbCancel then
        // ...
    end;
    L'aide de Delphi précise:
    Description
    Ecrivez un gestionnaire d'événement BeforeAction pour effectuer des actions spécifiques avant la réponse standard au choix d'un bouton du navigateur de base de données.
    Il faut que tu gardes à l'esprit que tu ne peut pas annuler l'action standard du bouton (Post dans ton cas).

    Je te propose donc de t'orienter vers les solutions proposées par Bejaia-In et Aityahia.

    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 15/05/2010, 16h17
  2. Plantage d'une application CWinApp traitement particuliers
    Par Aradesh dans le forum Visual C++
    Réponses: 12
    Dernier message: 07/04/2008, 11h39
  3. Filtrage particulier avec ethereal
    Par Supergizmo dans le forum Développement
    Réponses: 1
    Dernier message: 29/12/2006, 17h32
  4. Menu un peu particulier avec des onmouseover
    Par Jinroh77 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 21/02/2006, 14h30
  5. Utiliser les exceptions pour un traitement particulier ?
    Par Blustuff dans le forum Assembleur
    Réponses: 11
    Dernier message: 01/12/2004, 02h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo