Voila j'utilise une procédure qui me permet de charger un sqldatareader pour pouvoir le parcourir et par la suite mettre les infos dont j'ai besoin dans des cellules spécifiques d'un datagridview.
Cependant ma procédure qui s'occupe de charger les données dans mon datareader se trouve dans une classe qui s'occupe de tout ce qui est liaison avec la base de donnée et j'ai besoin de récupérer l'objetdatareader dans le code de ma form principal pour pouvoir le parcourir et organiser mes données dans mon datagridview. Pour cela j'ai utilisé le byval, mais les données ne transitent pas, quand je fais la vérification des données du coté de ma classe de départ j'en ai bien, mais lorsque je parcours mon objetdatareader dans ma form j'ai aucune information.
Voici le code
Fonction qui charge le datareader du coté de ma classe de conenction a la BD
et çà c'est le code d'appel de la fonction qui devrait me renvoyer un objetdatareader chargé de donné
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Public Function reader(ByVal req As String, ByVal objdatareader As SqlDataReader) As Boolean Try 'on instancie la connexion objetconnection = New SqlConnection 'on donne les valeurs à la connexion objetconnection.ConnectionString = strConn 'on instancie un objet Commande ObjetCommand = New SqlCommand(req) 'on ouvre la connexion objetconnection.Open() 'initialiser l'objet Command ObjetCommand.Connection() = objetconnection 'on instancie un objet datareader objdatareader = ObjetCommand.ExecuteReader If objdatareader.HasRows Then Return True '' tant que le DataReader a une ligne d'enregistrements 'File.Delete("\table.txt") 'on supprime le fichier si il existe déja 'Dim Flux As New StreamWriter(Application.StartupPath & "\table.txt", False) 'crée un fichier nommé test.txt 'While ObjetDatareader.Read ' Flux.Write(ObjetDatareader.GetValue(1)) 'écrit les données dans le fichier ' Flux.Write(Environment.NewLine) 'End While 'Flux.Close() 'ferme le fichier ===> important !! Else 'si il n'y a pas de ligne on informe MessageBox.Show("Il n'y a pas de donnée", "Infos", MessageBoxButtons.OK, MessageBoxIcon.Information) Return False End If Catch ex As Exception MessageBox.Show(ex.Message) Finally 'If Not (ObjetDatareader Is Nothing) Then ObjetDatareader.Close() If Not (objetconnection Is Nothing) Then objetconnection.Close() End Try End Function
Quand je veux lire les données j'obtiens ces messages là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Dim objdatareader As SqlDataReader If BD.reader(strSql, objdatareader) Then '' tant que le DataReader a une ligne d'enregistrements While objdatareader.Read With DATAGRIDHeureInt .Rows(6).Cells(1).Value = objdatareader.GetValue(2) End With End While End If
L'exception NULLReferenceException n'a pas été géré et La référence d'objet n'est pas définie à une instance d'un objet.
Comment puis-je remedier à cela ??
d'avance merci
@++
dubidon
Partager