Module de connexion BDD Sql

elwadeh Messages postés 55 Date d'inscription samedi 11 avril 2009 Statut Membre Dernière intervention 28 juin 2018 - 23 févr. 2015 à 16:02
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 - 24 févr. 2015 à 00:44
Bonjour,
j'ai crée un module de connexion de cette façon :

Imports System.Data.SqlClient

Module ModuleConnect
Public cnx As New SqlConnection
Public cmd As New SqlCommand
Public dta As New SqlDataAdapter
Public cmdb As New SqlCommandBuilder
Public dts As New DataSet
Public dtt As New DataTable
Public dtr As DataRow
Public rownum As Integer
Public conn As String
Public sql As String
Public Sub connect()
cnx.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\facturesgda.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"
cnx.Open()
cnx.Close()
End Sub

End Module



j'ai deux Forms, Form1 et Form2 avec DataGridView dans chacun de mes Forms remplie avec la code suivant :


dts.Clear()
sql = "select prime.* from prime"
cmd = New SqlCommand(sql)
dta = New SqlDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "prime")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("prime")
dta.Update(dts, "prime")
'si la table est vide alors

If rownum > dtt.Rows.Count - 1 Then
Me.Show()
End If


PrimeBindingSource.DataSource = dtt
Dgv.DataSource = PrimeBindingSource


quand j'ouvre le Form1 mon DataGridView est bien remplie sans problème et quand j'ouvre mon Form2 mon DataGridView est bien remplie sans problème mais mon problème c'est quand je lance les deux Forms il y que la DataGridView d'un seul Form qui est remplie et l'autre vide.
merci de corriger mon code si non si le code est bien je vous prie de me dire ou est le problème.

cordialement.

3 réponses

Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
23 févr. 2015 à 21:30
Bonsoir,

Quand tu ouvres les 2 en même temps ? C'est normal tu utilises les mêmes variables pour ta requête, ton dataset et le reste.

Exemple, tu fais 2 requêtes différentes avec les mêmes variables dans le même évènement, tu vides avant ou après dataset et rownum :

dts.Clear()'Tu vides le dataset d'une requête précédente
Rownum=nothing ' Tu vides la variable qui contient le nº de ligne

sql = "select prime.* from prime"
cmd = New SqlCommand(sql)
dta = New SqlDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta.Fill(dts, "prime")
'chargement de la DataTable à partir du DataSet
dtt = dts.Tables("prime")
dta.Update(dts, "prime")


Si par contre tu veux utiliser le même code en même temps, faut utiliser d'autres variables. Là c'est la requête la plus rapide qui prend les données.

Pour la 2 ème tu peux faire comme ça :

dts.Clear()'Tu vides le dataset d'une requête précédente
Rownum=nothing ' Tu vides la variable qui contient le nº de ligne

sql = "select prime.* from prime"
cmd = New SqlCommand(sql)
dta2 = New SqlDataAdapter(cmd)
cmd.Connection() = cnx
'chargement du DataSet à partir du DataAdapter
dta2.Fill(dts2, "prime")
'chargement de la DataTable à partir du DataSet
dtt2 = dts2.Tables("prime")
dta2.Update(dts2, "prime")


Ou alors plutot que d'utiliser 2 fois le même code lie tes 2 datagridview sur une seule requête d'une seule form.




--
0
galaxy2009 Messages postés 144 Date d'inscription dimanche 24 avril 2011 Statut Membre Dernière intervention 16 juin 2016
23 févr. 2015 à 23:35
bonjour,
moi aussi j'ai le meme problème j'ai essayé la proposition de DORO 81079 mais ça ne marche pas du fait que le problème est au niveau de la déclaration dans le module, je crois quand tu ouvre une Form l'événement close de la connexion se déclanche donc au moment où tu veux ouvrir le 2ème Form la connexion est deja fermée. c'est une hypotèse.
moi mes datagridview sont remplient avec deux tables différents.
0
Doro81079 Messages postés 380 Date d'inscription vendredi 22 avril 2005 Statut Membre Dernière intervention 24 février 2015 56
24 févr. 2015 à 00:44
Oui en effet si tu ouvres puis ferme la connexion dans le même évènement...

Perso je n'utilise pas de bindingsource, je code tout, y a plus de boulot mais au moins tu trouves tout de suite ton erreur.

Parce que là ça m'a l'air d'être un sacré foutoir si il arrive dans un premier temps à charger sa Datagridview sachant que dans le module il ferme la connexion à peine ouverte.

C'est que d'un côté les liaisons bindingsource font le taffe et d'un coup ça cafouille.

Dans la form du data qui ne se charge pas, en mode éxécution passe le curseur sur cnx si tu as nothing c'est que ta connexion est fermée.

On aura déjà une piste.

Ps : L'ouverture de la connexion se fait dans le load, le close quand tu fermes la form.



--
0
Rejoignez-nous