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 :

Chaine de plus de 1 500 carctères dans un String ? [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut Chaine de plus de 1 500 carctères dans un String ?
    Bonjour,

    dans une base MySQL (l'accès fonctionne bien) j'ai stocké une requête sous forme de chaine de caractères. Elle fait 1 624 caractères et semble ne pas être récupérée correctement dans un String.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Dim strRequete As String, strResultatReq As String   
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
        Set oDb = CurrentDb
     
        strRequete = "SELECT etc. "
        MsgBox strRequete
     
        Set oRst = oDb.OpenRecordset(strRequete, dbOpenSnapshot)
        strResultatReq = oRst.Fields(0)
        MsgBox strResultatReq
     
        Me.ListeResultat.RowSourceType = "Table/Query"
        Me.ListeResultat.RowSource = strResultatReq
        Me.ListeResultat.Requery
    strRequete est la requête permettant de sélectionner la requête finale (qui fait 1 624 caractères). Elle est OK et testée directement elle renvoie bien le bon résultat (celle de 1624 caractères).
    strResultatReq devrait être une chaine de caractères contenant la requête faisant 1 624 caractères.
    "MsgBox strResultatReq" ne renvoie que les 94 derniers caractères et ListeResultat est vide. Je n'ai pas de message d'erreur.
    Christophe

    Pensez à mettre quand c'est le cas.

  2. #2
    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.

    Un chaîne peut accomoder plus 32000 cararctères.

    Après la fin de ta création de SQL ajoute une instruction Msgbox(len(strRequete)). Cela va te donner le nombre de caractères que contient actuellement ta variable.

    si ce n'est pas 1604 vérifie le code qui crée ton SQL. Il manque peut-être un oppérateur de concaténation quelque part.

    si c'est Ok, c'est peut-être ton SQL généré qui est invalide. Fait afficher strRequete dans la fenêtre d'exécution immédiate (debug.print strRequete). Sélectionne le texte et copie le dans une requête vierge en mode SQL. Cela devrait te donner une piste.

    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.

  3. #3
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    Bonjour,

    Le premier test à faire est de faire un copier de la requête dans la table d'origine (celle où tu vois la requête dans son intégralité) et faire un coller dans Notepad++ ou autre éditeur ayant la capacité de voir les caractères de contrôle.
    S'il faut tu as simplement des sauts de lignes (CR/LF) qui ne te montre que la première ligne.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut String = 255 caractères ?
    La première requête (strRequete) est OK (syntaxe et exécution).
    La deuxième requête (strResultatReq, qui est le résultat de la première) n'a pas la bonne taille et ne contient que les derniers caractères de la chaine normalement retournée.
    Avec MsgBox et Debug.print, la taille comme la chaine de strResultatReq ne sont pas bons (64 et fin de la chaîne seulement).
    Cette nuit, au lieu de dormir, je me suis rendu compte que 1624 = 255 x 6 + 94. C'est comme si le String ne contenait que 255 caractères (j'ai vu qu'il y avait des problèmes à ce sujet dans les anciennes versions) et qu'il découpe et écrase la chaîne par morceau.

    La chaine dans la base contient des retours à la ligne. Les enlever n'a rien changé.

    Édition : j'ai écrit dans le code strResultatReq = "<chaine de 430 caractères>" et là ça passe. La chaîne de 1624 caractères ne passe pas car l'éditeur la découpe automatiquement.
    J'espère ne pas être obligé de découper ma centaine de requêtes en bouts de 255 caractères !
    Christophe

    Pensez à mettre quand c'est le cas.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 006
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 006
    Points : 24 598
    Points
    24 598
    Par défaut
    255 c'est la taille maxi d'un champ Text pour JET.

    Si tu utilises ADO au lieu de DAO peut-être que tu n'auras plus ce problème.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    OK je test ADO (que je ne connais pas mais il y des des tuto sur dvp).
    Christophe

    Pensez à mettre quand c'est le cas.

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 303
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 303
    Points : 1 380
    Points
    1 380
    Par défaut
    Ça fonctionne avec ADO !
    Merci à tous.
    Christophe

    Pensez à mettre quand c'est le cas.

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

Discussions similaires

  1. Réponses: 13
    Dernier message: 09/08/2008, 14h04
  2. Plus de barres de commande dans l'exploreur windows....
    Par Martyin dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 22/02/2006, 15h19
  3. [VB]Scrollbar à plus de 32 500
    Par méphistopheles dans le forum VB 6 et antérieur
    Réponses: 30
    Dernier message: 26/01/2006, 19h50
  4. [Eclipse3.1] Plus rien ne s'affiche dans ma console !
    Par tnodev dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 12/10/2005, 12h05
  5. [LG]Type chaine avec plus de 255 car et EOF intempestif.
    Par jpclabaux dans le forum Langage
    Réponses: 2
    Dernier message: 27/10/2004, 10h39

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