Bonjour,
Au risque de passer pour une débutante... Je ne suis pas trop sûre d'avoir compris comment utiliser les DataReader avec des BD Access.
Le code suivant:
Code VB.NET : 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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 Public Sub connecterBD() Dim StrConn As New OleDbConnection Dim CmdSql As New OleDbCommand Dim DataRdr As OleDbDataReader Dim StrSql As String Dim Value1 As New Object Value1 = Nothing Try StrConn = New OleDbConnection("Provider=Microsoft.Jet.OleDB.4.0; Data Source=Signs.mdb; User Id=; Password=;Mode=Share Deny None;") If (StrConn.State = ConnectionState.Closed) Then StrConn.Open() End If StrSql = "SELECT * FROM to_print" CmdSql = New OleDbCommand(StrSql, StrConn) DataRdr = CmdSql.ExecuteReader() If (DataRdr.HasRows = False) Then Exit Try End If ' Code générant des erreurs ici While DataRdr.Read() If (DataRdr.IsDBNull(0) = False) Then If (Value1.GetType Is GetType(System.Int32)) Then Value1 = DataRdr.GetInt32(0) ' erreur semble générée par cette ligne ElseIf (Value1.GetType Is GetType(System.String)) Then Value1 = DataRdr.GetString(0) ElseIf (Value1.GetType Is GetType(System.Windows.Forms.TextBox)) Then Value1 = DataRdr.GetString(0) ElseIf (Value1.GetType Is GetType(System.Double)) Then Value1 = DataRdr.GetDouble(0) End If Else If (Value1.GetType Is GetType(System.Int32)) Then Value1 = 0 ElseIf (Value1.GetType Is GetType(System.String)) Then Value1 = "" ElseIf (Value1.GetType Is GetType(System.Windows.Forms.TextBox)) Then Value1 = "" ElseIf (Value1.GetType Is GetType(System.Double)) Then Value1 = 0 ElseIf (Value1.GetType Is GetType(System.DateTime)) Then Value1 = New DateTime(2000, 12, 12, 12, 12, 12) End If End If End While ' Always dispose data readers and commands as soon as practicable ' DataRdr.Close() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.OkOnly, "To_Print") Finally ' Close the connection when no longer needed ' CmdSql.Connection.Close() 'CmdSql.Dispose() End Try End Sub
...génère le code suivant:
J'ai défini la variable Value1 en tant qu'objet, car elle peut être de plusieurs types différents. Je me demande si je ne suis pas en train de jouer avec le feu en procédant de cette façon. En fait, c'est pour permettre de lire les données sur une rangée à déterminer pour l'impression d'une fiche descriptive à partir d'un élément choisi dans la BD.La référence d'objet n'est pas définie à une instance d'un objet
Quelqu'un de mieux qualifié que moi en ADO.NET peut-il me dire où je dois recevoir le coup de boule... euh... ce qui cloche dans ma variable Value1? Merci à l'avance...
Partager