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

Access Discussion :

Variables string limité à 255 caractères?


Sujet :

Access

  1. #1
    Membre habitué
    Inscrit en
    novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut Variables string limité à 255 caractères?
    Bonjour,

    J'ai un petit soucis. J'ai cette boucle qui me permet de parcourir un fichier excel. A chaque personne trouver, il insère une valeur en plus dans la variable requete qui contient la future requete INSERT INTO. Je déclare ma variable requete en string, mais j'ai un petit problème, il ne mets pas toute les valeures, il me coupe a 255 caractère. Mais j'ai regarder dans l'aide, et c'est marqué qu'il peut contenir jusqu'à 2 milliard de caractère...

    C'est bizarre. Est-ce que quelqu'un pourrait m'aider

    Merci d'avance

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    'déclaration des variables de données
    Dim requete As String
     
     
    'création de l'objet excel
    Set excel_application = CreateObject("Excel.Application")
    ' Définit le fichier EXCEL à ouvrir
    Set excel_feuille = excel_application.Workbooks.Open(Application.CurrentProject.Path & "/fichier/2005.xls")
     
     
     
    'rend l'application excel visible
    'excel_application.Visible = True
     
     
     
    Set base_de_donnee = CurrentDb
    requete = "INSERT INTO tbl_temp_personne (nom_personne) values "
     
    'boucle permettant de trouver la fin du fichier ainsi que d'insérer la liste des personnes dans la table tbl_temp_personne
    While test_fin <> "ok"
        nombre_ligne = nombre_ligne + 1
        'If excel_application.Cells(nombre_ligne + 1, 1) = "" Then
        If nombre_ligne = "100" Then
            requete = requete & "('" & excel_application.Cells(nombre_ligne + 1, 5) & "');"
            txt_test.Value = txt_test.Value & "('" & excel_application.Cells(nombre_ligne + 1, 5) & "');"
            test_fin = "ok"
        Else
            'récupération du nom de la personne et création de la requete
             requete = requete & "('" & excel_application.Cells(nombre_ligne + 1, 5) & "'),"
             txt_test.Value = txt_test.Value & "('" & excel_application.Cells(nombre_ligne + 1, 5) & "'),"
            test_fin = "pas ok"
        End If
    Wend
    MsgBox (requete)

  2. #2
    Membre habitué
    Inscrit en
    novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour,


    est ce le contenu de la variable qui est tronqué ou plutôt le contenu du champ dans la table?

  3. #3
    Membre habitué
    Inscrit en
    novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    En fait la variable est bonne. Je m'explique. Si je fais un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txt_Test.value = requete
    Il affiche toute la valeur de la variable.

    Mais quand je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    base_de_donnee.Execute requete
    Il me marque

    Comme si il supportait pas une requete SQL de plus de 255 caractères

  4. #4
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    mars 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : mars 2005
    Messages : 510
    Points : 676
    Points
    676
    Par défaut
    de cette façon tu n'arriveras pas car ton code SQL sera faux

    procède ainsi
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    'déclaration des variables de données 
    Dim requete As String 
    Dim bd as database
    Dim Rst as recordset
    Dim Nombre_linge as integer
     
    'création de l'objet excel 
    Set excel_application = CreateObject("Excel.Application") 
    ' Définit le fichier EXCEL à ouvrir 
    Set excel_feuille = excel_application.Workbooks.Open(Application.CurrentProject.Path & "/fichier/2005.xls") 
     
     
     
    'rend l'application excel visible 
    'excel_application.Visible = True 
     
     
     
    Set Bd= CurrentDb ()
    requete = "SELECT nom_personne FROM tbl_temp_personne ; " 
     
    set RSt = BD.OpenRecordset(requete , dbOpenDynaset)
    'boucle permettant de trouver la fin du fichier ainsi que d'insérer la liste des personnes dans la table tbl_temp_personne 
    Nombre_ligne = 0
    While test_fin <> "ok" 
        nombre_ligne = nombre_ligne + 1 
        'If excel_application.Cells(nombre_ligne + 1, 1) = "" Then 
     
        Rst.addnew
        Rst("nom_personne") = excel_application.Cells(nombre_ligne + 1, 5)  
        Rst.update
        If nombre_ligne = "100" Then 
            test_fin = "ok" 
        Else 
            'récupération du nom de la personne et création de la requete 
             test_fin = "pas ok" 
        End If 
    Wend 
    rst.close
    'MsgBox (requete)
    ceci fonctionnera mieux

  5. #5
    Membre habitué
    Inscrit en
    novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Mais le problème c'est que là j'ai 18407 enregistrement à insérer. Donc je vais à chaque fois faire un insert. Tandis que si je fait un insert into tbl_temp_personne (nom_personne) values (mavariable),(mavariable2),(etc...) et bien je vais faire qu'un seule requete. Ce sera plus rapide. Ou je me trompe?

  6. #6
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    mars 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : mars 2005
    Messages : 510
    Points : 676
    Points
    676
    Par défaut
    Justement ta requête insert est fausse car tu devrais faire 18407 fois une requête "insert to"
    donc impossible avec 1 seule requête!!

    or dans mon code tu écris directeurement dans ta table temporaire pour reprendre tes noms

  7. #7
    Membre habitué
    Inscrit en
    novembre 2003
    Messages
    533
    Détails du profil
    Informations personnelles :
    Âge : 34

    Informations forums :
    Inscription : novembre 2003
    Messages : 533
    Points : 180
    Points
    180
    Par défaut
    Ah ouai, j'ai compris. Mais si j'ouvre deux recordset en même temps, il risque pas d'y avoir des problèmes?

    Merci bien pour ton aide et bon week end

  8. #8
    Membre éclairé
    Homme Profil pro
    Comptable
    Inscrit en
    mars 2005
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comptable

    Informations forums :
    Inscription : mars 2005
    Messages : 510
    Points : 676
    Points
    676
    Par défaut
    non aucun problème, tu peux même en ouvrir plus il faut cependant faire attention de les refermer
    bon week end

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

Discussions similaires

  1. Contourner la limitation à 255 caractères des string dans VBA
    Par eaglecarbo dans le forum Général VBA
    Réponses: 2
    Dernier message: 25/03/2015, 11h57
  2. [AC-2007] Variable String limitée à 255 caractères !?
    Par HaHaa dans le forum VBA Access
    Réponses: 5
    Dernier message: 07/07/2010, 19h31
  3. [AC-2003] Variable limitée à 255 caractères sur champ MEMO
    Par kiki.gaby dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 05/01/2010, 15h53
  4. Variable string supérieur à 255 caractères !
    Par AgriFlash dans le forum Langage
    Réponses: 14
    Dernier message: 20/05/2008, 22h10
  5. sql et variable string limité à 250 caractères
    Par philoeil dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 02/10/2007, 00h10

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