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

VBA Access Discussion :

Générer 1 erreur si taille max du champ dépassée


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Générer 1 erreur si taille max du champ dépassée
    Bonjour,

    Je développe une macro pour intégrer les données d'une feuille Excel 2003 dans une base Access 2000.

    Je code à la volée ma requête SQL "Insert into ..." en utilisant DAO.

    Mon problème vient du fait que mes champs texte sont limités en taille, (par exemple pour la table "personne", le champ "nom" est limité à 20 caractères),
    et que je n'ai pas de message d'erreur si la requête SQL charge un nom de personne contenant plus de 20 caractères. Le champ est tronqué à son maximum mais je n'en suis pas averti.

    J'ai essayé d'utiliser "valide si" dans la définition de la table "personne" avec un truc du genre
    nbchar([nom]) > 20
    mais apparemment cela ne fonctionne qu'avec l'utilisation de formulaires.

    Je voulais savoir s'il existe un moyen simple de vérifier qu'ACCESS ne tronque pas les données.

    Sinon pour l'instant le seul moyen que je vois est de vérifier dans ma macro la taille de chaque donnée avant de lancer le SQL (mais j'ai quand même plus de 300 000 enregistrements pour une cinquantaine de champs !)

    Merci pour vos conseils.

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Points : 281 917
    Points
    281 917
    Par défaut
    Bonjour nabalilu,
    Peut-être opérer en plusieurs temps.
    1° importer dans une table transitoire dans laquelle la taille des champs est maximale + un flag positionné à Non
    2° une requête sur cette table pour déceler les cas à problème et positionner le flag à Oui
    3° une requête sur cette table pour alimenter la cible avec les cas banals (flag = Non )
    4° traiter « comme il faut » les enregistrements avec flag = Oui.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre réponse,

    mais je cherche quelquechose de + automatique vu mon nombre de champs à tester.
    En fait, je pensais qu'il existait une propriété d'Access qui m'était inconnue ( je découvre l'outil depuis peu) et facile à mettre en place pour prévenir lorsque les données sont modifiées "automatiquement".

    Je pense que je vais augmenter à 255 la taille des champs pour ceux qui le peuvent (j'avais diminué pour optimiser) et pour les champs qui doivent absolument respecter une longueur max, j'implémenterai un test en VBA avant de lancer ma requête SQL.

    J'espère que j'aurai au moins un message d'erreur si je repasse par la suite (une fois les données importées dans la table) la taille max d'un champ de 255 à 20 et qu' un enregistrement dépasse !!! Je vais tester.

    nabalilu

  4. #4
    Membre expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Points : 3 834
    Points
    3 834
    Par défaut
    Bonjour....

    Peut-être dans le but de mieux 'optimiser' la longueur de tes champs sous Access.....(pour tes champs texte.)

    ....sous Excel, récupère par 'colonne' la longueur maxi atteint par les données contenues dans tes cellules.....et tu te sers de ce nombre lors de la phase d'import sous Access...:

    .si longueur <=255..alors Type champ = Texte (ajusté à la taille connnue)

    ..si longueur >255...alors Type champ = Mémo

    ..à voir..

Discussions similaires

  1. [AC-2000] Export XL : Contourner la taille max. d'un champ texte
    Par gocho dans le forum VBA Access
    Réponses: 1
    Dernier message: 05/08/2009, 14h10
  2. Réponses: 3
    Dernier message: 27/07/2009, 11h09
  3. taille max d'un champ
    Par hamma2 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/04/2007, 15h09
  4. taille max d'une photo jpg dans un champ blob de mysql
    Par zidenne dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 04/10/2006, 09h42
  5. taille max du nom d'un champ
    Par hna dans le forum Paradox
    Réponses: 2
    Dernier message: 28/07/2002, 02h40

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