Utiliser une fonction dans un winForm
Bonjours à tous,
Je développe une appli winform pour un projet d'exam.
Le thème est un calculateur de facture EDF - GDF - EAU + Impôts sur revenue
Pour le moment j'ai effectué la parti graphique de ma fenêtre EDF.
J'ai créer une tale AboEdf qui recense tout les abonnement a EDF.
Je voudrai donc lister le nom des abonnement ( TYpeAbo dans ma table ) dans un comboBox.
J'ai créer une classe AboEdf avec les champs de ma table AboEdf :
Code:
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 73 74 75 76 77 78 79 80 81 82
| Imports MonAdminArchi.connexion
Imports System.Data.SqlClient
Imports System.Data.Sql
Public Class AboEdf
Private _id As Integer
Private _TypeAbo As String
Private _Puissance As String
Private _PrixAn As Decimal
Private _PrixKwhHc As Decimal
Private _PrixKwHp As Decimal
Public Property id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
Public Property TypeAbo() As String
Get
Return _TypeAbo
End Get
Set(ByVal value As String)
_TypeAbo = value
End Set
End Property
Public Property Puissance() As String
Get
Return _Puissance
End Get
Set(ByVal value As String)
_Puissance = value
End Set
End Property
Public Property PrixAn() As Decimal
Get
Return _PrixAn
End Get
Set(ByVal value As Decimal)
_PrixAn = value
End Set
End Property
Public Property PrixKwHv() As Decimal
Get
Return _PrixKwhHc
End Get
Set(ByVal value As Decimal)
_PrixKwhHc = value
End Set
End Property
Public Property PrixKwHp() As Decimal
Get
Return _PrixKwHp
End Get
Set(ByVal value As Decimal)
_PrixKwHp = value
End Set
End Property
Public Sub New(ByVal TypeAbo As String, ByVal Puissance As String, PrixAn As Double, ByVal PrixKwHc As Double, ByVal PrixKwHp As Double)
_TypeAbo = TypeAbo
_Puissance = Puissance
_PrixAn = PrixAn
_PrixKwhHc = PrixKwHc
_PrixKwHp = PrixKwHp
End Sub
Public Overrides Function ToString() As String
Return String.Format(Me._TypeAbo, Me._Puissance, Me._PrixAn, Me._PrixKwhHc, Me._PrixKwHp)
End Function
End Class |
Puis une classe connexion :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
Imports System.Data.SqlClient
Imports System.Data
Public Class connexion
Public Const DATA_SOURCE As String = "JEROME-PC\SQLEXPRESS"
Public Const INITIAL_CATALOG As String = "Logiciel_admin"
Public Const INTEGRATED_SECURITY As Boolean = True
End Class |
Et enfin une classe Gestion :
Code:
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
|
Imports System.Data.SqlClient
Imports MonAdminArchi.AboEdf
Imports MonAdminArchi.connexion
Public Class Gestion
Public Function Lister(ByVal Requete As String) As ArrayList
Dim TabTypeAbo As New ArrayList
Dim cxString As String = "database=" + connexion.DATA_SOURCE + ";initial Catalogue=" + connexion.INITIAL_CATALOG + ";Integrated security=" + connexion.INTEGRATED_SECURITY + ""
Dim cx As New SqlConnection(cxString)
cx.Open()
Dim query As New SqlCommand(Requete, cx)
Dim reader As SqlDataReader = query.ExecuteReader
Dim row As Object() = Nothing
While reader.Read
If row Is Nothing Then
row = New Object(reader.FieldCount) {}
End If
reader.GetValues(row)
Dim i As Integer = 0
While i < row.GetLength(0)
If Not row(i) Is Nothing AndAlso Not (row(i) Is DBNull.Value) Then
TabTypeAbo.Add(row(i).ToString())
Else
Trace.Write("NULL")
End If
If i < row.GetUpperBound(0) Then
TabTypeAbo.Add("|")
End If
i += 1
End While
Trace.Write(vbCrLf)
End While
reader.Close()
cx.Close()
Return TabTypeAbo
End Function
End Class |
Je voudrai maintenant que dans la parti vb de ma fenêtre EDF appeler cette fonction comme par exemple :
Lister("SELECT TypeAbo FROM AboEdf") et ajouter le résulta dans un comboBox.
J'ai fais ceux ci :
Code:
1 2
|
Me.ComboBox_abo_edf.Items.Add(Lister("SELECT TypeAbo FROM AboEDF")) |
mais Lister est souligner :
Citation:
Une référence à un membre partagé requiert une référence d'objet.
Je suis bloqué.
Merci a vous par avance pour votre aide.
Cdl
Jérôme