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

Composants VCL Delphi Discussion :

L'ensemble des données n'est pas en mode Edition ou Insertion


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 11
    Par défaut L'ensemble des données n'est pas en mode Edition ou Insertion
    j'ai une fiche "Saisie d'un nouveau employé",lorsque je click sur le bouton "Enregister" je reçois en sortie le message
    d'erreur suivant:
    ('L'ensemble des données n'est pas en mode Edition ou Insertion').En voici un morceau du code du bouton 'Enregistrer':

    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
    21
    22
    begin
    table1.insert;
    table1.Edit;
    Emp:=DBEdit1.text;
    table1.first;
     for i:=1 to table1.recordcount do
    if table1.fieldValues['Matricule_Employé']=Emp then
     begin
     messagedlg('Ce numéro est déjà attribué,veuillez introduire un autre numéro',mtinformation,[mbok],0);
    // DBEdit1.Text:='';
     exit;
     end;
     
    table1.fieldbyname('Matricule_Employé').asstring:=DBEdit1.text;
    table1.fieldbyname('Nom_Employé').asstring:=edit2.text;
    table1.fieldbyname('Prenom_Employé').asstring:=edit3.text;
    table1.fieldbyname('Adresse_Employé').asstring:=edit4.text;
    table1.fieldbyname('Telephone_Employé').asstring:=(MaskEdit1.text);
    table1.fieldbyname('Fonction_Employé').asstring:=edit5.text;
    table1.Edit;
    table1.post;
    showmessage ('Opération d''Enregistrement effectuée avec succés!!');
    ///SVP si quelqu'un peut m'aider,c'est urgent.

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut


    retire déjà l'instruction "table1.Edit" qui est inutile après "table1.insert", et celle avant "table1.post", car un appel à "table1.Edit" effectue un Post si nécessaire.

  3. #3
    Expert confirmé
    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 : 62
    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
    Par défaut
    Salut
    Citation Envoyé par devilbyme Voir le message
    L'ensemble des données n'est pas en mode Edition ou Insertion
    Tu obtiens ce message à cause du Table1.First que tu effectues afin d'effectuer une recherche si le matricule pour s'assurer de son absence.
    First effectue un Post sur le DataSet (Table1) si celui-ci est à l'état dsInsert ou dsEdit avant d'effectuer le déplacement.

    Dans la mesure où tu dois avoir une clé primaire sur le matricule (enfin j'espère ) je gèrerais plutôt l'échec du Post via l'évènement OnPostError pour informer l'utilisateur.

    Citation Envoyé par Evaris
    ... car un appel à "table1.Edit" effectue un Post si nécessaire.
    En fait l'Edit est simplement ignoré si le DataSet est déjà en mode d'édition (dsInsert ou dsEdit).

    @+ Claudius.

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Par défaut
    Citation Envoyé par Cl@udius Voir le message
    En fait l'Edit est simplement ignoré si le DataSet est déjà en mode d'édition (dsInsert ou dsEdit).

    en effet, où avais-je la tête

  5. #5
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Par défaut
    @Salut,


    A ta place j'utiliserai u Locate sur ta table :

    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
    21
    22
    23
    24
      With Table1 do
      begin
        try
          Open;
          if Locate('Matricule_Employé',DBEdit.Text,[]) Then
          begin
              // Tu peux ici aussi gérer un Edit; le locate te permet d'être positionné dessus
                messagedlg('Ce numéro est déjà attribué,veuillez introduire un autre numéro',mtinformation,[mbok],0);
          end
          else
          begin
             Insert; //ou Append;
             fieldbyname('Matricule_Employé').asstring:=DBEdit1.text;
             fieldbyname('Nom_Employé').asstring:=edit2.text;
             fieldbyname('Prenom_Employé').asstring:=edit3.text;
             fieldbyname('Adresse_Employé').asstring:=edit4.text;
             fieldbyname('Telephone_Employé').asstring:=(MaskEdit1.text);
             fieldbyname('Fonction_Employé').asstring:=edit5.text;
             post;
          end;
        finally
          Close;
       end;
     end; {End With}

    @+

  6. #6
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    ................
    begin
    table1.insert; un insert ?
    table1.Edit; ensuite un edit ??
    Emp:=DBEdit1.text;
    table1.first; et un first ???
    ....................
    idem que Buzz

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/05/2014, 14h43
  2. Réponses: 3
    Dernier message: 16/03/2012, 19h18
  3. l'ensemble de donnée n'est pas en mode edition ou insertion
    Par thered dans le forum Bases de données
    Réponses: 5
    Dernier message: 25/09/2009, 17h27
  4. Erreur: Ensemble de donnée n'est pas en mode édition
    Par pascal07 dans le forum Bases de données
    Réponses: 4
    Dernier message: 07/11/2008, 21h20
  5. ensemble de données pas en mode edition
    Par XloX dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/06/2005, 12h17

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