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

Macros et VBA Excel Discussion :

VBA / ADODB Recordset Count renvoi -1 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut VBA / ADODB Recordset Count renvoi -1
    Bonjour à tous,

    Mon tout premier post après avoir chercher des heures sans une "vraie" réponse, j'éspère que la communauté pourra m'aider. Je précise je débute en VBA je n'emploi peut etre pas toutes les bonnes pratiques.

    Donc voilà mon problème, je suis en train de me créer une classe pour communiquer avec ma bdd SQL Server.
    J'utilise ADODB.Connection et ADODB.Recordset pour cela. Je les initialise via un CreateObject et non en activant la référence pour plus de portabilité sur mon projet.

    Seulement voilà, lorsque je fais un Recordset.RecordCount, j'obtiens toujours -1, peut importe le nombre de résultats réel de ma requete...

    J'ai vu qu'en activant la référence MS Active X Data Objects Recordset 2.8 manuellement, mon résultat est bon et tout fonctionne bien...

    Pouvez vous m'aiguiller svp ?

    Voici ma classe :
    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
     
    Private Connection, Recordset As Object
     
    Private Sub Class_Initialize()
     
        Set Connection = CreateObject("ADODB.Connection")
        Set Recordset = CreateObject("ADODB.Recordset")
     
        Connection.Open "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=BDD;User ID=root;Password=root"
     
    End Sub
     
    Private Sub Class_Terminate()
     
        Set Recordset = Nothing
        Connection.Close
        Set Connection = Nothing
     
    End Sub
     
    Public Function Execute(ByVal strStatement As String)
     
        Recordset.Open strStatement, Connection, adOpenStatic
        MsgBox Recordset.RecordCount
        Recordset.Close
     
    End Function
    Et mon code de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Public Sub Test()
     
        Dim Db As New clsDatabase
     
        Db.Execute ("SELECT * FROM utilisateurs")
     
    End Sub

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Pour que le .count renvoie le bon nombre de lignes, il faut les avoir parcourues avec .movelast.

    Mais selon ta connexion, tu peux soit
    • uniquement avancer;
    • soit reculer.



    Si tu ne peux qu'avancer, le problème avec .movelast est qu'après, tu ne peux pas faire un .movefirst...

    Voir le tuto de JM Rabilloud pour plus de détails...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    Bonjour Pierre et merci de ta réponse.

    Effectivement j'étais tombé sur la solution de faire un .moveLast puis .moveFirst sur stack mais cela ne fonctionne pas je ne peux effectivement pas revenir en arriere...

    Comment changer cette histoire de curseur sachant qu'un Recordset.cursorlocation = aduseclient me provoque une erreur ?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ca dépend des drivers. Certains outils ne permettent que le "vers l'avant"...

    Pourquoi as-tu besoin de connaitre le nombre de lignes renvoyées? Si tu utilises Do While Not Rs.EOF, tu peux boucler sur tous les enregistrements...

    Si tu veux juste connaître le nombre, utilise select count(xxx) as Counter from yyy Where WhereCondition avec xxx pour le nom de la PK, par exemple, yyy pour le nom de la table et Wherecondition avec la même clause que celle que tu utiliserais pour récupérer les lignes.

    Tu peux aussi utiliser rs.GetRows pour créer un tableau puis utiiliser ubound sur la seconde dimension du tableau ( tu récupères ainsi les données et leur nombre), mais cette solution positionne le recordset sur EOF (comme .movelast).

    Peux-tu donner ta chaîne de connexion et les propriétés de ton rs?

    En fait, peux-tu montrer ton code pour voir comment tu accèdes au jeu d'enregistrements?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    En fait j'ai besoin de compter les résultats et par la suite les afficher dans une listbox je n'ai donc pas envie de passer par 2 requêtes et la solution de faire un GetRows puis Ubound etc est bien ourde pour une fonctionnalité si simple je trouve... d'autant plus qu'il faut une condition dans le cas ou le résultat serait de zéro...

    Pour mon code tout est dans mon premier post.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par axis60 Voir le message
    En fait j'ai besoin de compter les résultats et par la suite les afficher dans une listbox je n'ai donc pas envie de passer par 2 requêtes et la solution de faire un GetRows puis Ubound etc est bien ourde pour une fonctionnalité si simple je trouve... d'autant plus qu'il faut une condition dans le cas ou le résultat serait de zéro...

    Pour mon code tout est dans mon premier post.
    il peux tout à loisir afficher un table en une seule fois donc pas de ubound!

    au pire il sauvegarde son getrows dans un variable public!

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par axis60 Voir le message
    En fait j'ai besoin de compter les résultats [...]
    Donc, soit il doit faire attention à ce que j'ai dit par rapport à la bibliothèque et adOpenStatic, soit il doit utiliser UBound, s'il souhaite compter.

    [EDIT]
    Si, par la suite, il a des problèmes pour charger la listbox (ce n'est pas dit dans les messages, jusqu'ici), alors, ta solution pour charger la listbox me semble effectivement la meilleure (sous Excel, bien entendu). Qui plus est, j'ai des doutes sur un Application.Transpose appliqué à un Select * from. Je pense qu'il faut énumérer les colonnes du Select pour que le Transpose fonctionne.

    Pour ce qui est de la variable Public, je déconseille d'utiliser une variable Public pour cela. Les variables publiques devraient utilisées avec parcimonie et être réduites aux variables d'application.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Ton code me semble bon.

    Ce qui pourrait poser problème...

    Tu dis utiliser un objet (createobject) pour des questions de portabilité. Dès lors, tu ne devrais pas pouvoir utiliser adopenstatic qui n'est pas une constante VBA mais une constante ADODB, ce qui demande que la bibliothèque soit renseignée.

    Donc, à mon avis, tu as placé adOpenStatic dans le code ET tu ne déclares pas tes variables (pas de Option Explicit en début de module). Dans ce cas, adOpenStatic vaut 0, ce qui équivaut à adForwardOnly...

    Remplace adOpenStatic par sa valeur 3. Je pense que cela devrait fonctionner. Et avec cette valeur, pas besoin de movelast, tu peux directement accéder à recordset.recordcount
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Ton code me semble bon.

    Ce qui pourrait poser problème...

    Tu dis utiliser un objet (createobject) pour des questions de portabilité. Dès lors, tu ne devrais pas pouvoir utiliser adopenstatic qui n'est pas une constante VBA mais une constante ADODB, ce qui demande que la bibliothèque soit renseignée.

    Donc, à mon avis, tu as placé adOpenStatic dans le code ET tu ne déclares pas tes variables (pas de Option Explicit en début de module). Dans ce cas, adOpenStatic vaut 0, ce qui équivaut à adForwardOnly...

    Remplace adOpenStatic par sa valeur 3. Je pense que cela devrait fonctionner. Et avec cette valeur, pas besoin de movelast, tu peux directement accéder à recordset.recordcount

    Un grand merci Pierre !!!
    Ta solution de remplacer le adOpenStatic par 3 fonctionne parfaitement...

    Je ne comprend pas forcement pourquoi vu que je pensais que adOpenStatic etait une propriété du curseur de Recodset mais en tout cas cela répond parfaitement à mon besoin !!

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par axis60 Voir le message
    [...]
    Je ne comprend pas forcement pourquoi vu que je pensais que adOpenStatic etait une propriété du curseur de Recodset mais en tout cas cela répond parfaitement à mon besoin !!
    adOpenStatic est le nom d'une constante. Cette constante doit dont être déclarée quelque part. Et elle est déclarée dans la bibliothèque ActiveX Data Object (ADO). Puisque tu souhaites travailler sans cette bibliothèque pour faciliter la portabilité, tu ne peux donc pas utiliser les constantes de cette bibliothèque.

    Tu as alors deux choix possibles:
    utiliser les valeurs des constantes (comme je te l'ai indiqué);
    créer ton propre jeu de constantes que tu nommes à l'identique de celles de la bibliothèque.

    La seconde technique est probablement la plus pratique car elle te permet de tester ton code avec la bibliothèque référencée et en typant tes objets. Après, lors de la mise en prod, tu as juste à adapter les lignes de déclaration et de création des objets.

    "Petit plus"...
    Comme je l'ai dit dans ma réponse précédente, tu aurais intérêt à forcer la déclaration de tes variables/constantes. Pour cela, il faut que la ligne Option Explicit soit présente en tout début de module, avant la première procédure, fonction ou propriété. Tu peux ajouter cette ligne à la main dans les modules existants. Pour les module, tu peux demander à VBA de le faire systématiquement pour toi. Va dans Outils/Options/Editeur et coche la case Déclaration des variables obligatoire. Chaque nouveau module sera alors pourvu de cette ligne.

    L'obligation de déclarer tes variables va t'aider considérablement lors de tes développements. Par exemple, dans le cas qui nous occupe, adOpenStatic n'étant pas connu sans la référence à sa bibliothèque, le code aurait bloqué sur la ligne qui utilisait cette constante inconnue et tu aurais probablement pu trouver tout seul d'où venait ton problème.

    Il est vraiment important de forcer la déclaration de ses variables/constantes...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ListBox1.List = Application.Transpose(Connection.execute("Select * from table").GetRows)
    pour le -1 lors que la proposition fonctionne! comme dab pas la possibilité de progresse vue les explications!
    Dernière modification par Invité ; 31/07/2018 à 16h04.

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    [...]
    pour le -1 lors que la proposition fonctionne! comme dab pas la possibilité de progresse vue les explications!
    Ta solution, déjà partiellement évoquée plus haut dans la discussion, ne répond à la problématique du .RecordCount = -1, sujet principal du post (titre du post + problème développé à ma demande dans la discussion). Elle ne soulève pas non plus le problème du adOpenStatic qui fera planter la macro sans la librairie (option soulignée dans le tout premier post). Elle plaque une solution non demandée sur un problème qu'elle ne résout pas...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Une solution qui pourrait mettre tout le monde d'accord, avec une fonction qui alimente un tableau reçu en ByRef et qui renvoie le nombre d'enregistrements...

    Le tableau alimenté par cette fonction alimenterait lui-même le listbox du userform. Ainsi, tu as à la fois le nombre d'enregistrements ET le tableau permuté (Excel uniquement) pour remplir le listbox

    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
    Sub test()
      Dim t
      Dim ConnectionString As String
     
      ConnectionString = "XXX"
      If getRows(ConnectionString, "select languagepk, initials, displayorder from language", t) > 0 Then
        UserForm1.ListBox1.List = t
        UserForm1.Show
      Else
        MsgBox "Pas d'enregistrements"
      End If
    End Sub
     
    Function getRows(ByVal ConnectionString As String, ByVal sql As String, t) As Long
      Dim rs As Object
      Dim cn As Object
     
      Set cn = CreateObject("adodb.connection")
      cn.Open ConnectionString
      Set rs = CreateObject("adodb.recordset")
      rs.Open sql, cn, 3
      If Not rs.EOF Then
        getRows = rs.RecordCount
        t = Application.Transpose(rs.getRows)
      End If
      cn.Close
    End Function
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Invité
    Invité(e)
    Par défaut
    Oui tu à raisons, c'est exactement ce à quoi je pensais en parlant de variable publique.

    Du reste si l'idée est de faire le même genre de traitement ???? 2 requêtes seront plus rapide que 2 scan d'un tableau.

    Mais il est vrai qu'affecter un geterows ou un tableau à une liste c'est pareil.

    J'ai vue que notre ami utilisait un module de classe, si ça l'intéresse je lui présente celui que j'utilise.

    https://www.developpez.net/forums/d1...a/#post9283354
    Dernière modification par Invité ; 31/07/2018 à 18h03.

  15. #15
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    En effet Robert, un module de classe pourrait être intéressant si cette classe propose autre chose en plus du recordset ou tu tableau transposé.

    C'est pourquoi je proposais au départ une seule fonction avec un byref...

    Mais la classe perso prendra tout son intérêt en y ajoutant des propriétés et/ou méthodes. Je conseille cependant de ne pas mettre la chaîne de connexion en dur comme dans le tout premier poste de la discussion, surtout si on souhaite la portabilité comme évoqué également au tout début de la discussion.


    Ps: tu as "perdu" ton -1
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  16. #16
    Invité
    Invité(e)
    Par défaut
    Merci c'est cool 😎

    Pour ce qui concerne les modules de classe, je considère qu'ils doivent être aussi concis possible.

    Je ne leurs accorde aucune initiative disons que je fais une boite à outils la plus estive possible sur le sujet, et dans mon programme principal je pioche les outils utile à mon projet.

    J'ai commencé à implémenté ce module de classe en 1997, il a évolué au fil de mes besoins.

    ADODBRD ou comment manipuler ce qui ressemble de près ou de loin à une base se données.
    Dernière modification par Invité ; 31/07/2018 à 18h53.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 11
    Par défaut
    Bonjour Messieurs,

    Désolé je n'ai pas eu le temps de me connecté aujourd'hui. J'étudie vos posts et vous tiens au courant.

    Merci de vos réponses en tout cas.

  18. #18
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Merci c'est cool 😎[...]
    Pas de quoi. Désolé, je n'étais pas de trop bonne hier...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] ADODB Recordset count -1, Sql Servre CE?
    Par Gdal dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/05/2012, 04h46
  2. [AC-2007] Syntaxe SQL en VBA ACCESS (Recordset ADODB)
    Par syntax_error dans le forum VBA Access
    Réponses: 1
    Dernier message: 16/02/2011, 11h10
  3. ADODB.Recordset error '800a0cc1'
    Par fgerard dans le forum ASP
    Réponses: 2
    Dernier message: 29/08/2006, 16h11
  4. [jawin][DLL][VB] ADODB.recordset
    Par blaz dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 09/08/2005, 18h42
  5. Problème avec ADODB.Recordset
    Par Edouard Kaiser dans le forum ASP
    Réponses: 13
    Dernier message: 09/08/2005, 17h54

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