Eigentlich hatte ich gedacht, dass ich nach Hilfe duch EdR und VaporiZed das Form-übergreifeden und Klassen-übergreifendes Zugreifen auf ein typisiertes Dataset hinbekommen müsste. Wie sich nun herausstellt war dies leider eine falsche Annahme durch mich . Damit wir es hier besser besprechen können habe ich ein kleines Testprojekt erstellt.
Was soll das Testprojekt können: Es gibt das Haupt-Form "Form1" und ein Unterform "Form2" und eine Klasse "TestClass" und ein typisiertes Dataset "DataSet1". Von beiden Forms und von der Klasse heraus möchte ich auf das DataSet zugreifen können.
Mit Hilfe von VaporiZed aus einem anderen Beitrag kann ich schon vom Hauptform und von der Klasse auf das DataSet zugreifen. Der Zugriff vom untergeordneten Fenster funktioniert nicht.
Hier der Code aus dem Testprojekt:
Spoiler anzeigen
Von EdR habe ich noch einen anderen Tip bekommen: Daten laden, speichern, verarbeiten - einfachste Variante
Leider helfen mir diese Hinweise aus Beitrag #7 auch nicht weiter um vom Form 2 auch auf das Dataset zugreifen zu können.
Könnt ihr mir bitte weiterhelfen?
Verschoben. ~Thunderbolt
Was soll das Testprojekt können: Es gibt das Haupt-Form "Form1" und ein Unterform "Form2" und eine Klasse "TestClass" und ein typisiertes Dataset "DataSet1". Von beiden Forms und von der Klasse heraus möchte ich auf das DataSet zugreifen können.
Mit Hilfe von VaporiZed aus einem anderen Beitrag kann ich schon vom Hauptform und von der Klasse auf das DataSet zugreifen. Der Zugriff vom untergeordneten Fenster funktioniert nicht.
Hier der Code aus dem Testprojekt:
VB.NET-Quellcode
- Option Strict On
- Public Class Form1
- Public DataSet1 As New DataSet1
- Public Form2 As Form2
- Public TestClass As TestClass
- Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
- TestClass = New TestClass(DataSet1)
- DataSet1.NoiseSource.AddNoiseSourceRow("Quelle0")
- DataSet1.NoiseSource.AddNoiseSourceRow("Quelle1")
- DataSet1.Wert.AddWertRow(0, 0, DataSet1.NoiseSource(0))
- DataSet1.Wert.AddWertRow(1, 11, DataSet1.NoiseSource(0))
- DataSet1.Wert.AddWertRow(2, 22, DataSet1.NoiseSource(1))
- DataSet1.Wert.AddWertRow(3, 33, DataSet1.NoiseSource(1))
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim OutputLines As New List(Of String)
- OutputLines.Clear()
- OutputLines.Add("vvvvvvvvvvvvvvvv")
- For Each wert In DataSet1.NoiseSource(0).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("----------------")
- For Each wert In DataSet1.NoiseSource(1).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("###############")
- Label1.Text = (String.Join(Environment.NewLine, OutputLines))
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- MessageBox.Show(TestClass.Infotext())
- End Sub
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
- Using frm = New Form2 '(DataSet1) Das klappt nicht sinnvoll
- Dim result = frm.ShowDialog
- End Using
- End Sub
- End Class
- ' #########################################################
- Public Class Form2
- Dim _DataSet_Form2 As DataSet1
- 'Public Sub New(DataSetToUse As DataSet1) ' Geht bei mir nicht
- ' _DataSet_Form2 = DataSetToUse
- 'End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim OutputLines As New List(Of String)
- OutputLines.Clear()
- OutputLines.Add("vvvvvvvvvvvvvvvv")
- For Each wert In _DataSet_Form2.NoiseSource(0).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("----------------")
- For Each wert In _DataSet_Form2.NoiseSource(1).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("###############")
- Label1.Text = (String.Join(Environment.NewLine, OutputLines))
- End Sub
- End Class
- ' ###########################################################
- Public Class TestClass
- Dim _DataSet_TestClass As DataSet1
- Public Sub New(DataSetToUse As DataSet1)
- _DataSet_TestClass = DataSetToUse
- End Sub
- Public Function Infotext() As String
- Dim OutputLines As New List(Of String)
- OutputLines.Clear()
- OutputLines.Add("vvvvvvvvvvvvvvvv")
- For Each wert In _DataSet_TestClass.NoiseSource(0).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("----------------")
- For Each wert In _DataSet_TestClass.NoiseSource(1).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- OutputLines.Add("###############")
- ' MessageBox.Show(String.Join(Environment.NewLine, OutputLines), "Werte " & ENR_Nr.ToString)
- Return (String.Join(Environment.NewLine, OutputLines))
- End Function
- Public Sub Testausgabe()
- Dim OutputLines As New List(Of String)
- OutputLines.Clear()
- For Each wert In _DataSet_TestClass.NoiseSource(1).GetWertRows
- OutputLines.Add(wert.Frequenz.ToString & " " & wert.ENR_dB.ToString)
- Next
- MessageBox.Show(String.Join(Environment.NewLine, OutputLines), "Werte")
- End Sub
- End Class
Von EdR habe ich noch einen anderen Tip bekommen: Daten laden, speichern, verarbeiten - einfachste Variante
Leider helfen mir diese Hinweise aus Beitrag #7 auch nicht weiter um vom Form 2 auch auf das Dataset zugreifen zu können.
Könnt ihr mir bitte weiterhelfen?
Verschoben. ~Thunderbolt
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()