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 :

Passer un recordset en paramètre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Passer un recordset en paramètre
    Bonjour,

    Je n'arrive pas à ouvrir une table d'une base de donnée depuis une sub dédiée.

    L'ouverture de la base ("ouverture_BDD") ne pose aucun souci.
    Cependant, l'appel à la sub "ouverture_table" entraine une erreur de type "ByRef incompatible" sur le champs ArticleRecordset.

    Par ailleurs je suis obligé d'utiliser le "late binding".

    Je vous sollicite donc pour savoir comment passer en paramètre un objet qui sera instancié comme un recordset et que je pourrai utiliser ultérieurement dans ma procédure "main()".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Global ArticleRecordset As Object
    Global ObjetBaseNationale As Object
     
    Sub main()
     
    ...
    Call ouverture_BDD("lecture_seule", ObjetBaseNationale, "J:\XXX.QDB")
    Call ouverture_table(ObjetBaseNationale, "Articles", ArticleRecordset)
    ...
     
    End Sub
    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
     
    Sub ouverture_BDD(option_ouverture As String, ByRef base As Object, chemin As String)
     
    If option_ouverture = "lecture_seule" Then
        Const adModeRead = 1
    End If
     
    Set base = CreateObject("ADODB.Connection")
     
    With base
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        .ConnectionTimeout = 30
        .mode = adModeRead
        .ConnectionString = "Data Source=" & chemin & ";"
        .Open
    End With
     
    End Sub
    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
     
    Sub ouverture_table(ByRef base As Object, nom_table As String, table As Object)
     
    Dim command_sql As Object
     
    Const adCmdText = 1
    Set command_sql = CreateObject("ADODB.Command")
     
    With command_sql
        .ActiveConnection = base
        .CommandType = adCmdText
        .CommandText = "SELECT * FROM " & nom_table
    End With
     
    Set table = command_sql.Execute
     
    End Sub
    Par avance,
    Merci
    Dernière modification par Invité ; 18/12/2012 à 12h49. Motif: Utiliser la liste déroulante devant le titre pour indiquer la version

  2. #2
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    c'est quoi ta déclaration pour ArticleRecordset ?
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Global ArticleRecordset As Object
    Je l'affecte ensuite implicitement à un "ADODB.recordset" dans la sub "ouverture_table"

  4. #4
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    tu dois avoir un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set ArticleRecordset = ....
    ?
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

  5. #5
    Invité
    Invité(e)
    Par défaut
    Oui dans la sub "ouverture_table":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set table = command_sql.Execute

  6. #6
    Expert confirmé
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 093
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 093
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par vcottineau Voir le message
    Oui dans la sub "ouverture_table":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Set table = command_sql.Execute
    pas "table" mais "set ArticleRecordset "!
    Have a nice day. Oliv'
    Votre réponse est peut être dans mon blog !
    https://www.developpez.net/forums/blogs/191381-oliv-/

Discussions similaires

  1. passer un recordset en paramètre
    Par pigeon11 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/12/2008, 10h23
  2. [C#] Passer un dataset en paramètre dans un WinForm enfant
    Par iDaaX dans le forum Windows Forms
    Réponses: 3
    Dernier message: 06/01/2005, 21h55
  3. [Conception] Passer une fonction en paramètre
    Par pejay dans le forum Langage
    Réponses: 9
    Dernier message: 09/12/2004, 13h58
  4. passer un champ en paramètre, c'est possible ??
    Par marie253 dans le forum Bases de données
    Réponses: 6
    Dernier message: 09/07/2004, 09h22
  5. Passer une procédure en paramètre ?
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 24/10/2003, 12h21

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