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 :

[VCL] ClientDataset, mise à jour


Sujet :

Bases de données Delphi

  1. #1
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 214
    Points : 35 907
    Points
    35 907
    Billets dans le blog
    54
    Par défaut [VCL] ClientDataset, mise à jour
    Bonjour,

    J'avoue que je n'utilise que très peu les Clientdataset sauf le pour le mythique fichier Biolife.xml et généralement en lecture seule. Toujours est-il que j'ai voulu dans un programme test
    Nom : Capture.PNG
Affichages : 188
Taille : 59,3 Ko
    traduire les noms et pourquoi pas notes.

    Ma question arrive. J'ai modifié le nom du ClownTriggerFish, validé. Cela ce répercute bien sur les deux listes (ControlList et Listview) mais quel ne fut pas ma surprise quand j'ai relancé le programme Plus d'Image ni de Notes ! Au début j'ai mis ça sur le compte des Livebindings (le TEdit et le TMemo étant liés), je les ai changé en TDBedit et TDBMemo, j'ai même déclaré les champs Graphics et Notes en ReadOnly mais, non, le problème persiste.
    J'ai certainement raté une marche laquelle ?
    Pour reformuler autrement, comment mettre à jour les données d'un TClientDataset (fichier XML) ?
    Moindre mal, si j'utilise le fichier cds, je n'ai pas ce problème (ouf).
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    12 261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 12 261
    Points : 21 665
    Points
    21 665
    Par défaut
    J'ai un souvenir vague d'un CDS que je ne pouvais pas enregistrer en dfXMLUTF8, il n'arrivait pas à le recharger, c'était en XE2, on peut espérer cela résolu depuis ... ou pas ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2017
    Messages
    1 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : octobre 2017
    Messages : 1 062
    Points : 3 749
    Points
    3 749
    Par défaut
    Bonjour,

    J'utilise fréquemment les TClientDataSet et j'ai essayé à plusieurs reprises de les faire fonctionner avec LiveBinding et j'avoue... Je n'ai jamais réussi!

    La seule solution que j'ai trouvé et qui fonctionne à coup sûr est de gérer les données dans les TClientDatasSet via le code à l'aide des fonctions mises à dispositions dans les TClientDataset (append, locate, lookup, etc...)

  4. #4
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 269
    Points : 666
    Points
    666
    Par défaut
    Bonjour,

    Citation Envoyé par SergioMaster
    surprise quand j'ai relancé le programme Plus d'Image ni de Notes !
    Je ne connais pas les LiveBinding pas encore imprégner du XE
    Avez-vous essayer de sauvegarder juste après le post puis de recharger le cds ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    cds.Edit;
    // modif des champs
    cds.Post;
    cds.SaveToFile('chemin\fichier.cds');
    cds.LoadFromFile('chemin\fichier.cds');
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 214
    Points : 35 907
    Points
    35 907
    Billets dans le blog
    54
    Par défaut
    Bonjour,

    effectivement, je pense que vous avez vu juste clientdataset1.SaveToFile('chemin\fichier.xml');
    Avez-vous essayer de sauvegarder juste après le post puis de recharger le cds ?
    toutefois je n'appliquerai pas le code, préférant faire la sauvegarde en cloture de programme.
    En effet, si un SavetoFile après chaque modification se défend, un LoadFromFile repositionnerai en début de fichier et n'est pas nécessaire, les modifications sont dans le cache.
    J'ai certainement raté une marche
    c'était celle là !

    Tellement habitué aux base de données je n'ai pas pensé à sauvegarder le fichier à la clôture du programme je savais bien que c'était tout bête.
    J'insiste bien :
    - cela n'a rien à voir avec LiveBindings, comme j'avais pu le constater en utilisant des composants DBxxx
    - c'est uniquement avec un clientdataset de type xml avec le fichier cds ça fonctionne comme une BDD

    Il faut que je teste, bien sûr, puisque j'ai contourné mon problème initial en utilisant biolife.cds à la place de biolife.xml mais je considère le sujet
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  6. #6
    Membre émérite
    Avatar de ALWEBER
    Homme Profil pro
    Expert Delphi
    Inscrit en
    mars 2006
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Expert Delphi

    Informations forums :
    Inscription : mars 2006
    Messages : 1 391
    Points : 2 608
    Points
    2 608
    Billets dans le blog
    10
    Par défaut Autre solution
    Pour reprendre les posts précédents tu peux peux être faire un saveToStream/LoadFromStream

  7. #7
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 269
    Points : 666
    Points
    666
    Par défaut
    Bonjour,

    Citation Envoyé par SergioMaster
    En effet, si un SavetoFile après chaque modification se défend, un LoadFromFile repositionnerai en début de fichier et n'est pas nécessaire, les modifications sont dans le cache.
    Effectivement il n'est pas nécéssaire d'appeller cette méthode à chaque post puisque les données persistent en mémoire
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  8. #8
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique
    Inscrit en
    janvier 2007
    Messages
    13 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : janvier 2007
    Messages : 13 214
    Points : 35 907
    Points
    35 907
    Billets dans le blog
    54
    Par défaut
    Après avoir visionné et revisionné une vidéo d'Alister Christie présentée lors du webinaire "Moving Fish Facts to the Future!" j'ai remarqué qu'il ajoutait avant la sauvegarde une instruction :
    ClientDataset1.MergeChangeLog

    La vidéo dure 1 heure, la partie code sensu stricto beaucoup moins longtemps, aussi je vous indique ci-dessous une échelle de temps des "points forts" (selon moi)

    mn Contenu
    7 Début, introduction objectif du programme
    9 Sauvegarde du clientdataset
    11 Api Wikimedia (https://commons.wikimedia.org/wiki/Main_Page?uselang=fr), https://commons.wikimedia.org/wiki/C...API?uselang=fr )
    20 Expressions régulières
    23 Chargement image/s
    25 Bogue de chargement dû au codage de certaines images (ENDIAN/BIG ENDIAN) et solution (a fait l'objet d'un RSP sur le Quality Central)

    Je tacherai de modifier mon programme en conséquence, il serait intéressant de voir ce que cela va impliquer au niveau du TControlList et de cette position das le stream qui m'a toujours ennuyée
    Je pense même que c'est ce qui a poussé Alister à faire ces changements dans la table biolife
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Tokyo, Rio, Sidney) ,D11 (Alexandria)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs Etats : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Ubuntu, Androïd

  9. #9
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    mai 2002
    Messages
    1 269
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : mai 2002
    Messages : 1 269
    Points : 666
    Points
    666
    Par défaut
    Bonjour,

    Merci pour la video trés utile
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

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

Discussions similaires

  1. Mise à jour de FastReport VCL - version 6.7
    Par SergioMaster dans le forum FastReport
    Réponses: 1
    Dernier message: 14/09/2021, 12h46
  2. ClientDataSet ordre mise à jour
    Par aallal dans le forum Bases de données
    Réponses: 17
    Dernier message: 26/05/2009, 15h56
  3. Réponses: 4
    Dernier message: 17/03/2009, 13h25
  4. Réponses: 1
    Dernier message: 27/08/2008, 09h40
  5. Réponses: 2
    Dernier message: 12/02/2003, 16h26

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