Hallo,
bin dabei meinen Datenzugriff zur Datenbank zuändern. Typisierte Datasets mag ich einfach nicht.
Habe mir da eine Lösung für untypsierte Datasets erarbeitet.
Bevor ich da nun weiter mache (sind doch viele Tabellen in den Datenbanken) würde ich Euch bitten, mal drüber zu schauen.
Nicht das ich einen Denkfehler oder sonst einen Fehler im Code habe.
Spoiler anzeigen
Danke
bin dabei meinen Datenzugriff zur Datenbank zuändern. Typisierte Datasets mag ich einfach nicht.
Habe mir da eine Lösung für untypsierte Datasets erarbeitet.
Bevor ich da nun weiter mache (sind doch viele Tabellen in den Datenbanken) würde ich Euch bitten, mal drüber zu schauen.
Nicht das ich einen Denkfehler oder sonst einen Fehler im Code habe.
VB.NET-Quellcode
- Option Strict On
- Option Explicit On
- Imports System.Data.OleDb
- Public Class DatenDS
- Private Halt As Boolean
- Public Tabellenliste As New List(Of CDatatools)
- Public AktuellesDatentool As New CDatatools
- Public MBKOCH_DatenDS As New CDatatools ' Anzulegen für jede Tabelle der Datenbanken
- Public MBKOCH_Inhalt As New CDatatools
- Public MBSOFT_Zeitplan As New CDatatools
- Private Modus As String
- Private I As Integer
- Private Sub DatenDS_Load(sender As Object, e As EventArgs) Handles Me.Load
- Me.Visible = False
- Me.Opacity = 0
- Me.Visible = True
- Me.Halt = True
- Daten.DSMBSoft = New DataSet
- Daten.DSMBKoch = New DataSet
- Monitor.Form_Initalisieren(Me)
- Me.Modus = "A"
- Me.MBKOCH_DatenDS.Name = "MBKOCH DatenDS"
- Me.MBKOCH_Inhalt.Name = "MBKOCH Inhalt"
- Me.MBSOFT_Zeitplan.Name = "MBSOFT Zeitplan"
- With Me.Tabellenliste
- .Add(Me.MBKOCH_DatenDS)
- .Add(Me.MBKOCH_Inhalt)
- .Add(Me.MBSOFT_Zeitplan)
- End With
- With Me.TS_Part.ComboBox
- For I = 0 To Me.Tabellenliste.Count - 1
- .Items.Add(Me.Tabellenliste(I).Name)
- Next
- .Text = Me.Tabellenliste(0).Name
- End With
- Me.DatasetLaden()
- Me.Halt = False
- Me.Opacity = 1
- End Sub
- Private Sub DatasetLaden()
- Me.MBKOCH_DatenDS.Initalisieren(Daten.DSMBKoch, Daten.Verbindungsstring_MBKOCH, "DatenDS", Me.MBKOCH_DatenDS)
- Me.MBKOCH_Inhalt.Initalisieren(Daten.DSMBKoch, Daten.Verbindungsstring_MBKOCH, "Inhalt", Me.MBKOCH_Inhalt)
- Me.MBSOFT_Zeitplan.Initalisieren(Daten.DSMBSoft, Daten.Verbindungsstring_MBSOFT, "Zeitplan", Me.MBSOFT_Zeitplan)
- Me.AktuellesDatentool = Me.Tabellenliste(0)
- Me.DGV_Zuordnung()
- End Sub
- Private Sub TS_Speichern_Click(sender As Object, e As EventArgs) Handles TS_Speichern.Click
- If Me.Halt Then Exit Sub
- Me.Validate()
- With Me.AktuellesDatentool
- .DataBinding.EndEdit()
- .DataAdapter.Update(.DS.Tables(.Tabellenname))
- End With
- Me.DGV_Ausgabe.ReadOnly = True
- Me.AktuellesDatentool.DS.Tables(AktuellesDatentool.Tabellenname).Clear()
- With Me.AktuellesDatentool
- .Initalisieren(.DS, .Datenverbindung, .Tabellenname, Me.AktuellesDatentool, .SelectString)
- End With
- Me.Modus = "A"
- End Sub
- Private Sub TS_Korrektur_Click(sender As Object, e As EventArgs) Handles TS_Korrektur.Click
- If Me.Halt Then Exit Sub
- Me.DGV_Ausgabe.ReadOnly = False
- End Sub
- Private Sub TS_Neuanlage_Click(sender As Object, e As EventArgs) Handles TS_Neuanlage.Click
- If Me.Halt Then Exit Sub
- Me.Modus = "N"
- Me.DGV_Ausgabe.ReadOnly = False
- Me.AktuellesDatentool.DataBinding.AddNew()
- End Sub
- Private Sub TS_Loeschen_Click(sender As Object, e As EventArgs) Handles TS_Loeschen.Click
- If Me.Halt Then Exit Sub
- Dim JaNein As DialogResult = MessageBox.Show("Möchten Sie nun den Datensatz löschen?", "Löschbestätigung" & Programm.Copyright_Messagebox,
- MessageBoxButtons.YesNo, MessageBoxIcon.Question)
- If JaNein = DialogResult.No Then Exit Sub
- AktuellesDatentool.DataBinding.RemoveCurrent()
- End Sub
- Private Sub TS_Abbruch_Click(sender As Object, e As EventArgs) Handles TS_Abbruch.Click
- If Me.Halt Then Exit Sub
- If Me.Modus = "N" Then
- AktuellesDatentool.DataBinding.RemoveCurrent()
- End If
- Me.DGV_Ausgabe.ReadOnly = True
- End Sub
- Private Sub TS_Aus_Click(sender As Object, e As EventArgs) Handles TS_Aus.Click
- If Me.Halt Then Exit Sub
- Me.Close()
- End Sub
- Private Sub TS_Part_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TS_Part.SelectedIndexChanged
- If Me.Halt Then Exit Sub
- For I = 0 To Me.Tabellenliste.Count - 1
- If Me.TS_Part.ComboBox.Text = Me.Tabellenliste(I).Name Then
- Me.AktuellesDatentool = New CDatatools
- Me.AktuellesDatentool = Me.Tabellenliste(I)
- End If
- Next
- Me.DGV_Zuordnung()
- End Sub
- Private Sub DGV_Zuordnung()
- With Me.DGV_Ausgabe
- .DataSource = Nothing
- .DataSource = Me.AktuellesDatentool.DataBinding
- For I = 0 To Me.AktuellesDatentool.DS.Tables(Me.AktuellesDatentool.Tabellenname).Columns.Count - 1
- .Columns(I).AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells
- If .Columns(I).Name = "ID" Then .Columns(I).Visible = False
- Next
- .ReadOnly = True
- End With
- With Me.Label_ID
- .DataBindings.Clear()
- .DataBindings.Add("Text", Me.AktuellesDatentool.DataBinding, "ID", True)
- End With
- End Sub
- Private Sub DGV_Ausgabe_SelectionChanged(sender As Object, e As EventArgs) Handles DGV_Ausgabe.SelectionChanged
- If Me.Halt Then Exit Sub
- With Me.Label_ID
- .DataBindings.Clear()
- .DataBindings.Add("Text", Me.AktuellesDatentool.DataBinding, "ID", True)
- End With
- End Sub
- Public Class CDatatools
- Public DS As DataSet
- Public Name As String
- Public SelectString As String
- Public Tabellenname As String
- Public Datenverbindung As String
- Public DataAdapter As New OleDbDataAdapter
- Public Commandbilder As OleDbCommandBuilder
- Public DataBinding As New BindingSource
- Public Sub Initalisieren(ByVal Datenset As DataSet, ByVal Verbindung As String, ByVal Tabellennamen As String, ByVal Tool As CDatatools,
- ByVal Optional Selectanweisung As String = "SELECT * From ")
- With Me
- .DS = Datenset
- .Tabellenname = Tabellennamen
- .Datenverbindung = Verbindung
- .SelectString = Selectanweisung
- End With
- Dim Selection As String = Selectanweisung & Tabellennamen
- Me.DataAdapter = New OleDbDataAdapter(Selection, Verbindung)
- Me.Commandbilder = New OleDbCommandBuilder(Me.DataAdapter)
- With Me.DataAdapter
- .UpdateCommand = Me.Commandbilder.GetUpdateCommand
- .InsertCommand = Me.Commandbilder.GetInsertCommand
- .DeleteCommand = Me.Commandbilder.GetDeleteCommand
- .Fill(Datenset, Tabellennamen)
- End With
- Me.DataBinding.DataSource = Datenset.Tables(Tabellennamen)
- DatenDS.AktuellesDatentool = Tool
- End Sub
- End Class
- End Class
Danke
Gruß Markus