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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
' Erstellen der abstrakten Klasse
<Serializable()> Public MustInherit Class DataClass(Of T)
Implements IDisposable
Private Values As Dictionary(Of T, Object)
Private Columns As List(Of T)
Private m_ErrMsgDataRow As String = ""
Public Sub New()
Values = New Dictionary(Of T, Object)
Columns = New List(Of T)
Columns.AddRange(CType([Enum].GetValues(GetType(T)), _
Global.System.Collections.Generic.IEnumerable(Of T)))
End Sub
''' <summary>
''' Anzahl der Felder, die Datenwerte enthalten können
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property Fields() As List(Of T)
Get
Return Columns
End Get
End Property
''' <summary>
''' Anzahl der Datenwerte
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property CountValues() As Integer
Get
Return Values.Count
End Get
End Property
''' <summary>
''' überprüft ob alle Datenfelder einen Wert haben
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property HasAllFieldsDatas() As Boolean
Get
Return CBool(Values.Count = Columns.Count)
End Get
End Property
''' <summary>
''' Gibt den Wert eines Elements zurück
''' </summary>
''' <param name="e"></param>
''' <returns></returns>
''' <remarks></remarks>
Public Function GetItem(ByVal e As T) As Object
Try
If Me.Values(e) Is Nothing Then Me.Values(e) = ""
Return Me.Values(e)
Catch : End Try
Return Nothing
End Function
''' <summary>
''' Setzt den Wert eines Elements
''' </summary>
''' <param name="Value"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Public Sub SetItem(ByVal e As T, ByVal Value As Object)
Me.Values(e) = Value
End Sub
''' <summary>
''' Setzt die Daten einer Zeile in die Klasse um
''' </summary>
''' <param name="row"></param>
''' <remarks></remarks>
Public Sub Fill_Class(ByVal row As DataRow)
m_ErrMsgDataRow = ""
If row IsNot Nothing Then
For Each p As T In Columns
Try
SetItem(p, row(p.ToString))
Catch ex As Exception
m_ErrMsgDataRow += ex.Message + ControlChars.NewLine
End Try
Next
Exit Sub
End If
m_ErrMsgDataRow = "Datenobjekt ist Nothing."
End Sub
''' <summary>
''' Liest die Variablen in das DataRow ein
''' </summary>
''' <param name="row"></param>
''' <remarks></remarks>
Public Sub Fill_DataRow(ByVal row As DataRow, Optional ByVal AndAddToTable As Boolean = False)
m_ErrMsgDataRow = ""
If row IsNot Nothing Then
For Each p As T In Columns
Try
row(p.ToString) = GetItem(p)
Catch ex As Exception
m_ErrMsgDataRow += ex.Message + ControlChars.NewLine
End Try
Next
If AndAddToTable Then row.Table.Rows.Add(row)
Exit Sub
End If
m_ErrMsgDataRow = "Datenobjekt ist Nothing."
End Sub
''' <summary>
''' Gibt die Fehler zurück, die im Zusammenhang mit
''' einen DataRow-Objekt entstanden sind.
''' </summary>
''' <value></value>
''' <returns></returns>
''' <remarks></remarks>
ReadOnly Property ErrMsgFromDataRow() As String
Get
Return m_ErrMsgDataRow
End Get
End Property
#Region " IDisposable Support "
Private disposedValue As Boolean = False
Protected Overridable Sub Dispose(ByVal disposing As Boolean)
If Not Me.disposedValue Then
If disposing Then
Values = Nothing: Columns = Nothing
End If
' TODO: free your own state (unmanaged objects).
' TODO: set large fields to null.
End If
Me.disposedValue = True
End Sub
' This code added by Visual Basic to correctly implement the disposable pattern.
Public Sub Dispose() Implements IDisposable.Dispose
' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above.
Dispose(True)
GC.SuppressFinalize(Me)
End Sub
#End Region
End Class
' Datenfeldnamen festlegen
Public Enum FieldsKontoInfo
ID
KontoNr
Blz
Bank
Bez
Inhaber
Iban
Swift
DatumGesperrtAb
DatumErstelltAm
BetragStart
End Enum
' Erstellung der Datenklasse
' mit komfortablem Zugriff auf die Daten per Feldnamen
Public Class ClsKontoInfo
Inherits DataClass(Of FieldsKontoInfo)
Public Sub New()
MyBase.New()
End Sub
End Class
|