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 :

CREATE TABLE avec argument WITH COMPRESSION [AC-2010]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut CREATE TABLE avec argument WITH COMPRESSION
    Bonjour,

    Je suis devant un mini casse-tête depuis quelques heures et je demande si je suis le seul à avoir été confronté à ce problème.

    J'aimerais créer une table en langage SQL grâce à l'instruction CREATE TABLE. Mon souci est au niveau de l'usage de l'argument WITH COMPRESSION qui permet d'indiquer qu'on veut bien de la compression unicode sur les champs TEXT ou MEMO. Sans cette indication la Compression Unicode n'est pas indiquée et en travaillant avec une table créée comme cela les champs concernés gardent un nombre d'espaces correspondant, ce qui devient embêtant pour les traitements futurs.

    Par exemple si j'ai un champ TEXT (255) où j'écris "Bonjour" au lieu de conserver juste le "Bonjour" dans la table, sans compression unicode il sera conservé "Bonjour" + (255 - 7 = 248) caractères d'espacement.

    Voici le code qui ne marche pas pourtant il respecte bien la syntaxe indiquée dans l'aide d'Access

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE SOLDES ([N° Solde] AUTOINCREMENT CONSTRAINT MyFieldConstraint PRIMARY KEY, [Titre Solde] CHAR WITH COMPRESSION, [Solde Global] YESNO)
    Il provoque une "erreur de syntaxe dans l'instruction CREATE TABLE" au niveau du With

    Des idées du problème, et/ou de sa solution ?

  2. #2
    Modérateur
    Avatar de bertiny
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2013
    Messages
    1 282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 282
    Points : 1 831
    Points
    1 831
    Billets dans le blog
    1
    Par défaut
    Bonjour
    As-tu essayé de préciser la taille du champ ?
    Le monde évolue et nous avec. La technologie change les idées de ceux qui s'intéressent et pensent qu'il est nécessaire de changer.
    Oh là!! Que c'est bien de trouver la solution à un problème

    Pensons à améliorer nos connaissances en toute humilité car on apprend tous tous les jours !!!

  3. #3
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Ainsi ça devrait le faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CurrentProject.Connection.Execute "CREATE TABLE SOLDES (" & _
    "[N°Solde] AUTOINCREMENT, " & _
    "[Titre Solde] text(255) WITH COMPRESSION, " & _
    "[Solde Global] YESNO)"
    CurrentProject.Connection.Execute "Alter table SOLDES ADD CONSTRAINT MyFieldConstraint Primary Key (N°Solde)"
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut Merci
    Un grand merci hyperion13 ! Ca marche très bien

    Et donc si je comprends bien l'ajout de l'index pour la clé primaire n'est pas compatible avec la précision WITH COMPRESSION dans la même instruction.

  5. #5
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Salut,
    Ça marche également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CurrentProject.Connection.Execute "CREATE TABLE SOLDES (" & _
    "[N°Solde] AutoIncrement CONSTRAINT MyFieldConstraint PRIMARY KEY, " & _
    "[Titre Solde] text(255) WITH COMPRESSION, " & _
    "[Solde Global] YESNO)"
    RefreshDatabaseWindow
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    OK OK c'est vrai que ça marche aussi. Le souci vient de l'objet que j'ai utilisé, Currentdb.execute plutôt que CurrentProject.Connection.Execute

    Mon but est de mettre à jour des bases de données chez des clients par automation et en ouverture exclusive, avant cette nouvelle information je pense que je vais trouver comment faire. Une série de tests s'impose...

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Juste un point a propos des champs texte.

    Par exemple si j'ai un champ TEXT (255) où j'écris "Bonjour" au lieu de conserver juste le "Bonjour" dans la table, sans compression unicode il sera conservé "Bonjour" + (255 - 7 = 248) caractères d'espacement.
    Si tu passes par l'editeur de table, les champs textes sont crees automatiquement en longueur variable donc quand tu crees un champ texte de 255 caracteres tu indiques seulement a Access que le champ peut contenir au maximum 255 caracteres pas qu'il occupe toujours 255 caracteres.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Juste un point a propos des champs texte.



    Si tu passes par l'editeur de table, les champs textes sont crees automatiquement en longueur variable donc quand tu crees un champ texte de 255 caracteres tu indiques seulement a Access que le champ peut contenir au maximum 255 caracteres pas qu'il occupe toujours 255 caracteres.

    A+
    Après tests, je suis d'accord. Via l'éditeur de table il n'y a aucun problème.

    Mais via l'instruction CREATE TABLE si je n'indique pas WITH COMPRESSION Access conserve bien le nombre maximum de caractères, en comblant par des espaces !

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Merci d'avoir fait le test.

    J'utilise rarerement le Create Table, je lui prefere un delete suivi d'un append sur une table existante.
    Et si j'ai une nouvelle table a ajouter en production je le fais par copie de ma table en developpement, meme par script.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut
    Citation Envoyé par marot_r Voir le message
    Merci d'avoir fait le test.

    J'utilise rarerement le Create Table, je lui prefere un delete suivi d'un append sur une table existante.
    Et si j'ai une nouvelle table a ajouter en production je le fais par copie de ma table en developpement, meme par script.

    A+
    OK

    Mais là ma curiosité est attisée. Pourrais-je avoir un petit exemple de copie d'une table par script s'il te plaît ?

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut Correction code
    Bonjour.

    Je n'en ai pas sous la main mais regarde les commandes DoCmd.TransferDatabase et aussi DoCmd.CopyObject.

    Si je me fie a une des dernieres discussion auquelle j'ai participee, CopyObject est moins capricieux que TransferDatabase mais plus limite.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 30
    Points : 9
    Points
    9
    Par défaut Correction code
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je n'en ai pas sous la main mais regarde les commandes DoCmd.TransferDatabase et aussi DoCmd.CopyObject.

    Si je me fie a une des dernieres discussion auquelle j'ai participee, CopyObject est moins capricieux que TransferDatabase mais plus limite.

    A+
    Merci bien.

    Avec ces 2 méthodes je suis dans le cas typique du "tu as déjà vu, tu sais que ça existe, mais tu n'as jamais essayé"

    Je ferai des tests.

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

Discussions similaires

  1. Create Table avec deux clés primaires
    Par ulysse031 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 03/05/2007, 14h51
  2. Erreur sur CREATE TABLE avec champ boolean
    Par codial dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/03/2007, 18h30
  3. [SQL Server 2000] - Create table avec une variable
    Par Cape31 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/12/2006, 15h08
  4. [VBA] : Pb Create Table avec Champs Oui/Non
    Par GuidoBrasletti dans le forum Access
    Réponses: 8
    Dernier message: 15/03/2006, 19h11
  5. create table avec variable!
    Par JauB dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 30/01/2006, 09h48

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