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

IHM Discussion :

problème zone liste et itemdata en defaultvalue


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut problème zone liste et itemdata en defaultvalue
    Bonjour,

    Sur ce code sur l’évènement Open d’un formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim n As Long
        Dim ctl As Control
        Dim sql As String
            If Not Nz(Me.OpenArgs, "") = "" Then
                n = CLng(Me.OpenArgs)
                sql = "SELECT Id, [Champ1] & ' ' & [Champ2] AS Expr1 FROM Tbl1 WHERE Id = ' & n & ' ORDER BY [Champ1] & ' ' & [Champ2];"
                Me.MaZdLMod.RowSource = sql
                Me.MaZdLMod.DefaultValue = MaZdLMod.ItemData(0)
            Else
                Me.MaZdLMod.RowSource = "SELECT Id, [Champ1] & ' ' & [Champ2] AS Expr1 FROM Tbl1 ORDER BY [Champ1] & ' ' & [Champ2];"
            End If
    J’ai un message d’erreur indiquant que MaZdLMod.ItemData(0) est Null. Le problème intervient quand je concatène 2 champs dans le sql. Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "SELECT Id, Champ1, Champ2 FROM Tbl1 WHERE Id = ' & n & ' ORDER BY Champ1;"
    ça fonctionne sans problème.

    Auriez-vous un conseil pour que la concaténation soit prise en compte dans le sql ? L’objectif étant que s’il y a un argument passé à l’ouverture du formulaire, il n’y ait qu’un seul enregistrement en source de MaZdLMod et que celui-ci soit directement affiché dans MaZdLMod.

    Merci par avance
    Merci de votre aide

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sql = "SELECT Id, [Champ1]" & " " & "[Champ2] AS Expr1 FROM Tbl1 WHERE Id =" & n & "ORDER BY [Champ1]" & " " & "[Champ2];"
    Me.MaZdLMod.RowSource = sql
    Me.MaZdLMod.DefaultValue = MaZdLMod.ItemData(0)
    Else
    Me.MaZdLMod.RowSource = "SELECT Id, [Champ1]" & " " & "[Champ2] AS Expr1 FROM Tbl1 ORDER BY [Champ1]" & " " & "[Champ2];"

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Malheureusement, ça ne change rien. Dans VBE, au survol de Me.MaZdLMod.DefaultValue j'ai "" et au survol de MaZdLMod.ItemData(0), j'ai Null.
    Pourtant, je teste dans le qbe ce que revoit sql et j'ai bien l'enregistrement voulu.

    Où est l'erreur ?
    Merci pour ton aide Kikof
    Merci de votre aide

  4. #4
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    J'ai oublié la concaténation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sql = "SELECT Id, [Champ1] & " & Chr(34) & " " & Chr(34) & " & [Champ2] AS Expr1 FROM Tbl1 WHERE Id =" & n & "ORDER BY [Champ1& " & Chr(34) & " " & Chr(34) & " & [Champ2];"
    Me.MaZdLMod.RowSource = sql
    Me.MaZdLMod.DefaultValue = MaZdLMod.ItemData(0)
    Else
    Me.MaZdLMod.RowSource = "SELECT Id, [Champ1] & " & Chr(34) & " " & Chr(34) & " & [Champ2] AS Expr1 FROM Tbl1 ORDER BY [Champ1] & " & Chr(34) & " " & Chr(34) & " & [Champ2];"

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    ça fonctionne. merci bcp. Pour info, peux tu m'expliquer l'utilisation de Chr(34) dans le sql stp ?
    Merci de votre aide

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    chr(34) correspond à "

    Quand tu écris une chaine SQL dans du VBA, tu ne peux pas la coller telle que tu l'as conçu en mode création de requête.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = "SELECT champ FROM Table WHERE champ = "Ma valeur""
    Ceci ne fonctionnera pas.
    Ma valeur sera lue comme une variable et va générer une erreur car pas de déclaration ou encore parce qu'il y a un espace entre les 2 mots.
    Il faut donc remplacer les quotes encadrant Ma Valeur pour que la chaine SQL puisse être lu correctement.

    Certains doublent les quotes, moi j'utilise Chr(34) : je trouve que c'est plus lisible de lire " & Chr(34) & " que """.

    Pense à cliquer sur

  7. #7
    Membre régulier
    Inscrit en
    Juillet 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 285
    Points : 99
    Points
    99
    Par défaut
    Re,

    Merci Kikof pour ton aide et les explications.
    Merci de votre aide

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

Discussions similaires

  1. [AC-2010] Problème Zones liste synchronisées
    Par Kaley dans le forum IHM
    Réponses: 2
    Dernier message: 22/01/2013, 14h13
  2. [AC-2003] Problème zone de liste déroulante
    Par lucas-18 dans le forum IHM
    Réponses: 2
    Dernier message: 12/08/2009, 19h51
  3. [AC-2002] Problème zone de liste
    Par Jean-Luc80 dans le forum IHM
    Réponses: 5
    Dernier message: 16/04/2009, 05h50
  4. Débutant: Problème zone de liste
    Par jrogron dans le forum IHM
    Réponses: 15
    Dernier message: 05/08/2006, 11h26
  5. Problème doublon zone liste
    Par hervay dans le forum Access
    Réponses: 15
    Dernier message: 02/06/2006, 09h41

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