elwadeh
Messages postés55Date d'inscriptionsamedi 11 avril 2009StatutMembreDernière intervention28 juin 2018
-
23 févr. 2015 à 16:02
Doro81079
Messages postés380Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention24 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
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.
Doro81079
Messages postés380Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention24 février 201556 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.
galaxy2009
Messages postés144Date d'inscriptiondimanche 24 avril 2011StatutMembreDernière intervention16 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.
Doro81079
Messages postés380Date d'inscriptionvendredi 22 avril 2005StatutMembreDernière intervention24 février 201556 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.