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 :

DAO Vers ADO


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Juillet 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employer
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 33
    Points : 29
    Points
    29
    Par défaut DAO Vers ADO
    Bonjour,

    Cela fait plusieurs jour que je cherche, mais je ne trouve pas, et donc me voila...

    Ci-dessous, un bout de code simplifié fonctionnant avec DAO qui me permet de récupérer la propriété qui m’intéresse. Cette propriété me permet par la suite de construire un userform en fonction des type de champ, mais la n'est pas la question.
    Et donc recup contiens généralement 106 ou 109 ou 110 ou 111 en fonction du type de champ défini dans votre table. (Zone de texte, ou zone de liste, ou zone de liste déroulante, Case à cocher) je ne me rappelle pas les correspondances mais ca aussi ce n'est pas important pour le moment.
    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
     
    'bibliotèque de référence pour dao : Microsoft DAO 3.6 Object Library
    Sub DAOPropertie()
        Dim Chemin As String = "D:\Configuration\"
        Dim bddACCDB As String = "BDD.accdb"
        Dim table As String = "Table1"
        Dim champ As String = "Colonne1"
        Dim recup as String
        Dim db As DAO.Database
        Dim rst As DAO.Recordset
        ' Ouverture de la base de données
        Set db = DBEngine.OpenDatabase(Chemin & bddACCDB)
        ' Ouverture du Recordset
        Set rst = db.OpenRecordset("SELECT " & champ & " FROM " & table & "", dbOpenDynaset, dbReadOnly)
        'récuperation de la proprièté du type de champ
        '(je ne me rappele plus a quoi correspond quoi, 106 109 110 ou 111 pour soit un champ texte, une listbox, un combobox, case à coché)
        recup = rst.Fields(champ).Properties("DisplayControl").Value)
        'fermeture
        rst.Close
        db.Close
    End Sub
    Ce que je souhaite maintenant, c'est faire la meme chose en ADO, voir ADOX
    Mais j'ai beau cherché je ne trouve pas quelque chose de similaire, ou quel serais la propriété a recherché
    Voici le code ado, mais la récup de l'information n'est pas trouver.
    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
     
    'bibliotèque de référence pour adodb : Microsoft ActiveX Data Objects 2.6 Library
    Sub ADOPropertie()
        Dim Chemin As String = "D:\Configuration\"
        Dim bddACCDB As String = "BDD.accdb"
        Dim table As String = "Table1"
        Dim champ As String = "Colonne1"
        Dim recup as String
        Dim cnn As New ADODB.Connection
        Dim rst As New ADODB.Recordset
        ' Ouverture de la connection
        cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Chemin & bddACCDB & ";"
        ' Ouverture du Recordset en défilement en avant, et en lecture seule
        rst.Open "SELECT " & champ & " FROM " & table & "", cnn, adOpenStatic, adLockReadOnly
        ' ERROR ERROR ERROR
        recup = rst.Fields(champ).Properties("DisplayControl") '?????????????????????? Que dois-je mettre ?????????????????
        'fermeture
        rst.Close
        cnn.Close
    End Sub
    Si quelqu’un savait où je trouve la propriété similaire à ce "DisplayControl" du dao ou comment je peux identifier le type de champ défini dans access comme Contrôle de l'affichage avec l'ado, cela me serait plus qu'utile pour la suite.

    Merci et à bientôt

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Ta question est inquiétante, car le seul fait de la poser montre que tu as des difficultés à comprendre le mécanisme utilisé.
    Je vais personnellement me contenter de te répondre de cette manière :
    Une requête aboutit à un jeu d'enregistrements (un recordset)
    Il semble que tu veuilles afficher le contenu de ce jeu d'enregistrement -->>
    - choisis donc le support d'affichage (listbox, combobox, ou autre ...)
    - abonde ce support par les articles du recordset obtenu par ta requête *****

    EDIT : ***** Il va de soi que le mécanisme d'abondement du support choisi pour l'affichage dépend précisément du choix de ce support.
    Certains supports peuvent être dotés d'une propriété permettant l'utilisation directe du recordset, d'autres non ...
    Une chose est toujours vraie/possible (et donc "universelle"), quel que soit le support de destination : --->>
    - lecture du recordset article par article
    - abondement du support article par article
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Juillet 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employer
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Je pense que tu n'as pas compris ma question.... car je ne comprend pas ta réponse...

    ou j'ai peut-être mal posé ma question.... moi qui avait pris soin de refaire le code le plus simple...

    ou que je suis justement tomber sur le truc que personne connais...

    j'ai aussi cherché du coté des schémas, et je n'ai pas trouver quelque chose de similaire... je ne souhaite pas le type de donnée, mais le type de contrôle utilisé par access pour afficher les donnée...

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    je ne souhaite pas le type de donnée, mais le type de contrôle utilisé par access pour afficher les donnée...
    Tu as eu la réponse dans mon message précédent --->>TU choisis le support (ou contrôle) d'affichage et TU utilises ses propriétés éventuelles d' "accueil" de recordset ou TU "abondes" article du recordset par article.
    Et tout cela est à faire à partir du retour de ta requête (au delà : plus rien en commun)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    DAO est un moteur de base de données (Moteur jet), développé par Microsoft pour son propre usage!

    ADO est un gestionnaire de base de données universel qui s'appui sur les driver (driver ISAM) installé sur la machine!
    Rs(0).type

    DAO et Access font bon ménage, ainsi il est possible de dire qu'un champ Access dispose d'une liste de valeurs provenant d'une autre table!

    ADO te retournera un réponse du type varchar,integer,etc...

    Je ne pense pas que ce que tu cherche soit réalisable par ADO!
    Dernière modification par Invité ; 01/12/2017 à 08h42.

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Toutes les différences essentielles sont exposées là :
    https://msdn.microsoft.com/fr-fr/library/bb469892.aspx
    Le reste (ce que l'on fait ensuite du jeu d'enregistrement (recordset) ) est une chose distincte.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Employer
    Inscrit en
    Juillet 2013
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employer
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2013
    Messages : 33
    Points : 29
    Points
    29
    Par défaut
    Merci,

    Cela rejoint ce que je pensais, à savoir que cette propriété n'existe pas en ADO ou n'est pas atteignable.

    J'ai explorer la version "openschema avec l'ADO" et la version "catalogue d'ADOX", et je n'ai rien trouvé de similaire... et quand je parle d'explorer, j'ai ouvert chaque propriétés dans la fenêtre espion pour chacune des solutions, et rien...
    Je vais devoir faire un code pour vérifier les liaisons de la table, vérifier quel type de données, et probablement vérifier d'autre choses auquel je ne pense pas pour le moment, pour enfin savoir si cela correspond à un listbox ou plutôt un combobox.... beaucoup de code supplémentaire pour avoir un équivalent qui ne sera pas aussi sûre qu'avec la propriété du DAO...

    Je suis vraiment dessus lorsque je ne trouve pas de solution propre.

    Bref... cela m'aura au moins permis d'approfondir mes connaissance dans ce domaine...

    PS:unparia
    Tu as eu la réponse dans mon message précédent --->>TU choisis le support (ou contrôle) d'affichage et TU utilises ses propriétés éventuelles d' "accueil" de recordset
    Comment choisir quel contrôle, si justement cela doit être en fonction du type d'affichage dans Acces? le recordset ne me donne que le type de l'article pas l'affichage qui est utilisé... (exemple: adVarWchar c'est une listbox ou un combobox? Cela peut-être les deux...)

    ou TU "abondes" article du recordset par article.
    Et tout cela est à faire à partir du retour de ta requête (au delà : plus rien en commun)
    Je veux bien compléter le recordset article par article, mais quelque soit l'article ajoutée dans le recordset, il ne me donne pas l'affichage qu'Acces utilise. Cela devrait être une propriété de colonne, et apparemment non accessible depuis ADO...

    Toutes les différences essentielles sont exposées là :
    https://msdn.microsoft.com/fr-fr/library/bb469892.aspx
    Comme tu l'as écrit, les différences "essentielles", PAS les détails spécifiques... de plus c'est la page que je me suis servis pour tout mon transfert du DAO vers l'ADO...

    Avis personnel: unparia
    Dés ta première réponse avant même ton édition, j'ai ressenti du dénigrement dans tes écrits. Alors j'ai répondu avec de la naïveté et un ajout de malentendu exprès pour voir si ça venais de ma formulation. A cela j'ai ressenti du dédain dans l’édition de ta réponse.
    Les gens poste pour avoir de l'aide. Si quelqu'un ne comprend pas quelque chose, et que tu veux répondre, prend le temps de lui expliquer. De ces explications un autre qui lis le poste pour un problème similaire ou même différent pourra déjà (peut-être) avoir une piste.
    Et si tu n'est pas sûre de comprendre la soit disant requête inquiétante, ne répond pas avec des trucs vagues, mais avec une question qui demande des précision.
    Ensuite il y a eu la réponse avec les "TU" gras majuscule... et là, c'est comme me pointé du doigt, et en criant (pas respectueux)... ce n'est pas très agréable à lire surtout quand il n'y a pas de solution dans la réponse, et que ton interlocuteur est resté poli...
    Prend exemple sur dysorthographie, qui apparemment à bien compris se que je cherchais, à répondu avec explication succincte sur le DAO et L'ADO, puis a terminé par la solution (qui soit-dit en passant, n'existe pas).

    Et pour finir, quand je vois une personne qui répond comme tu l'as fait (pas seulement toi, et dans beaucoup d'autres forums), voila ce que je me dit:
    Il connait peut-être les bases, mais ça s’arrête là. Il n'a pas les compétence pour m'aider dans mon problème.
    Encore un qui écrit juste pour faire monter ses states de profile...
    A tien! Un lien... pas de réponse sur ce que je recherche dans ce lien... , ça confirment ce que je pense...
    Si seulement seule les réponse utile étais comptabilisé...

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

Discussions similaires

  1. [AC-2010] DAO vers ADO: Champ multi-valeurs
    Par MGOMKD dans le forum VBA Access
    Réponses: 4
    Dernier message: 15/07/2013, 17h08
  2. Migration DAO vers ADO
    Par PMAR dans le forum Access
    Réponses: 2
    Dernier message: 15/03/2010, 15h51
  3. Difference entre DAO et ADO
    Par Pe04 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/01/2006, 12h34
  4. DAO et ADO?
    Par chetflo dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/12/2005, 16h38
  5. [VB.NET] Conseil migration d'ADO vers ADO.NET
    Par daner06 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 02/12/2004, 08h57

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