Erreur System.NullReferenceException [Résolu]

Messages postés
19
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2008
- - Dernière réponse : cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
- 4 mars 2008 à 13:07
Bonjour à tous !


Je ne comprends pas pourquoi mon programme, lorsque je le compile, génère une erreur de type : "System.NullReferenceException".

Car je n'ai pas touché la ligne en question et c'est apparu d'un jour à l'autre.
Je me suis beaucoup servi d'une source de ce site, excellente au passage.^^


J'utilise une classe me permettant de me connecter à ma Base de Données (MySQL) qui s'apelle "Cl_MySQL".


Ensuite dans ma Form1, je la déclare ainsi :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
Imports Comptabilité.Cl_MySQL
 
PublicClass Form1
 
'Créer un DataSet :
Dim Dts As DataSet
'Créer une instance de ma classe perso' pour les requêtes
Dim Db As Cl_MySQL
 

<!-- END TEMPLATE: bbcode_code -->Voilà, puis une fois que le nom
d'utilisateur et le mot de passe sont vérifiés, j'ouvre ma base de
données et je rempli mon "DataGridView1 & 2" (.DataSource) avec les
deux tables "recette" & "dépense".


Jusque là tout marchait bien, mais allons savoir pourquoi, maintenant mes DataGridView ne se remplissent plus. ='(


Voici le code :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> If(TextBox18.Text "Utilisateur"And TextBox19.Text "Mot_De_Passe")Then
GroupBox7.Visible = False
TabControl1.Visible = True
Try
Db.SetVar("localhost", "root", "", "compta")
Dts = Db.LoadDb("recette")
DataGridView1.DataSource = Dts.Tables("recette")
Catch ex As Exception
EndTry
Try
Db.SetVar("localhost", "root", "", "compta")
Dts = Db.LoadDb("depense")
DataGridView2.DataSource = Dts.Tables("depense")
Catch ex As Exception
EndTry
Else : MessageBox.Show("Erreur! Identifiant ou Mot de Passe incorrect.", "Erreur d'identification", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, 0, False)
EndIf
 

<!-- END TEMPLATE: bbcode_code -->Et, pour que ce soit plus simple, voici le code de ma classe, du moins la partie dont je me sert pour remplir les DataGridView :

<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
<!--[if !IE]><--><!----><!--[endif]--><!--[if IE]>
<![endif]--> 
Imports MySql.Data.MySqlClient' Importation de la classe MySQL
 
PublicClass Cl_MySQL
 
Dim HostConn AsNew MySQLConnection 'Pour une connexion à la base de données MySQL
Dim Dta As MySqlDataAdapter 'Data adapter
Dim Dts AsNew DataSet 'Dataset
Dim Requete AsString'Chaîne où seront stocké les requêtes
Dim Serv, User, Pass, Database, Table AsString
 
'Fonction d'enregistrement des variables User , Pass ,Serveur et eventuellement Database
Function SetVar(ByVal Servv, ByVal Userv, ByVal Passv, ByVal Databasev)
'On ferme la connection si jamais elle existe
HostConn.Close()
Serv = Servv
User = Userv
Pass = Passv
Database = Databasev
'On attribut les variables de la nouvelle connection
HostConn.ConnectionString = "server=" + Serv + ";" _
& "user id=" + User + ";" _
& "password=" + Pass + ";" _
& "database=" + Database + ""
Return1
EndFunction
 
'Charger la table
Function LoadDb(ByVal Table AsString)
'On clear le Dts si jamais il y a quelque chose
Dts.Clear()
Try
Requete = "SELECT * FROM " + Table + ""
'On ouvre la connection
HostConn.Open()
'On execute la requete
Dta = New MySqlDataAdapter(Requete, HostConn)
'On rempli le Dts avec la table demandée
Dta.Fill(Dts, Table)
'On retourne le Dts
Return Dts
'S'il y a une erreur
Catch myerror As MySqlException
'Afficher le message d'erreur
MessageBox.Show("Erreur de Connection à la Base de Données : " & myerror.Message)
Return0
EndTry
EndFunction
 

<!-- END TEMPLATE: bbcode_code -->Voilà, sa marchait très bien hier, sa
ne marche plus aujourd'hui, pourtant je n'ai rien touché par rapport à
cette partie du code... Enfin je pense, car il dois bien y avoir une
erreur, mais je ne fais que relire et je ne trouve pas.


J'espère que vous aurez plus l'Oeil que moi!


Merci pour la lecture,

CleeM.
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
3
Merci
'Créer une instance de ma classe perso' pour les requêtes


Dim Db As Cl_MySQL



Cette ligne ne crée aucunement une instance de ta classe, elle ne fait que déclarer une variable du type de ta classe. Mais ta variable ne contiendra absolument rien tant que tu n'auras pas créer une intance de ta classe et que tu l'auras associe à ta variable.

Essaye avec Dim Db AsNew Cl_MySQL

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Putain de mise en page

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy
Messages postés
19
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2008
5
0
Merci
Ouai désolé pour la mise en page, j'avais fait sa jolie mais sa a foiré :p

J'essaye direct le AsNew Casy, si c'est sa j'suis aux anges ^^
Commenter la réponse de CleemS
Messages postés
19
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2008
5
0
Merci
Oh My God !!!

Merci beaucoup, et dire que j'ai bloqué là dessus je ne sais combien de temps... Juste pour un "New" !

Bonne journée !
Commenter la réponse de CleemS
Messages postés
19
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
10 juin 2008
5
0
Merci
Tiens j'en profite pour poser une autre question... Peut-être qu'il vaut mieu que je créé une autre discussion?

Je me lance : Sa y est ma table s'affiche dans ma DataGridView (fiou quel progrès !), existe-t'il un moyen de définir la taille des colonnes alors que la DataGridView n'est pas encore remplie? (étant donné que je la rempli qu'après vérification du mot de passe)
Commenter la réponse de CleemS
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
SI tes colonnes existent déjà, oui, regarde les proriétésAutoSizeMode et Width sur chaque colonne

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Commenter la réponse de cs_casy