Petites questions VB2008 et access

Solstyce Messages postés 1 Date d'inscription jeudi 18 septembre 2008 Statut Membre Dernière intervention 12 janvier 2009 - 12 janv. 2009 à 16:51
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 12 janv. 2009 à 19:18
Bonjour à tous et toutes,

je démarre en VB2008 et j'ai besoin de travailler sur une BDD Access,

j'ai bien évidement parcouru différents tutoriaux et lu quelques codes, mais malheureusement tout ce que j'ai vu est un poil complexes

je vous expose mon soucis :

pour éviter d'avoir à chaque fois à copier / coller le code de connexion à la BDD j'ai créé une classe pour effectuer les opérations de base (ouverture de connexion et fermeture), première question, cela est il judiscieux ? aurais-je du préférrer un module à la place ?

voici le code de ma classe :

Public Class CnxBdd
    Public Function OuvreConnect()
        Dim Conn As New System.Data.OleDb.OleDbConnection()
        Dim cli As System.Data.SqlClient.SqlConnection
        Conn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;DATA source=D:\BDD\BDD.mdb"
        Try
            Conn.Open()
        Catch ex As Exception
            MessageBox.Show("erreur de connection à la BDD")
        End Try
        Return Conn
    End Function

    Public Function FermeConnect(ByVal cnx As System.Data.OleDb.OleDbConnection)
        cnx.Close()
    End Function
End Class

ce code semble correct et fonctionner
j'arrive à utiliser ce code dans une feuille VB, mais j'ai un problème de format d'objet lorsque je voudrais appliquer une requete SQL sur cette connexion :
le code utilisé sur la forme est le suivant :

Imports System.Data.SqlClient

Public Class AjEnf
    'définition des variables nécéssaires à la connection à la BDD
    Dim Conn As New CnxBdd
    Dim Objconn As System.Data.OleDb.OleDbConnection

    Private Sub AjEnf_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed

        'fermeture de la connection à la BDD
        Conn.FermeConnect(Objconn)

    End Sub

    Private Sub AjEnf_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'gestion connexion a la BDD access

        Objconn = Conn.OuvreConnect()

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim Rq As New SqlCommand("SELECT * FROM T_Enfant", Conn)
        Dim Rd As New SqlDataReader

        Rd = Rq.ExecuteReader()

        While Rd.Read()
            Console.WriteLine(Rd("test"))
        End While

    End Sub
End Class

les 2 lignes sous-lignés me donne une erreure :

"Error    1    Value of type 'GestionLPD.CnxBdd' cannot be converted to 'System.Data.SqlClient.SqlConnection'.    D:\....\AjEnf.vb    20    60    GestionLPD"

et

"Error    2    Type 'System.Data.SqlClient.SqlDataReader' has no constructors.    D:\...\AjEnf.vb    21    13    GestionLPD"

je n'ai pas du bien saisir quel type de variable je dois renvoyer et / ou utiliser,

Je remercie d'avance celui ou ceux qui éclaireront ma lanterne :)

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 janv. 2009 à 17:07
Salut
Dans la Sub de ton bouton, il ne connait pas "Conn"
Il faudrait déclarer Conn au niveau global de ton application.

Etant alergique à .Net, j'aurai du mal à te dire s'il faut toujours dimensionner les variables en Public dans un module pour qu'elles soient lisible de partout (ça semble logique, mais avec .Net, il ne faut plus s'étonner de rien)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 janv. 2009 à 17:09
Ce serait peut-être ObjConn qu'il faudrait utiliser, non ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
12 janv. 2009 à 19:18
salut,

ouai j'ai du mal à comprendre le raisonnement aussi...

si tu passes par une classe, ce qui est le cas ici, ton OBJET_CONNEXION doit être une propriété de la classe, et non une variable (non accessible) de la form

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
0
Rejoignez-nous