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 :

Problème de datatype sur un CSV via ADO


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut Problème de datatype sur un CSV via ADO
    bonsoir à tous,

    j'ai une appli D7 qui se connecte sur des fichiers SCV au travers de l'ADO et tout fonctionne bien, enfin je veux dire que la DBGrid reproduit fidèlement les données ... sauf dans un fichier et sur un champ particulier où à partir du 201 ème enregistrement la valeur est interprétée comme vide alors qu'une donnée de type numérique est présente.

    voici le code de la connexion, je ne pense pas que ce soir pertinent mais bon, cela peut toujours servir à d'autres ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ADOTable1.close;
    ADOConnection1.Close;
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0; Data Source='+ExtractFilePath(openDialog1.FileName)+';Extended Properties="TEXT;HDR=YES;FMT=Delimited;"';
    ADOTable1.TableName := StringReplace(ExtractFileName(opendialog1.FileName),'.','#',[]);
    ADOConnection1.Open;
    ADOTable1.Open;
    Je me suis fait une moulinette pour virer les éventuels caractères de contrôle ou autres, sans succès.
    En analysant les données du champ concerné, je me suis aperçu que les 200 premières valeurs sont inférieures à 2147483647 soit (2^31)-1. En remontant plus loin, le datatype du champ concerné est ftInteger soit un entier signé 32bits ...
    Or le champ contient des valeurs plus grandes que 32bits.

    1. Dans ce cas, comment Delphi procède t il pour déterminer le type d'un champ ?
    Analyse des 100 ou 150 premiers enregistrements ???

    2. Comment faire pour se prémunir de ce genre de blague ?

    merci d'avance
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  2. #2
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    A priori il n'analyse que les 25 premiers enregistrements pour affecter les datatypes aux différents champs de la ADOtable

    -> il n'y a pas interêt que dans le 26eme record qu'il y ait une valeur qui soit hors de l'intervalle de definition du datatype
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

  3. #3
    Membre habitué Avatar de bidochon
    Inscrit en
    Juin 2002
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 168
    Points : 156
    Points
    156
    Par défaut
    après quelques recherches sur la toile je me suis orienté vers une configuration par fichier schema.ini qui permet de spécifier le paramétrage de la connexion de Microsoft.Jet.OLEDB

    pour scanner l'ensemble de la dataset :
    ou les 500 premiers enregistrements:
    un lien qui m'a été très utile : https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    Tant de mains pour transformer ce monde, et si peu de regards pour le contempler !
    (Julien Gracq)

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

Discussions similaires

  1. Problème d'import de fichier CSV via LOAD DATA
    Par Aenur56 dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/06/2012, 15h03
  2. Requête sur fichier CSV via OLEDB
    Par Monkey_D.Luffy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/10/2010, 10h04
  3. Problème connection à Linux sur Windows via Putty
    Par xionis dans le forum Réseau
    Réponses: 2
    Dernier message: 13/04/2007, 10h48
  4. Réponses: 4
    Dernier message: 14/06/2006, 11h07
  5. [ODBC] [DB2] Problème de connexion à une base de données sur un as400 via PHP sous Linux
    Par boo64 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 19/04/2006, 09h51

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