Forum: VB.NET |
Thema:
AW: AW: Klassen miteineder "Verknüpfen" |
Von:
M Merlin (
13.07.2007 22:26) |
Danke für deine Antwort....
Also, ich bringe mal nen Beispiel. Mein Problem liegt im GetFromDB. Da Stimmt die Überladung nicht... Weil ich das mit dem ADD in der Klasse Stoffe nicht hinbekomme...
Hier mein Beispiel:
Public Class Glas
#Region "StandardProperties"
Private mvarID As Long
Private mvarName As String
Public Property ID() As Long
Get
Return mvarID
End Get
Set(ByVal Value As Long)
mvarID = Value
End Set
End Property
Public Property Name() As String
Get
Return mvarName
End Get
Set(ByVal Value As String)
mvarName = Value
End Set
End Property
#End Region
End Class
Public Class Glasses
Inherits CollectionBase
Public Function Add(ByVal g As Glas) As Glas
List.Add(g)
Return g
End Function
Public Function Add(ByVal gID As Long, ByVal gName As String) As Glas
Dim g As New Glas
With g
.ID = gID
.Name = gName
End With
List.Add(g)
Return g
End Function
Default Public ReadOnly Property Item(ByVal Index As Integer) As Glas
'Muss gesetzt werden um in der Form die Liste per Item zu füllen
Get
Return CType(List.Item(Index), Glas)
End Get
End Property
End Class
Public Class Stoff
#Region "StandardProperties"
Private mvarIDS As Long
Private mvarNameS As String
Public Property IDS() As Long
Get
Return mvarIDS
End Get
Set(ByVal Value As Long)
mvarIDS = Value
End Set
End Property
Public Property NameS() As String
Get
Return mvarNameS
End Get
Set(ByVal Value As String)
mvarNameS = Value
End Set
End Property
#End Region
End Class
Public Class Stoffe
Inherits CollectionBase
Public Function Add(ByVal s As Stoff) As Stoff
List.Add(s)
Return s
End Function
Public Function Add(ByVal sID As Long, ByVal sName As String) As Stoff
Dim s As New Stoff
With s
.IDS = sID
.NameS = sName
End With
List.Add(s)
Return s
End Function
Default Public ReadOnly Property Item(ByVal Index As Integer) As Stoff
'Muss gesetzt werden um in der Form die Liste per Item zu füllen
Get
Return CType(List.Item(Index), Stoff)
End Get
End Property
Public Function GetFromDB(ByVal CommandString As String, ByRef errMsg As String) As Boolean
Dim cnn As New SqlConnection(PstrConnString)
If OpenDB(cnn, errMsg, 3) = False Then
errMsg = "Datenbankfehler: " & vbCrLf & errMsg
Return False
End If
Try
If cnn.State = ConnectionState.Closed Then cnn.Open()
Try
Dim cmd As New SqlCommand(CommandString, cnn)
Dim Reader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)
'CloseConnection -> mit dem Befehl Reader.Close wird gleich die Connection geschlossen
Do While Reader.Read
Add(CLng(Reader("IDG").ToString), _
IIf(IsDBNull(Reader("mNachGlas")), "", Reader("mNachGlas")).ToString, _
IIf(IsDBNull(Reader("miDS")), "", Reader("miDS")).ToString, _
IIf(IsDBNull(Reader("mNameG")), "", Reader("mNameG")).ToString)
Loop
Reader.Close()
cnn.Dispose()
Catch ex As SqlException
If cnn.State = ConnectionState.Open Then cnn.Close()
cnn.Dispose()
errMsg = ex.Message
Return False
End Try
Catch ex As SqlException
cnn.Dispose()
errMsg = "Kein Datenbankzugriff möglich !"
Return False
End Try
Return True
End Function
End Class
Hadu einen Ansatz ne Idee? Oder mache ich da was grundsätzlich falsch...
Schon mal Danke für deine hilfe....
Betreff |
Von |
Datum |
|
|
AW: AW: AW: Klassen miteineder "Verknüpfen"
Ich würd furchtbar viel anders anstellen:<br><br>Benutze Basisklassen und Benutze Interfaces.<br><br>Public Class MyObjectBase<br><br>End Class<br><br>Public Class MyListBase(of T)<br> Inherits List(of T)<br>End... |
|
|
|
|
|
Bernhard
Grojer
|
13.07.2007 23:03 |
|
|
AW: AW: AW: AW: Klassen miteineder "Verknüpfen"
Hallo Bernhard,<br>ich muss gestehen ich habe noch nie mit Interfaces gearbeitet. Mir ist also die Funktionsweise und die Syntax nicht geläufig....<br>Ich komme also mit deinem Tipp nicht so recht... |
|
|
|
|
|
M
Merlin
|
16.07.2007 08:39 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!