Announcement

Collapse
No announcement yet.

getchanges errorprovider

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • getchanges errorprovider

    Hallo alle zusammen,

    ich habe ein kleines Speicherproblem.
    Also ich arbeite mit bindingsource (BS) und Tableadapter.

    Code:
        Dim cmb As DbCommandBuilder = New SqlCommandBuilder
            cmb.DataAdapter = Me.MyTable.Adapter
            Me.MyTable.Connection = con
            Me.MyTable.Fill(Me.MyDataset.MyTable)
    Meine Speicherprozedur ist auch trivial.

    Code:
    Me.BS.EndEdit()
            Dim dt1 As DataTable = Me.MyDataset.MyTable.GetChanges
            Try
                If dt1 IsNot Nothing Then
                    If save_flag = 1 Then
                        antwort = MsgBox("Wollen Sie die Änderungen speichern?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "Sicherheitsabfrage")
                    Else
                        antwort = MsgBoxResult.Yes
                    End If
                    If antwort = MsgBoxResult.Yes Then
                        Me.MyTable.Connection = con
                        Me.MyTable.Update(MyDataset)
                        'Me.MyTDataset.AcceptChanges()
                    Else
                        Me.MyDataset.RejectChanges()
                    End If
                    Return True
                End If
                save_detail = True
            
            Catch ex As Exception
                MsgBox("Fehler: " & Err.Number & " " & Err.Description, MsgBoxStyle.Critical + MsgBoxStyle.OkOnly, "Kritischer Fehler")
                Me.MyDataset.RejectChanges()
                Return False
            End Try
    Aber nun kommt es. Ich setze in meiner Form einen Errorprovider ein, um numerische Felder zu prüfen.

    Code:
     	 	  Private Function check_number(ByVal indat As Control, Optional ByVal typ As String = "")
            Try
                
                If indat.Text = "" Or indat.Text = String.Empty Then
                    Me.ErrProvider.SetError(indat, "")
                    
                    Exit Function
                End If
                If IsNumeric(indat.Text) = True Then
                    Me.ErrProvider.SetError(indat, "")
                Else
                    Me.ErrProvider.SetError(indat, "Das ist keine gültige Zahl!")
                    
                    Exit Function
                End If
                If InStr(indat.Text, ".") Then
                    Me.ErrProvider.SetError(indat, "Bitte geben Sie Dezimalzahlen mit Komma ein!")
                    indat.Select()
                    
                    Exit Function
                End If
                If typ = "int" And InStr(indat.Text, ",") Then
                    Me.ErrProvider.SetError(indat, "Sie müssen eine ganze Zahl eingeben!")
                    indat.Select()
                    
                    Exit Function
                End If
                Me.ErrProvider.SetError(indat, "")
            Catch ex As Exception
    		Msgbox ("Fehler...")
                End If
            End Try
            
        End Function
    Wenn ich in meiner Maske alle Felder korrekt eingebe oder Sie leer lasse wird mein Datensatz korrekt gespeichert. Dazu muss ich sagen, dass ich die ID immer per Code setze und so auch ein leerer DS nur mit ID gespeichert werden kann.

    Provoziere ich den Errorprovider
    1.->fehlerhafte Eingabe -> Fehler wird angezeigt
    2.Feld =korrekte Eingabe
    3. -> Feld leeren (markieren + Entfernen)
    4. Speichern Datensatz (DS)

    In diesem Fall ist mein dt1 aus Getchanges => nothing. Und somit wird mein DS nicht gespeichert.

    Gehe ich nun auf einen neuen Datensatz (ohne die Maske zu verlassen!) und mache alles fein und gehe dann wieder auf speichern,
    bekomme ich prompt 2 Datensätze geliefert (Eben zusätzlich den eben noch fehlenden DS).

    Hat einer eine Idee? Ich bin echt verzweifelt.

  • #2
    Hallo,

    also ich habe immernoch keine Lösung - ist ein echtes Problem, weil Daten verloren gehen können. Bin ich im falschen Forum oder kann wirklich niemand aus seinen Kenntnissen schöpfen?

    Comment

    Working...
    X