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 :

Modification non enregistrée


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut Modification non enregistrée
    Bonjour,
    J'ai actuellement un Grid lié à un DataSet via un DataSource, jusqu'ici tout va bien.
    Ce Grid permet d'éditer des données qui, après un clique sur un bouton, sont copiées du DataSet vers un fichier text selon un certain formatage.
    Le problème survient lorsque l'utilisateur ajoute une ligne au grid et qu'il renseigne des données puis qu'il clique sur le bouton d'enregistrement sans être sorti de la dernière cellule éditée.
    Dans ce cas, lors du parcourt du dataset, lorsque j'arrive sur cet enregistrement particulier et même ce champs précisément (le champs qui correspond à la cellule du grid qui est en cours d'édition), j'obtient cette erreur:
    Impossible de convertir le variant de type (Null) en type (String).

    Pourtant je force bien l'enregistrement des données grâce à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Sender.State in dsEditModes then
        Sender.Post;
    Quelqu'un a une idée?
    merci d'avance, n'hésitez pas à me demander plus d'informations si je n'ai pas été clair.

  2. #2
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    Citation Envoyé par ludogoal Voir le message
    Pourtant je force bien l'enregistrement des données grâce à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Sender.State in dsEditModes then
        Sender.Post;
    en fait tu ne testes pas le bon état car avec ce que tu as mis tu ne valides les données que si la table est en mode modification et pas insertion.

    Quand tu fais un Append ou un Insert l'état est à dsInsert, alors que quand tu fais un Edit l'état est à dsEdit.

    Fait comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if Sender.State in [dsInsert,dsEdit] then
        Sender.Post;
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  3. #3
    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
    Citation Envoyé par Rayek Voir le message
    en fait tu ne testes pas le bon état car avec ce que tu as mis tu ne valides les données que si la table est en mode modification et pas insertion.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      dsEditModes = [dsEdit, dsInsert, dsSetKey];

    Ce Post intervient quand ? Dans la procédure associé à ton bouton de validation ? Tu ne fais rien avant ?

    @+ Claudius

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut
    Oui, mon Post intervient au moment du clique sur le bouton, c'est la première chose que je fais et j'ai vérifié en Debug, je passe bien dedans..... Je vois pas trop comment m'en sortir....

  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
    Donc le Post est bien effectué que ce soit en Insertion ou Modification de données.

    Citation Envoyé par ludogoal Voir le message
    Le problème survient lorsque l'utilisateur ajoute une ligne au grid et qu'il renseigne des données puis qu'il clique sur le bouton d'enregistrement sans être sorti de la dernière cellule éditée.
    Je ne pense pas que le problème vienne de là, puisque tu forces correctement le Post.

    Tu utilises le bon vieux DBGrid de la VCL ?
    [Edit]
    Tu effectues des traitements sur BeforePost, AfterPost, etc... ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut
    Je ne pense pas que le problème vienne de là, puisque tu forces correctement le Post.
    Non, j'utilise un Grid maison développé par ma société et qui intègre des lookup et autres composants plus sympas.
    Tu effectues des traitements sur BeforePost, AfterPost, etc... ?
    Non, je ne fais rien d'autre!!!!!!!!!!!!!!

    Après vérification, le problème est plutôt que les champs non remplis (qui ne sont pas obligatoires) sont considérés comme Null et non comme des chaines vides....

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    143
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 143
    Points : 59
    Points
    59
    Par défaut
    J'ai contourné le problème en initialisant les valeurs sur le OnNewRecord et en testant si la valeur est Null avant l'insertion dans le fichier.
    Merci à tous pour votre aide

  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
    Salut

    Citation Envoyé par ludogoal Voir le message
    Ce Grid permet d'éditer des données qui, après un clique sur un bouton, sont copiées du DataSet vers un fichier text selon un certain formatage.
    Alors le problème n'était pas lié à ton DBGrid, mais devait se situer dans ton traitement après le Post.

    Ravi de voir que tu as trouvé une solution.

    @+ Claudius

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

Discussions similaires

  1. Non modification d'enregistrement
    Par marcelstan dans le forum Access
    Réponses: 7
    Dernier message: 15/07/2014, 15h29
  2. [LibreOffice][Texte] modifications non enregistrées (Ubuntu)
    Par ol9245 dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 21/05/2014, 12h29
  3. Modification non enregistrée
    Par nah_wah dans le forum BSD
    Réponses: 4
    Dernier message: 30/07/2011, 22h31
  4. [ToutlookApplication] Classe non enregistrée
    Par nico33410 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 22/08/2005, 10h36
  5. [netbeans] Modifications non prises en compte
    Par nadass dans le forum NetBeans
    Réponses: 6
    Dernier message: 07/04/2005, 13h49

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