ich lese hier schon eine ganze Weile alles quer zum Thema DB-Entwicklung.
Es gilt, eine in die Jahre gekommene Access.adp-Anwendung abzulösen. Die Tabellenstruktur ist eigentlich klar, wid aber auch modifiziert.
Die Phase anfangen, verwerfen, Dataset, dann doch typisiert, Tableadapter wegwerfen usw., da bin ich mitten drin!
Also erst einmal Dank an alle, die hier ihr Wissen und ihre Erfahrungen weitergeben!
Als letztes habe ich die HelpersSmallEd eingebunden....
Als DB habe ich den SQLSERVER (Express). Konkret habe ich (als Beispiel) ein Formular mit einem DGV.
Dank der Helpers nutze ich jetzt T135teamBS.EditCurrent(Of Frm_135_team_dlg) und T135teamBS.EditNew(Of Frm_135_team_dlg) für die Baerbeitung und das Erstellen neuer Datensätze. Funktioniert.
Nun habe ich folgenden Gedanken: Gelegentlich ist es sinnvoll, gleich mehrere neue Datensätze anzulegen, die dann im Nachgang nur angepasst werden.
Dazu nutze ich Frm_135_team_insert_loop aufgerufen von Frm_135_team_v02.
Bis zum Aufruf ist das Dataset Ds_135_team_oTA.t135_team (als Beispiel Tabelle t135_team) auch gefüllt.
Lande ich vom Frm_135_team_insert_loop wieder in Frm_135_team_v02.Teams_anlegen ist das Dataset leer.
Folge ist ein Constraint-Fehler.
Die Variante B aus Frm_135_team_insert_loop bringt keinen Fehler, aber ich seh da auch nichts Neues ...
Frm_135_team_v02.TestToolStripMenuItem_Click funktioniert, da werden die Datensätze geschrieben, ist ja auch innerhalb des Formulars ...
Fragen, ja, einige ...
a) Könnte es sein das sich die Konzepte SqlServerPersistance und HelpersSmallEd hier nicht vertragen?
Oder ich setze sie falsch ein?
Beim Speichern habe ich da auch noch Bedenken, HelpersSmallEd geht ja über den OK-Button im modalen Formular, greift aber auch ein wenn das Dataset nicht gespeichert ist.
Frm_135_team_v02.DataSet_Speichern ist aber auch noch da ....
b) Bei T135teamBS.EditCurrent(Of Frm_135_team_dlg)() und T135teamBS.EditNew(Of Frm_135_team_dlg)() ist ja das Formübergreifende Databinding mit drin,
hier fehlt es wahrscheinlich und deshalb geht es nicht.
c) Wo sollte das Anfügen der neuen Datensätze laufen, in Frm_135_team_v02 oder in Frm_135_team_insert_loop?
Ich sehe hier nur gerade keinen Weg, was dann wie zu sortieren wäre ....
Vielen Dank schon mal für Eure Zeit ...
Und was Euch sonst noch auffällt, her damit.
Es gilt, eine in die Jahre gekommene Access.adp-Anwendung abzulösen. Die Tabellenstruktur ist eigentlich klar, wid aber auch modifiziert.
Die Phase anfangen, verwerfen, Dataset, dann doch typisiert, Tableadapter wegwerfen usw., da bin ich mitten drin!
Also erst einmal Dank an alle, die hier ihr Wissen und ihre Erfahrungen weitergeben!
Als letztes habe ich die HelpersSmallEd eingebunden....
Als DB habe ich den SQLSERVER (Express). Konkret habe ich (als Beispiel) ein Formular mit einem DGV.
Dank der Helpers nutze ich jetzt T135teamBS.EditCurrent(Of Frm_135_team_dlg) und T135teamBS.EditNew(Of Frm_135_team_dlg) für die Baerbeitung und das Erstellen neuer Datensätze. Funktioniert.
Nun habe ich folgenden Gedanken: Gelegentlich ist es sinnvoll, gleich mehrere neue Datensätze anzulegen, die dann im Nachgang nur angepasst werden.
Dazu nutze ich Frm_135_team_insert_loop aufgerufen von Frm_135_team_v02.
Bis zum Aufruf ist das Dataset Ds_135_team_oTA.t135_team (als Beispiel Tabelle t135_team) auch gefüllt.
Lande ich vom Frm_135_team_insert_loop wieder in Frm_135_team_v02.Teams_anlegen ist das Dataset leer.
Folge ist ein Constraint-Fehler.
Die Variante B aus Frm_135_team_insert_loop bringt keinen Fehler, aber ich seh da auch nichts Neues ...
Frm_135_team_v02.TestToolStripMenuItem_Click funktioniert, da werden die Datensätze geschrieben, ist ja auch innerhalb des Formulars ...
Fragen, ja, einige ...
a) Könnte es sein das sich die Konzepte SqlServerPersistance und HelpersSmallEd hier nicht vertragen?
Oder ich setze sie falsch ein?
Beim Speichern habe ich da auch noch Bedenken, HelpersSmallEd geht ja über den OK-Button im modalen Formular, greift aber auch ein wenn das Dataset nicht gespeichert ist.
Frm_135_team_v02.DataSet_Speichern ist aber auch noch da ....
b) Bei T135teamBS.EditCurrent(Of Frm_135_team_dlg)() und T135teamBS.EditNew(Of Frm_135_team_dlg)() ist ja das Formübergreifende Databinding mit drin,
hier fehlt es wahrscheinlich und deshalb geht es nicht.
c) Wo sollte das Anfügen der neuen Datensätze laufen, in Frm_135_team_v02 oder in Frm_135_team_insert_loop?
Ich sehe hier nur gerade keinen Weg, was dann wie zu sortieren wäre ....
Vielen Dank schon mal für Eure Zeit ...
Und was Euch sonst noch auffällt, her damit.
VB.NET-Quellcode
- Public Class Frm_135_team_v02
- Private _Persistance As SqlServerPersistance
- Dim str_SucheIn As String = String.Empty
- Dim dr As DialogResult
- Dim int_t135 As Int32
- Public Sub New()
- InitializeComponent()
- _Persistance = New SqlServerPersistance(Frm_000_anmeldung.str_connStr, Ds_135_team_oTA)
- End Sub
- Private Sub Frm_135_team_v02_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- _Persistance.FillAll()
- Me.Ds_135_team_oTA.Register(Me, True) 'Helpers
- 'Formular für KeyDown vorbereiten!
- Me.KeyPreview = True
- txt_count_record.Text = T135teamBS.Count.ToString("N0")
- cbo_suchbegriff.Visible = False
- int_t135 = Ds_135_team_oTA.t135_team.Count
- 'MessageBox.Show("int_t135 Start: " & CStr(int_t135), "INFO", MessageBoxButtons.OK)
- End Sub
- Private Sub DataSet_Speichern()
- _Persistance.Save()
- tssl.Text = "Datensätze wurden gespeichert."
- txt_count_record.Text = T135teamBS.Count.ToString("N0")
- End Sub
- Private Sub SpeichernF9ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernF9ToolStripMenuItem.Click
- DataSet_Speichern()
- End Sub
- 'wird auch in Helpers behandelt, hier habe ich aber kein modales FRM mot OK-Button...
- Private Sub Frm_135_team_v02_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
- Dim dr As DialogResult
- If Ds_135_team_oTA.HasChanges() Then
- 'Änderungen anzeigen
- 'btn_save.BackColor = Color.LightCoral
- dr = MessageBox.Show("Es gibt noch nicht gespeicherte Änderungen! Speichern?", "Speichern", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
- If dr = DialogResult.Yes Then
- DataSet_Speichern()
- End If
- End If
- End Sub
- 'Sinnvoll?
- Private Sub Dgv_135_DataError(sender As Object, e As DataGridViewDataErrorEventArgs) Handles dgv_135.DataError
- MessageBox.Show("Error happened " _
- & e.Context.ToString())
- If (e.Context = DataGridViewDataErrorContexts.Commit) _
- Then
- MessageBox.Show("Commit error")
- End If
- If (e.Context = DataGridViewDataErrorContexts _
- .CurrentCellChange) Then
- MessageBox.Show("Cell change")
- End If
- If (e.Context = DataGridViewDataErrorContexts.Parsing) _
- Then
- MessageBox.Show("parsing error")
- End If
- If (e.Context =
- DataGridViewDataErrorContexts.LeaveControl) Then
- MessageBox.Show("leave control error")
- End If
- If (TypeOf (e.Exception) Is ConstraintException) Then
- Dim view As DataGridView = CType(sender, DataGridView)
- view.Rows(e.RowIndex).ErrorText = "an error"
- view.Rows(e.RowIndex).Cells(e.ColumnIndex) _
- .ErrorText = "an error"
- e.ThrowException = False
- End If
- End Sub
- Private Sub NeuesTeamAnlegenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeuesTeamAnlegenToolStripMenuItem.Click
- T135teamBS.EditNew(Of Frm_135_team_dlg)() 'HelpersSmallEd.dll
- End Sub
- Private Sub Dgv_135_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgv_135.CellDoubleClick
- T135teamBS.EditCurrent(Of Frm_135_team_dlg)() 'HelpersSmallEd.dll
- End Sub
- Private Sub MehrereTeamsAnlegenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles MehrereTeamsAnlegenToolStripMenuItem.Click
- Dim frm As New Frm_135_team_insert_loop
- frm.Show(Me)
- End Sub
- Public Sub Teams_anlegen(ByVal int_sparte As Integer,
- ByVal int_nation As Integer,
- ByVal int_tkat As Integer,
- ByVal dat_von As Date,
- ByVal dat_bis As Date,
- ByVal str_bezeichnung As String,
- ByVal int_anzahl As Integer)
- 'ist die Datatable gefüllt?
- int_t135 = Ds_135_team_oTA.t135_team.Count
- '-->> PROBLEM Ds_135_team_oTA(.t135_team) ist leer
- 'Constraint-Fehler
- If int_t135 > 0 Then
- For i = 1 To int_anzahl
- 'Struktur der Zeile
- Dim rwTeam = Ds_135_team_oTA.t135_team.Newt135_teamRow
- rwTeam.t135_t105_id = int_sparte
- rwTeam.t135_t100_id = int_nation
- rwTeam.t135_suchname_team = str_bezeichnung & " " & Convert.ToString(i).PadLeft(2, CChar("0"))
- rwTeam.t135_name_team = rwTeam.t135_suchname_team
- rwTeam.t135_t134_id = int_tkat
- rwTeam.t135_von = dat_von.Date
- rwTeam.t135_bis = dat_bis.Date
- rwTeam.t135_gueltig_jn = CBool(1)
- rwTeam.t135_rf_blockstart_ezf_order = 1
- rwTeam.t135_kurz3 = Nothing
- rwTeam.t135_rf_email_leiter_team = Nothing
- rwTeam.t135_rf_name_leiter_team = Nothing
- rwTeam.t135_rf_tel_leiter_team = Nothing
- 'Zeile der DataTable hinzufügen
- Ds_135_team_oTA.t135_team.Rows.Add(rwTeam)
- Next
- tssl.Text = "Die Teams wurden angelegt."
- 'DataSet_Speichern()
- Else
- MessageBox.Show("int_t135: " & CStr(int_t135), "FEHLER", MessageBoxButtons.OK)
- End If
- End Sub
- Private Sub Frm_135_team_v02_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
- If e.KeyCode = Keys.F9 Then
- DataSet_Speichern()
- ElseIf e.KeyCode = Keys.F7 Then
- T135teamBS.EditCurrent(Of Frm_135_team_dlg)() 'HelpersSmallEd.dll
- ElseIf e.KeyCode = Keys.F5 Then
- T135teamBS.EditNew(Of Frm_135_team_dlg)() 'HelpersSmallEd.dll
- End If
- End Sub
- Private Sub EditToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EditToolStripMenuItem.Click
- T135teamBS.EditCurrent(Of Frm_135_team_dlg)() 'HelpersSmallEd.dll
- End Sub
- Private Sub TestToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TestToolStripMenuItem.Click
- 'ZUM TEST, ohne Wechsel auf ein anderes FRM: läuft ...
- 'Variante 01
- int_t135 = Ds_135_team_oTA.t135_team.Count
- Dim int_t134 = Ds_135_team_oTA.t134_teamkategorie.Count
- For i = 1 To 3
- 'Struktur der Zeile
- Dim rwTeam = Ds_135_team_oTA.t135_team.Newt135_teamRow
- rwTeam.t135_t105_id = 2
- rwTeam.t135_t100_id = 2
- rwTeam.t135_suchname_team = "2020 RG BDR " & " " & Convert.ToString(i).PadLeft(2, CChar("0"))
- rwTeam.t135_name_team = rwTeam.t135_suchname_team
- rwTeam.t135_t134_id = 6
- rwTeam.t135_von = CDate("15.03.2020").Date
- rwTeam.t135_bis = CDate("15.10.2020").Date
- rwTeam.t135_gueltig_jn = CBool(1)
- rwTeam.t135_rf_blockstart_ezf_order = 1
- rwTeam.t135_kurz3 = Nothing
- rwTeam.t135_rf_email_leiter_team = Nothing
- rwTeam.t135_rf_name_leiter_team = Nothing
- rwTeam.t135_rf_tel_leiter_team = Nothing
- 'Zeile der DataTable hinzufügen
- Ds_135_team_oTA.t135_team.Rows.Add(rwTeam)
- Next
- End Sub
- End Class
VB.NET-Quellcode
-
- Public Class Frm_135_team_insert_loop
- Dim dr As DialogResult
- Private _Persistance As SqlServerPersistance
- Public Sub New()
- InitializeComponent()
- _Persistance = New SqlServerPersistance(Frm_000_anmeldung.str_connStr, Ds_135_team_oTA)
- End Sub
- Private Sub Frm_135_b_teams_anlegen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- 'kein modales Formular oder doch? Helpers vs. SqlServerPersistance ...
- _Persistance.CustomFill(Ds_135_team_oTA.t134_teamkategorie, "Where t134_id>0")
- _Persistance.CustomFill(Ds_135_team_oTA.t100_nation, "Where t100_id>0")
- _Persistance.CustomFill(Ds_135_team_oTA.t105_sparte, "Where t105_id>0")
- '_Persistance.CustomFill(Ds_135_team_oTA.t135_team, "Where t135_id>0") 'brauche ich ja eigentlich nicht
- 'Formular für KeyDown vorbereiten!
- Me.KeyPreview = True
- Me.cbo_t135_t105_id.SelectedValue = 2 'STR
- Me.cbo_t135_t100_id.SelectedValue = 2 'GER
- Me.cbo_t135_t134_id.SelectedValue = 6 'RG
- TextBox1.Text = "t105: " + CStr(Ds_135_team_oTA.t105_sparte.Count) '6 Datensätze aus t105_sparte
- End Sub
- Private Sub SpeichernF9ToolStripMenuItem_Click(sender As Object, e As EventArgs)
- Teams_anlegen()
- End Sub
- Private Sub Frm_135_b_teams_anlegen_KeyDown(sender As Object, e As KeyEventArgs) Handles MyBase.KeyDown
- If e.KeyCode = Keys.F9 Then
- Teams_anlegen()
- End If
- End Sub
- Private Sub Teams_anlegen()
- 'Variante A
- 'Übergabe der Parameter an Frm_135_team, Procedure Teams_anlegen
- 'läuft nicht ...
- Frm_135_team_v02.Teams_anlegen(int_sparte:=CInt(cbo_t135_t105_id.SelectedValue),
- int_nation:=CInt(cbo_t135_t100_id.SelectedValue),
- int_tkat:=CInt(cbo_t135_t134_id.SelectedValue),
- dat_von:=dtp_t135_von.Value,
- dat_bis:=dtp_t135_bis.Value,
- str_bezeichnung:=txt_t135_name_team.Text,
- int_anzahl:=CInt(txt_anzahl.Text))
- 'Variante B
- 'keine Fehlermeldung, aber auch keine sichtbaren neuen Datensätze, wahrscheinlich ein anderes Dataset?
- ' For i = 1 To CInt(txt_anzahl.Text)
- ' 'Struktur der Zeile
- ' Dim rwTeam = Ds_135_team_oTA.t135_team.Newt135_teamRow
- ' rwTeam.t135_t105_id = CInt(cbo_t135_t105_id.SelectedValue)
- ' rwTeam.t135_t100_id = CInt(cbo_t135_t100_id.SelectedValue)
- ' rwTeam.t135_suchname_team = txt_t135_name_team.Text & " " & Convert.ToString(i).PadLeft(2, CChar("0"))
- ' rwTeam.t135_name_team = rwTeam.t135_suchname_team
- ' rwTeam.t135_t134_id = CInt(cbo_t135_t134_id.SelectedValue)
- ' rwTeam.t135_von = dtp_t135_von.Value.Date
- ' rwTeam.t135_bis = dtp_t135_bis.Value.Date
- ' rwTeam.t135_gueltig_jn = CBool(1)
- ' rwTeam.t135_rf_blockstart_ezf_order = 1
- ' rwTeam.t135_kurz3 = Nothing
- ' rwTeam.t135_rf_email_leiter_team = Nothing
- ' rwTeam.t135_rf_name_leiter_team = Nothing
- ' rwTeam.t135_rf_tel_leiter_team = Nothing
- ' 'Zeile der DataTable hinzufügen
- ' Ds_135_team_oTA.t135_team.Rows.Add(rwTeam)
- ' Next
- Me.Close()
- End Sub
- Private Sub Btn_ok_Click(sender As Object, e As EventArgs) Handles btn_ok.Click
- Teams_anlegen()
- End Sub
- Private Sub Btn_cancel_Click(sender As Object, e As EventArgs) Handles btn_cancel.Click
- Me.Close()
- End Sub
- End Class
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RadlerMEV“ ()