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 :

Caractères spéciaux à l'affichage d'un dataset


Sujet :

Bases de données Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut Caractères spéciaux à l'affichage d'un dataset
    Bonjour à tous.

    J'ai un problème un peu particulier que je rencontre chez l'un de mes clients. J'ai un peu de mal à le résoudre car ce problème est aléatoire et je n'arrive pas à la reproduire. ça fait plusieurs jours que je suis dessus sans pouvoir en identifier la cause. J'ai malheureusement très peu d'indice mais je vais essayer d'expliquer au mieux les symptômes. Peut-être qu'ils parleront à l'un de vous.

    Je développe sous Delphi7 et je me connecte à nos bases de données SQL Server via les composant Unidac. Mon client utilise SQL Server 2012. Les utilisateurs se connectent à notre application via Citrix (je ne sais pas si ça a une influence mais sait-on jamais).

    J'utilise un composant "TUniTable" lié à un composant "TUniDataSource" pour afficher le contenu d'une table dans des composants "TDBGrid" ou "TDBText".

    Lors de l'ouverture de mon élément, tout se passe bien, l'affichage est correcte :

    Nom : OK.jpg
Affichages : 311
Taille : 36,9 Ko

    Mon client effectue ensuite quelques opérations :
    - Ouverture d'une fenêtre "Modal" développée dans une DLL externe
    - Dans cette fenêtre on effectue différents calculs qui modifie certaines valeurs de la table.
    - Fermeture de la fenêtre
    - On effectue un "MaUniTable.Refresh" afin de récupérer les bonnes valeurs (Celles calculées par la DLL)

    A la fin du processus, la table contient des valeurs bizarres :

    Nom : KO.jpg
Affichages : 248
Taille : 43,2 Ko

    A ce moment-là, si je vais consulter le contenu de la table directement dans la BDD, les données sont correctes, je n'ai pas ces caractères spéciaux affichés. De plus, dès que l'on fait une opération de rafraîchissement de cette table, ou si on l'édite pour modifier des données par exemple, l'affichage est à nouveau correcte.

    Une information également importante, dans la modification des données réalisée par la DLL, je ne modifie en aucun cas les champs qui s'affichent bizarrement. les modifications portent sur d'autres champs.

    Sur la 2ème image, la couleur rose des cellules n'est qu'un effet de bord de mon problème.

    Je soupçonne le "Refresh" de poser problème quelque part mais je suis un peu perdue.

    Quelqu'un a-t-il déjà rencontré ce genre de problème? Si oui par où est-ce que je peux commencer d'investiguer?

    Merci d'avance de votre aide.

    LaNono

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 658
    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 658
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Dès que je vois des caractères bizarres (mais en général c'est plus du "chinois") je pense à des problèmes d'encodage.
    Sur la 2ème image, la couleur rose des cellules n'est qu'un effet de bord de mon problème.
    Quand même, ce rose vient bien de quelque part

  3. #3
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Bonjour Sergio. merci pour votre réponse.

    C'est ce que j'ai pensé mais à aucun endroit (en tout cas pas à ce que je vois jusqu'à mainenant) je ne change d'encodage. je vais essayer de creuser de ce côté là.

    Pour le rose, oui oui, j'utilise juste l'évènement "OnPaintColumnCell" pour appliquer une couleur rose aux lignes dont un champ est différent d'une certaine valeur. du coup comme la valeur en question a également ce problème de caractère spéciaux. Le test passe Aucune magie là derrière. mais dès que j'aurai résolu le problème de base, le second sera résolu aussi.

  4. #4
    Membre chevronné Avatar de blonde
    Femme Profil pro
    Développeur Delphi
    Inscrit en
    Septembre 2003
    Messages
    278
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Delphi

    Informations forums :
    Inscription : Septembre 2003
    Messages : 278
    Par défaut
    Je ne suis pas sûre que ce soit un problème d'encodage. On dirait plutôt que la chaîne que tu vas lire est mal remplie.
    Ta grid est remplie directement par le datasource ? Tu ne fais aucun traitement avant affichage ?

  5. #5
    Membre éclairé
    Femme Profil pro
    Inscrit en
    Avril 2007
    Messages
    209
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 209
    Par défaut
    Bonjour Blonde, merci pour ta réponse.

    Oui j'utilise des datasource pour afficher les valeurs dans les grilles, sans aucune manipulation intermédiaire. De plus j'ai le même problème avec des champs de type DBText par exemple.

    Le fait que ma cellule vienne en rose indique également que même un accès aux données via MaUniTable.FieldByName('MON_CHAMP').AsString retourne le même genre de caractères spcéiaux.
    Je pense donc que ça n'est pas vraiment un problème d'affichage mais plutôt un problème de gestion des données dans le composant TUniTable.

    Merci d'avance.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Décembre 2014
    Messages : 115
    Par défaut
    Bonjour,
    Je pencherais sur des types de string <> entre le prog et la DLL. Elle reçoit quoi comme type de param (des records structurés, des string, les champs (fields) de la table, elle re-ouvre la table pour y accéder ?
    Il y a beaucoup de type de string shortstring ou string[x]n Unicode, Ansistring, pChar, pAnsiChar ...
    As-tu les sources de la DLL, si tu faisais la même chose que la DLL directement dans ton prog, aurais-tu le mm prob ?
    solilog

Discussions similaires

  1. [PDO] Caractère spéciaux et affichage
    Par Richou42 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/05/2016, 12h00
  2. [Encodage] Caractères spéciaux et affichage sur mobile
    Par Patrice.H dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 01/03/2011, 16h26
  3. Caractères spéciaux et affichage
    Par DjChat dans le forum Langage
    Réponses: 3
    Dernier message: 09/07/2008, 15h36
  4. [MySQL] caractères spéciaux à l'affichage
    Par Marty000 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 02/05/2008, 12h12
  5. [Delphi+Access] Pb affichage caractère spéciaux
    Par fred64 dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/06/2004, 10h53

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