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 :

Delphi 7 ZEOS Sqlite - Message d'erreur POST: 0 record(s) updated. Only one record should have been update


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    GO
    GO est déconnecté
    Membre confirmé Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Par défaut Delphi 7 ZEOS Sqlite - Message d'erreur POST: 0 record(s) updated. Only one record should have been update
    Bonjour,

    J'ai juste une appli pour tester ZEOS 7.2.4-stable et Sqlite-3 32bits avec Delphi 7 : Une Form avec une SQLConnexion, une Ztable, un Datasource, un DBGrid, et un DBNavigator.

    A l'exécution la grille est remplie, j'essaye de modifier un champ et je "post" avec le V du DBNavigator (le pb est le même si je fais un "insert" et que je "post"), j'ai le même message à chaque fois : "0 record(s) updated. Only one record should have been update".

    Comment puis-je poster mes modifications sans soucis ? si j'active à True la propriété CachedUpdates de mon composant Ztable, et que je fais les mêmes manips je n'ai plus le message d'erreur mais rien ne se passe enfin rien n'est "posté" en base, de plus quand j'entre dans le champ de ma grille en modification celui-ci est vidé contrairement lorsque cette propriété est à False..??

    Merci de votre aide

  2. #2
    GO
    GO est déconnecté
    Membre confirmé Avatar de GO
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 114
    Par défaut
    Il suffisait juste d'ajouter les primary key dans ma BDD.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 660
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Oui et non.
    Oui, ajouter des primary key c'est nécessaire (même s'il s'agit d'une colonne technique)

    Non, le problème en fait vient des options utilisées pour la ZTable ou la ZConnection. Il faut bien comprendre que la ZTable est en fait une encapsulation d'une ZQuery et d'un ZUPdateSQL où les différentes commandes sont générées automatiquement
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM NOMTABLE
    pondéré par la déclaration des champs DataFields

    pour ce qui est du UPDATE
    l'option wheremode , importante joue sur la clause WHERE du SQL généré
    wmWhereKeyOnly (nécessite bien sûr un clé primaire)
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     UPDATE NOMTABLE SET ..... WHERE COLKEY=:COLKEY
    wmWhereAll va créer une requête beaucoup plus complexe au niveau de la clause WHERE, tous les champs seront vérifiés

    l'option updateMode joue sur la partie SET ... donc une différence entre umUpdateAll (toutes les colonnes déclarées) umUpdateChanged (uniquement les colonnes dont les valeurs ont changées)

    Enfin pour une Table (et voilà pourquoi une erreur est levée) on s'attend à ce qu'une seule ligne soit être modifiée et non plusieurs. C'est donc une sorte de garde-fou (il me semble que l'on peut le désactiver par une option ou une propriété mais je ne m'en souviens plus)

    Pour ces raisons, j'utilise de moins en moins les xxTable (remplacer xx par TZ pour Zeos, TFD pour Firedac etc..) et préfère les xxQuery associées à des xxUpdateSQL

  4. #4
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut Même problème
    Coucou me revoilà,
    Moi aussi j'ai ce problème de message "0 record(s) updated. Etc..." depuis que j'ai fait la manip suivante, tenez-vous bien :
    1. pour ajouter un enregistrement ancien et qu'il prenne sa place (chose que Sqlite ne peut pas faire) j'ai rajouté cet enregistrement à la BDD sous Access que j'ai mise à jour facilement avec renumérotation, puis conversion en CSV.
    2. J'ai converti ensuite ma BDD Access en Sqlite dans une nouvelle BDD dans laquelle j'ai importé mon CSV.
    Tout fonctionne sauf que je ne peux plus mettre à jour des enregistrements anciens, seulement ceux que je rajoute depuis, sinon j'ai le fameux message 0 contact(s), etc...
    J'ai regardé du côté des clés primaires comme les posts précédents, mais toujours le message.
    Merci de m'aider encore une fois.
    Bon WE à tous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/04/2011, 14h58
  2. [DELPHI 7][DLL] Message d'erreur s'il n'y a pas de DLL
    Par Stef.web dans le forum Delphi
    Réponses: 9
    Dernier message: 01/05/2007, 17h55
  3. Réponses: 3
    Dernier message: 19/04/2007, 11h34
  4. Réponses: 3
    Dernier message: 12/04/2006, 11h07
  5. [delphi 5 pro] Form.ShowModal, message d'erreur
    Par mariustrezor dans le forum Bases de données
    Réponses: 6
    Dernier message: 07/12/2004, 08h22

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