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 :

Caractère spécial fait planter l'alimentation d'un combobox [AC-2016]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    novembre 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 90
    Points : 54
    Points
    54
    Par défaut Caractère spécial fait planter l'alimentation d'un combobox
    Bonjour à tous,

    Je vous soumets le problème suivant car je ne trouve pas de solution malgré beaucoup de recherches sur le net.

    J'ai donc une base Access avec un formulaire qui contient un contrôle Combobox. A l'ouverture du formulaire je charge la liste de valeur de mon combobx à partir d'un recordset ADO qui pointe sur une base de données MS SQL Server. J'utilise pour cela la méthode additem de mon combobox. J'ai constaté que le chargement de ma liste de valeur s'arrêtait avant la fin de mon recordset, lorsque l'enregistrement du recordset à ajouter contenait un caractèrs spéciale (ü ou ä par exemple). ça ne fait pas planter le chargement mais je me retrouve avec une liste de valeur incomplète.

    Je me doute qu'il s'agit d'un problème d'encodage entre MS SQL (qui je crois utilise un encodage Latin) et Access qui doit utiliser mes paramètres d'encodage MS WIndows 10, mais je n'arrive pas à résoudre le pb. Je joins le bout de code du chargement de mon combobox.

    Merci d'avance à tous celles et ceux qui pourront m'aider !
    Stargates

    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
     
    Public Sub getListClient(lst As ComboBox)
     
    With lst
        .RowSourceType = "Value list"
        .BoundColumn = 1
        .ColumnCount = 1
        .ColumnWidths = "5"
    End With
     
    Dim cmd As New ADODB.Command
     
    cmd.ActiveConnection = cn 'cn est une connexion ODBC vers ma base SQL
    cmd.CommandType = adCmdText
    cmd.CommandText = "SELECT ClientName FROM dbo.Client order by ClientName asc"
     
    Dim rs As New ADODB.Recordset
    Set rs = cmd.Execute
     
    If Not rs.EOF Then rs.MoveFirst
     
    While Not rs.EOF
        lst.AddItem rs(0) 
        rs.MoveNext
    Wend
     
        rs.Close
        Set rs = Nothing
        Set cmd = Nothing
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Developpeur VBA, C# et VB.Net =]
    Inscrit en
    juillet 2007
    Messages
    14 120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Developpeur VBA, C# et VB.Net =]
    Secteur : Finance

    Informations forums :
    Inscription : juillet 2007
    Messages : 14 120
    Points : 32 239
    Points
    32 239
    Par défaut
    Bonjour,

    le problème est il également présent lorsqu'au lieu de faire une boucle avec AddItem tu utilises directement la Source de ta listbox ?
    Cycle de vie d'un bon programme :
    1/ ca fonctionne 2/ ca s'optimise 3/ ca se refactorise

    Pas de question technique par MP, je ne réponds pas

    Apprendre à programmer avec Access 2016 et Access 2019

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Inscrit en
    novembre 2010
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 90
    Points : 54
    Points
    54
    Par défaut
    Merci de ta réponse,

    En effet je n'ai plus le problème lorsque je branche directement mon recordset ADO avec le recordset de la combobox (cf. code ci-dessous). J'avais privilégié de procéder via la Value List parce que mon recordset fait plus de 1500 lignes : lorsque je procède par Value List toutes les lignes sont immédiatement disponibles lorsque je développe ma liste dans le formulaire, alors que lorsque je passe par le recordset de ma combobox, la liste se charge par paquet avec un e légère latence, ce que j'aurais voulu éviter. Mais bon, c'est déjà pas mal de pouvoir charger la liste intégralement...
    Merci de tes conseils éclairés.

    Stargates.

    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
     
    Public Sub getListReinsured(lst As ComboBox, Reinsured)
    With lst
        .RowSourceType = "Table/Query"
        .BoundColumn = 1
        .ColumnCount = 1
        .ColumnWidths = "5"
    End With
     
    Dim cmd As New ADODB.Command
     
    Dim strSQL As String
     
    cmd.ActiveConnection = cn
    cmd.CommandType = adCmdText
    cmd.CommandText = "SELECT ClientName FROM Client ORDER BY ClientName ASC"
     
    Dim rs As New ADODB.Recordset
    rs.CursorLocation = adUseClient
    rs.Open cmd, , adOpenKeyset, adLockOptimistic
    Set lst.Recordset = rs
     
     
    rs.Close
    Set rs = Nothing
    Set cmd = Nothing
     
    End Sub

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

Discussions similaires

  1. [Encodage] remplacer un caractère spéciale qui fait de la résistance
    Par Logan5 dans le forum Langage
    Réponses: 1
    Dernier message: 04/06/2010, 00h29
  2. Caractère spécial qui fait planter un rapport
    Par p-drito dans le forum Jasper
    Réponses: 1
    Dernier message: 04/08/2008, 20h45
  3. probleme de requette qui fait planter powergres
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/09/2004, 19h48
  4. Réponses: 12
    Dernier message: 16/03/2004, 15h21
  5. fonction qui en fait planter une autre
    Par ickis dans le forum C
    Réponses: 5
    Dernier message: 18/08/2003, 22h33

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