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

VB 6 et antérieur Discussion :

[VB6] Recordset


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Par défaut [VB6] Recordset
    Bonjour à tous,

    J'essaye de créer en VB6 une fonction qui exécute une requête Sql et qui me retourne le recordset associé.

    Voici le 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
     
    Public Function ConnectionBd() As ADODB.Recordset
    Dim ConnectionString As String
    Dim adoConnection As ADODB.Connection
    Dim adoRec As ADODB.Recordset
     
    Set adoRec = New ADODB.Recordset
    Set adoConnection = New ADODB.Connection
     
    // J'éxécute ensuite ma requête
    // je veux ensuite retourner le recordset
     
    Set Connection = adoRec
     
    End
    J'aimerais appeler cette fonction dans un autre module, mais je n'y arrive pas. Quelqu'un peut-il m'aider?

    Merci

  2. #2
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Salut!
    Déjà, je te conseillerais de passer ta requête SQL en paramètre d'entrée de ta fonction.
    Ensuite, à la fin, "Set Connection = adoRec ", ça ne devrait pas être
    "Set ConnectionBd = adoRec", par hasard?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Par défaut
    Voilà le code que je viens de modifier et qui ne marche toujours pas.
    J'ai crée dans un premier temps une classe (de type ConnectionBaseDeDonnees) qui gère l'éxécution de la requête :

    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
     
    'variables locales de stockage des valeurs de propriétés
    Public NomDuFichierDeLaBaseDeDonnees As String
    Public connectString As String
    Public adoConnection As ADODB.Connection
    Public adoRecordset As ADODB.Recordset
    Public SQLRequete As String
     
     
    Public Sub ConnecterBD()
    Set adoConnection = New ADODB.Connection
    Set adoRecordset = New ADODB.Recordset
    SQLRequete = "Select * from 985422"
    'Jointure des tables
    NomDuFichierDeLaBaseDeDonnees = App.Path & "\BDbourse\sicovam3.mdb"
    connectString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                  & "Data Source=" & NomDuFichierDeLaBaseDeDonnees
    adoConnection.Open connectString
    adoRecordset.Open SQLRequete, adoConnection, adOpenKeyset, _
                      adLockOptimistic, adCmdText
    MsgBox adoRecordset!datecotation // il m'affiche bien la valeur que je souhaite
    adoConnection.Close
    End Sub
    La connection a la Base marche très bien.

    Dans une autre classe, j'instancie un objet de type ConnectionBaseDeDonnees :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    Dim dd As ConnectionBaseDeDonnees
    Set dd = New ConnectionBaseDeDonnees
    dd.ConnecterBD
    Debug.Print dd.adoRecordset!datecotation
    Là il me met une erreur, en m'indiquant qu'il ne connait pas l'objet. Quelqu'un voit-il une erreur dans mon code?

    Merci

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    et... comment la 2ème "class" est-elle informée de la base à traiter :

    (à moins qu'il ne manque un bout de code, je ne vois pas !....)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Par défaut
    Citation Envoyé par jmfmarques
    et... comment la 2ème "class" est-elle informée de la base à traiter :

    (à moins qu'il ne manque un bout de code, je ne vois pas !....)
    Toutes les informations sont dans la procédure ConnecterBD(), non?

  6. #6
    Membre éclairé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2005
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2005
    Messages : 64
    Par défaut
    salut,;
    je pense que le pb est le faite de fermer la connection adoConnection sans déconnecté le curseur.
    essai dans la foction ConnecterBD
    adoRecordset.ActiveConnection=nothing
    adoConnection.Close

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 149
    Par défaut
    Citation Envoyé par Amri_Daly
    salut,;
    je pense que le pb est le faite de fermer la connection adoConnection sans déconnecté le curseur.
    essai dans la foction ConnecterBD
    adoRecordset.ActiveConnection=nothing
    adoConnection.Close
    Je viens de rajouter ceci, et apparamment ça marche.
    Merci.

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

Discussions similaires

  1. [VB6]recordset hiérarchique
    Par mcay dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/05/2006, 23h30
  2. [VB6]recordset ado
    Par chagala dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 03/05/2006, 11h29
  3. [VB6] RecordSet, Oracle, requête sur plusieurs Tables
    Par pier* dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/04/2006, 10h19
  4. [VB6]Recordset
    Par yoda7666 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/01/2006, 10h17
  5. [VB6] Recordset.update et Mise à jour de ma base
    Par badgam piero dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/12/2005, 14h38

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