Jou, Zweiter Teil
So, das währs zu den DataSet und Tabellen... Wie gesagt... Bei den Datenfeldern und Tabellen hab ich kräftig abgespeckt. Währen sonst einige Felder und Tabellen mehr.
Das Hauptformular werd ich mal grad so runterreißen. Wenn man das Hauptformular "frm_Master" startet, wird ein TreeView mit den Kunden aufgebaut... Auf jeder Node befindet sich im Tag die KID.
Wenn ich nun auf eine Node Klicke wird ein Eigenschaftenfenster aufgerufen dem auch gleich die KID mitgegeben wird:
[
Dim Newfrm_Detail As New frm_Detail(GetNodeInfo(eNodeInfo.KID))
Newfrm_Detail.ShowDialog()
Newfrm_Detail.Dispose()
/code]
Da man die frm_Detail nicht nur zum ändern sonder auch zum neu hinzufügen von _
Datensätzen verwenden kann, hab ich ne NEW- Sub überladen - und jetzt gehts _
los:
<pre><code>Public Sub New(ByVal KID As Long)
MyBase.New()
InitializeComponent()
Me.FormModus = KID
End Sub
...
Private FormModusValue As Long
Public dv_VerkaufRes As New System.Data.DataView(ds_Master.Tables("Verkauf"))
Public dv_KundenRes As New System.Data.DataView(ds_Master.Tables("Kunden"))
Public Property FormModus() As Long
Get
Return FormModusValue
End Get
Set(ByVal Value As Long)
FormModusValue = Value
If FormModusValue > 0 Then
Dim KID As Long = FormModusValue
'Kunde
dv_KundeRes.RowFilter = "KID = " & KID
If dv_KundeRes.Count > 0 Then
Me.txt_Nachname.DataBindings.Add("text", dv_KundeRes, "Nachname")
End If
'Verkauf
dv_VerkaufRes.RowFilter = "KID = " & KID
If dv_VerkaufRes.Count > 0 Then
Me.txt_ArtNrl.DataBindings.Add("Text", dv_VerkaufRes, "ArtNr")
Me.txt_ArtBez.DataBindings.Add("Text", dv_VerkaufRes, _
"Artikelbezeichnung")
...
End If
End If
End Set
End Property
Private Sub bef_OK_Click(ByVal sender As System.Object, ByVal e As System. _
EventArgs) Handles bef_OK.Click
If Me.FormModus > 0 Then
Dim SQLCmd_Report As New System.Data.SqlClient.SqlCommand()
SQLCmd_Report.CommandText = "Update Kunde Set Nachname = @Nachname Where" & _
"KID = @KID"
SQLCmd_Report.Parameters.Add("@KID", SqlDbType.BigInt, 8, _
"KID").Value=Me.FormModus
SQLCmd_Report.Parameters.Add("@Nachname", SqlDbType.NVarChar, 50, "Report")
If UpdateSqlSrvRows(ds_Master.Tables("Kunde"), SQLCmd_Report, CNSTR_REPORT) _
= False Then
MsgBox("Beim Update der Daten ist ein Fehler aufgetreten", _
MsgBoxStyle.YesNo & MsgBoxStyle.Critical, "Fehler 1")
End If
End If
Me.Close()
End If
End Sub
Public Function UpdateSqlSrvRows(ByVal tbl As SysData.DataTable, ByVal scmd_Upd _
As SDSqlC.SqlCommand, _
ByVal ConnectionString As String) As Boolean
' Funktion um geänderte Daten vom Dataset-Table im SQL-Server zu
' aktualisieren
Dim scn As New SDSqlC.SqlConnection(ConnectionString)
Dim sda As New SDSqlC.SqlDataAdapter()
scmd_Upd.Connection = scn
sda.UpdateCommand = scmd_Upd
Try
sda.Update(tbl)
Console.WriteLine("SQL-Daten des Tables " & tbl.TableName & " wurden" & _
"aktualisiert!")
Return True
Catch ex As Exception
Console.WriteLine(ex.ToString)
Return False
End Try
End Function so, war gar nicht einfach, das so zusammen zu kopieren.
Also wenn ich neue Datensätze über frm_Details hinzufüge (den teil hab ich herausgenommen) funktionierts - die neuen Datensätze sind auf dem SQL- Server. Wenn ich aber Datensätze ändere sind die auf dem SQL- Server nicht aktuallisiert, obwohl die Daten so wie ich sie in der frm_Detail geändert habe beim debuggen in den DataTables stehen ----- Verzweiflung
Gruß |