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 :

[D2006][BDE] Contenu d'un champ contenant des espaces


Sujet :

Bases de données Delphi

  1. #1
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut [D2006][BDE] Contenu d'un champ contenant des espaces
    Bonjour,

    Dans une DB j'ai un champ de 2 caractéres qui à la création contient soit le numéro du mois ('01'..'12') ou 2 espaces (' ').

    Il semblerait que dans certaines circonstances, à la copie d'un enregistrement, à la lecture du champ ...,
    il y ait confusion entre les 2 espaces et une chaine vide ('').

    Comment résoudre ce problème qui est génant quand on utilise un filtre ... ?

    Il me semble que sous Delphi 3 je n'avais pas ce problème.


    PL

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

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Tu ne précises pas la DB ? bon avec BDE et Delphi3, je suppose Paradox !

    Ton problème d'espace non géré me rappelle, une expérience en 2002 !
    C'est par contre en InterBase, on avait changé Paradox à InterBase, le problème est apparu à ce moment !

    J'ai des Locate qui ne passait pas car il me considérait des espaces qui n'existait pas dans mon champ, c'était l'inverse pour lui, par défaut une chaine était rempli d'espace !
    Cela venait du mauvais choix du type CHAR dans IB pour remplacer le type A de Paradox, VARCHAR lui ne posait pas ce problème !

    Si tu utilises IB, c'est peut-être une copie d'un champ CHAR dans un champ VARCHAR directement en SQL, je crois qu'il ne copie pas les espaces dans ce cas ???

    Si tu utilises Paradox, c'est bien étrange, en général, j'évite l'utilisation de l'espace comme bourrage, je préfère la valeur NULL bien plus fiable !
    D'ailleurs, j'utiliserais plutôt un entier pour stocker 1 à 12, 0 ou NULL indiquant une valeur vide !
    Ensuite, dans l'affichage, avec Format('%.2d', ...);, tu ajoutes les 0

    Comment copies-tu les champs ?
    AsString ? AsVariant ? Value ?
    Pas de Trim qui traine ?
    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 averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    Réponse à ST.

    La DB est dBase (je l'utilisais sous DOS avant de passer à Delphi 3).

    Le champ indique le mois où l'enregistrement est complété, d'où rien ou l'indication du mois en caractères.
    En fait la confusion se produit quand avec la procédure ci-dessous je complète un fichier existant "vidé" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     procedure TfichSt.AjoutFichDB(TableSource, TableDestination : Ttable; NomFDest : string);
    begin
      TableDestination.TableName := NomFDest;  
      TBM.Destination := TableDestination;     
      TBM.Source := TableSource;               
      TBM.Mode := batAppend;
      TBM.Execute;                            
    end;
    Je n'utilise pas de Trim dans ce contexte.

    Après exécution de la procédure "AjoutFichDB" avec une procédure "Extraction" qui filtre les enregistrements
    si je configure le filtre DBQ=' ' aucun enregistrement n'est affiché,
    par contre en faisant DBQ=Null la liste correcte des enregistrements est affichée.

    Merci à Shaile Troll pour son intérêt et ses indications.

  4. #4
    Membre averti

    Homme Profil pro
    ingénieur, retraité
    Inscrit en
    Février 2007
    Messages
    230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur, retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 230
    Points : 332
    Points
    332
    Par défaut
    En définitive pour résoudre mon problème aprés mise à jour du fichier j'utilise un SetFields(....,' ') pour corriger les valeurs du champ DBQ.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/03/2012, 10h11
  2. Réponses: 2
    Dernier message: 15/02/2010, 01h07
  3. Transformation de champs contenant des listes d'ID
    Par bastoonet dans le forum Alimentation
    Réponses: 0
    Dernier message: 28/01/2009, 14h55
  4. Réponses: 7
    Dernier message: 15/03/2007, 08h50
  5. insérer un champs contenant des apostrophes ou es guillemets
    Par renofx1 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 18/01/2006, 15h49

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