Solstyce
Messages postés1Date d'inscriptionjeudi 18 septembre 2008StatutMembreDernière intervention12 janvier 2009
-
12 janv. 2009 à 16:51
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDerniè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 :)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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