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 :

Rowsource sur liste


Sujet :

Access

  1. #1
    jnore
    Invité(e)
    Par défaut Rowsource sur liste
    Bonjour

    Voilà, j'ai un petit souci.
    je travaille sous Access 2000.
    J'utilise la propriété rowsource pour alimenter une liste. Le rowsourcetype de ma liste est parametrée sur "liste valeur".
    Mon code fonctionne parfaitement bien, seulement voilà, la propriété rowsource sur ma liste n'accepte qu'un nombre limité de caractère.
    voir le défaut sur fichier joint.

    Petite particularité, access attaque une base postgresql qui ,au niveau de la requete, contient des guillemets (dont je ne peux me défaire) pour délimiter les tables et/ou certains champs.
    A cause de cela, je ne peux mettre en rowsource la requete sql comme on peut le faire sur sql server.

    Quelqu'un aurait-il une solution à me proposer?

    voici mon code:
    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
    42
    43
    44
    45
    46
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim req As Variant
    Dim secteur As Integer
    Dim atelier As Integer
     
    famille = Nz(Me!Modifiable32, 0)
    atelier = Nz(Me!atelier, 0)
     
     
    req = "SELECT ""OBJETS"".clé, ""OBJETS"".objet, ""OBJETS"".""lien famille""," _
    & " ""ATELIER"".clé AS cle FROM pieces.""ATELIER"" INNER JOIN visites.""SECTEUR"" INNER JOIN visites.""FAMILLE TECHNIQUE""" _
    & " INNER JOIN visites.""OBJETS"" ON ""FAMILLE TECHNIQUE"".clé=""OBJETS"".""lien famille""" _
    & " ON ""SECTEUR"".clé=""FAMILLE TECHNIQUE"".""lien secteur"" ON ""ATELIER"".clé=" _
    & " ""SECTEUR"".""lien atelier"" WHERE ""OBJETS"".""lien famille""=" & famille _
    & " and ""ATELIER"".clé=" & atelier _
    & " ORDER BY ""OBJETS"".objet"
     
     
    cn.ConnectionString = "DRIVER={PostgreSQL ANSI};SERVER=u10791;port=5432;DATABASE=invest3;UID=postgres;PWD=blabla;"
     
    cn.Open
    rs.Open req, cn, adOpenKeyset, adLockOptimistic
     
    Dim Valeur As Variant
    Valeur = ""
     
    If rs.EOF = False Then
        rs.MoveFirst
    'preparation de la liste des valeurs séparées par des guillemets
        For i = 0 To (rs.RecordCount - 1)
            Valeur = Valeur & rs.Fields(0) & ";" & rs.Fields(1) & ";"
            rs.MoveNext
            Next
            Me!Modifiable34.RowSource = Valeur
            Else
            Me!Modifiable34.RowSource = Valeur
     
    End If
     
    cn.Close
    Set rs = Nothing
     
    Me!Modifiable34.Requery
     
    End Sub
    Images attachées Images attachées  

  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 : 46
    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,

    Et si tu remplaçais "" par rien avec la focntion Replace ?
    Comme ça ça te permettrait d'utiliser le SQL en source.

  3. #3
    jnore
    Invité(e)
    Par défaut
    Non, sinon j'ai un défaut sur le serveur (requete non valide)

  4. #4
    jnore
    Invité(e)
    Par défaut
    Y at-il un autre moyen de remplir la zone de liste avec cette config?

  5. #5
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 765
    Points
    7 765
    Par défaut
    Bonsoir,

    moi je verrai bien une requête Access type "SQL direct".
    Tu crée une requête sans ajouter de table.
    Menu principal->Requête->Spécifique SQL->SQL Direct
    Afficher les propriétés de la requête.
    Dans "Chaîne connexion ODBC", mettre
    ODBC;DRIVER={PostgreSQL ANSI};SERVER=u10791;port=5432;DATABASE=invest3;UID=postgres;PWD=blabla;
    Ensuite tu écris le SQL PostgreSQL dans la requête et tu testes.
    Si ça marche tu la sauves et tu l'utilises comme source de ta liste.

    A+

  6. #6
    jnore
    Invité(e)
    Par défaut
    Citation Envoyé par LedZeppII
    moi je verrai bien une requête Access type "SQL direct".
    Tu crée une requête sans ajouter de table.
    Menu principal->Requête->Spécifique SQL->SQL Direct
    Afficher les propriétés de la requête.
    Dans "Chaîne connexion ODBC", mettre

    Ensuite tu écris le SQL PostgreSQL dans la requête et tu testes.
    Si ça marche tu la sauves et tu l'utilises comme source de ta liste.

    A+
    Bien joué l'ami !!
    Je ne connaissais pas cette option. Ouah !!!

    Moi qui tente de passer un max en ADO pour éviter de voir les tables liées dans access, c'est une option intéressante. Je vais bientôt pouvoir me passer de mon paramètre DSN qui sert encore aujourd'hui. Tu m'ouvres de nouveaux horizons!!!

  7. #7
    jnore
    Invité(e)
    Par défaut
    Connais-tu le code VBA pour intégrer le code SQL dans cette requete liée au formulaire?

  8. #8
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 765
    Points
    7 765
    Par défaut
    une fois la requête sauvée, elle fait partie de la collection QueryDefs (DAO).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim db As DAO.Database, qdef As DAO.QueryDef
     
    Set db = currentdb
    Set qdef = db.QueryDefs("NomDeLaRequête")
    qdef.SQL = "SELECT ......"
    db.close
    A+

Discussions similaires

  1. [VB]Double clique sur liste...
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 23/01/2006, 13h43
  2. Réponses: 3
    Dernier message: 23/01/2006, 11h43
  3. Selection clavier sur liste déroulante
    Par Maxime_ dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 12/01/2006, 10h35
  4. Réponses: 2
    Dernier message: 26/10/2005, 16h51
  5. [langage] random sur liste ou tableau
    Par martijan dans le forum Langage
    Réponses: 2
    Dernier message: 15/07/2003, 14h47

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