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 :

Validation d'une modification


Sujet :

Bases de données Delphi

  1. #1
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut Validation d'une modification
    salus à tous

    Je vous explique mon probleme, je fais une requete dans un "Query".
    J'ai connecté une dbgrid au query par le biais d'un datasource.

    Grace a cette requete j'affiche un historique que j ai dans ma base de données. Quand l'utilisateur veut rentrer sur une nouvelle ligne, il doit cliquer sur un bouton qui appele la fonction :

    puis il fait la modification dans des dbedits (qui sont eux aussi connecté a la datasource.

    L'utilisateur dispose d'un autre bouton s'il veut annuler le travail qui est en cours

    Le probleme que j'ai , c est que si l'utilisateur clique dans la dbgrid pendant l'édition d'un champ, le champ est automatiquement validé...Moi, je voudrais que l'utilisateur clique sur un bouton pour que la mise a jour soit prise en compte.

    Comment puis-je faire pour résoudre mes problèmes. Merci d'avance.

  2. #2
    Invité1
    Invité(e)
    Par défaut une solution
    bonsoir

    la solution que tu peux faire a mon avis c'est de mettre la propriété

    READONLY du DBGRID à false quand il fait un append, et la remettre à true

    quand il fait un CANCEL ou bien quand il clique sur le bouton de validation.

    bonne chance

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Les données seront toujours validées au changement de ligne.
    Il n'y a que l'édition de l'enregistrement en cours sur une fiche indépendante qui te permettra de mettre deux boutons de validation et d'annulation.

  4. #4
    Invité1
    Invité(e)
    Par défaut BEFORESCROLL
    sinon tu utilises l'evenement BEFORESCROLL c.à.d

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    procedure TForm1.Query1BeforeScroll(DataSet: TDataSet);
    begin
    Query1.cancel
    end;
    BEFORESCROLL se produit quand une application va passer d'un enregistrement à un autre.

    ce qui a pour resultat d'annuler les modifiactions

  5. #5
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Désolé, mais la solution avec beforescroll ne fonctionne pas, cela valide la ligne quand meme.

  6. #6
    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

    C'est plutôt dans le BeforePost que je ferais le traitement avec un MessageDlg, pour confirmer le Post ou non, que j'annulerais le cas échéant avec un Cancel sur le DataSet.

    @+ Claudius

  7. #7
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Perdu ça ne fonctionne pas non plus.

  8. #8
    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
    Montre-nous le code que tu as mis en place dans le OnBeforePost.

  9. #9
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Le voila:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TFrmGstnArbre.MyQueryhistoriqueSpecBeforePost(DataSet: TDataSet);
    begin
      if dataset.State in [dsInsert, dsEdit, dsSetKey] then
        DataSet.Cancel;
    end;

  10. #10
    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
    Je voyais plus quelque chose comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TFrmGstnArbre.MyQueryhistoriqueSpecBeforePost(DataSet: TDataSet);
    begin
      if MessageDlg('Valider votre saisie ?', mtConfirmation, mbOkCancel, 0) <> mrOk   then
        Abort;
    end;
    Inutile de tester l'état du DataSet puisqu'il est forcément différent de dsBrowse si on entre dans le BeforePost.
    Puis il est préférable d'utiliser Abort (au lieu de Cancel qui va annuler la saisie) pour forcer l'utilisateur à cliquer sur les boutons Valider ou Annuler.

    @+ Claudius

  11. #11
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Oui je suis d acord , faut pas que jeteste l'état du dataset.

    Par contre chez moi la méthode abort n'est pas disponible dans mon dataset.

  12. #12
    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
    Abort n'est pas une méthode du TDataSet, mais une procédure de SysUtils qui annule l'envoi (cad le Post) avant qu'il ne soit effectif.

    @+

  13. #13
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Désolé mais cette méthode ne fonctionne pas non plus

  14. #14
    Invité1
    Invité(e)
    Par défaut
    Bonjour

    J’ai trouvé cette solution, j’espère qu’elle marchera


    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
     
    var validation:boolean;
     
     
    procedure TForm1.validerClick(Sender: TObject); //j'utilse un bouton valider
    begin
    validation:=true;
    table1.post;
    end;
     
    procedure TForm1.Table1BeforePost(DataSet: TDataSet);
    begin
    if  not validation then
    begin
    table1.Cancel;
    table1.Delete;// j'ai remarqué qu'il y a insertion du meme enregistrement alors je le supprime
    end;
    validation:=false;
    end;
    bonne journée

  15. #15
    Membre averti

    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    908
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 908
    Points : 447
    Points
    447
    Par défaut
    Merci samy larson
    J'essaye de tester ça dans la journée

Discussions similaires

  1. [PDE] Problème pour sauvegarder une modif dans un éditeur
    Par simsky dans le forum Eclipse Java
    Réponses: 11
    Dernier message: 11/08/2005, 15h05
  2. Enregistrer une modification dans un formulaire
    Par micheline dans le forum Access
    Réponses: 5
    Dernier message: 26/06/2005, 19h13
  3. Réponses: 5
    Dernier message: 28/04/2005, 10h38
  4. Récupération de données validées dans une pop-up
    Par hdd dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 16h47
  5. [C#] Validation d'une form
    Par royrremi dans le forum ASP.NET
    Réponses: 3
    Dernier message: 31/05/2004, 22h23

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