DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

Forum: VB.NET | Thema: AW: AW: DataGridView Fehler abfangen | Von: M Merlin ( 01.08.2007 00:05)

Hallo, danke das du für mein Problem Interesse zeigst...
Ich habe mir notdürftig geholfen ( siehe MouseDown des Gird )... Villeicht hast du eine bessere Lösung... würde mich über eine Antwort freuen...

Hier der Code... Ich hoffe du kannst da was mit anfangen...

Private Function FillGrid(ByRef DataCount As Integer) As Boolean
Dim Cnn As New SqlConnection(PstrConnString)
Dim ErrMsg As String = String.Empty

With Me
.ToolStripStatusLabel.Text = "Öffne Datenbank..."
.Refresh()
End With

If OpenDB(Cnn, ErrMsg, 3) = False Then
Windows.Forms.Cursor.Current = Cursors.Default
Me.ToolStripStatusLabel.Text = String.Empty
ErrMsg = "Datenbankfehler: " & vbCrLf & ErrMsg
Return False
End If
With Me
.ToolStripStatusLabel.Text = "Fülle Tabelle mit Werten..."
.Refresh()
End With

Try
dsData.Reset()
daData = New SqlDataAdapter(strCmdString, Cnn)
daData.Fill(dsData, "MyData")
daData.MissingSchemaAction = MissingSchemaAction.AddWithKey

dtData = dsData.Tables("MyData")

DataCount = dtData.Rows.Count

With Me.MyDtGrdView
.DataBindings.Clear()
.DataSource = Nothing
.DataSource = dsData.Tables("MyData")
End With

Catch ex As Exception

Finally
Cnn.Close()
Cnn.Dispose()
End Try

Me.ToolStripStatusLabel.Text = String.Empty
If DataCount < 1 Then Return False Else Return True
End Function

Private Sub ExtendGrid(ByVal CountData As Integer)
If CountData <= MaxRow Then
With Me
.MyDtGrdView.Height = CountData * HeighGridRow + MyHeightGrid '42 '24 Blaue Kopfzeile
.Height = MyHeight + CountData * HeighGridRow
.Top = MyTop - CInt((CountData * HeighGridRow / 2))
'FormatGrid(False)
End With
Else
With Me
.MyDtGrdView.Height = MyHeightGrid + MaxRow * HeighGridRow
.Height = MyHeight + MaxRow * HeighGridRow
.Top = MyTop - CInt((MaxRow * HeighGridRow / 2))
'FormatGrid(True)
End With
End If
End Sub

Private Sub FormatGrid()
'Private Sub FormatGrid(ByVal blnMaxRow As Boolean)
With Me.MyDtGrdView
.MultiSelect = False
.ScrollBars = ScrollBars.Vertical
'.ReadOnly=False
.AllowUserToAddRows = False
.AllowUserToDeleteRows = False
.AllowUserToOrderColumns = True

.RowHeadersVisible = True
.RowHeadersWidth = 40 'Darf nicht keiner sein, da sonst der Errortext nicht angezeigt wird
.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
.AllowUserToResizeRows = False

.ColumnHeadersHeight = 24
.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing

.AlternatingRowsDefaultCellStyle.BackColor = Color.LightSteelBlue
.RowTemplate.Height = HeighGridRow

'.ColumnHeadersDefaultCellStyle.NullValue = String.Empty
Try
.Columns("MyID").Visible = False
Catch ex As Exception
MsgBox("Fehler in der Tabellenformatierung !", MsgBoxStyle.Critical, "DataGridView")
Err.Clear()
blnMyClose = False
If frmMainMenu.Visible = True Then frmMainMenu.Close()
Me.Close()
Exit Sub
End Try

.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
'.AllowUserToResizeColumns = False

With .Columns("Nummer")
.Width = .Width - 80
End With
End With
End Sub


Private Sub MyDtGrdView_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyDtGrdView.MouseDown
Dim MyGrid As DataGridView = CType(sender, DataGridView)
Dim HitTest As DataGridView.HitTestInfo

blnRowHeaderGridClick = False
If e.Button = Windows.Forms.MouseButtons.Left Then
HitTest = MyGrid.HitTest(e.Location.X, e.Location.Y)
If HitTest.Type = DataGridViewHitTestType.RowHeader Then
blnRowHeaderGridClick = True
End If
End If
End Sub

Private Sub dtData_ColumnChanging(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles dtData.ColumnChanging
If Me.MyDtGrdView.CurrentCell.IsInEditMode = False Then Return
e.Row.ClearErrors()

Select Case e.Column.ColumnName
Case "Nummer"
If IsNothing(e.ProposedValue) Then
e.Row.RowError = "Farbnummer eingegeben werden !"
Return
ElseIf Not e.ProposedValue.ToString.Length = 8 Then
e.Row.RowError = "Nummer muss 8 Zeichen haben !"
Return
End If
Dim ColorNo As Long
Dim Result As Boolean
Result = Long.TryParse(e.ProposedValue.ToString.ToString, ColorNo)

If Result = False Then
e.Row.RowError = e.ProposedValue.ToString.ToString & "Nummer muss eine Zahl sein !"
Return
End If
Case "Text"
If IsNothing(e.ProposedValue) Then
e.Row.RowError = "Text muss eingegeben werden !"
Return
ElseIf e.ProposedValue.ToString.Length > 50 Then
e.Row.RowError = "Text darf maximal 50 Zeichen haben !"
Return
End If
Case Else
Throw New ArgumentException("Unbekannte Auswahl", MySelectedForm.ToString)
Return
End Select
e.Row.BeginEdit()
End Sub

Private Sub dtData_ColumnChanged(ByVal sender As Object, ByVal e As System.Data.DataColumnChangeEventArgs) Handles dtData.ColumnChanged
e.Row.EndEdit()
UpdateGrid()
End Sub

Private Sub UpdateGrid()
If dsData.HasErrors = True Then
blnRowHeaderGridClick = False
Exit Sub
End If

If dsData.HasChanges = True Then
If blnRowHeaderGridClick = True Then
With Me.MyDtGrdView
.ClearSelection()
.CancelEdit()
End With
dtData.RejectChanges()
blnRowHeaderGridClick = False
MsgBox("Nach Datenänderung darf nicht auf den Zeilenkopf geklickt werden !" & vbCrLf & "Datenänderung bitte nochmals eingeben...", MsgBoxStyle.Critical, "Speichern")
Exit Sub
End If
Windows.Forms.Cursor.Current = Cursors.WaitCursor

PintPGB = 0
With Me
.ToolStripStatusLabel.Text = "Speichere Daten..."
.Refresh()
End With

PintPGB += 10
With Me.ToolStripProgressBar
.Maximum = 80
.Value = PintPGB
.Visible = True
End With

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

Try
Me.MyDtGrdView.EndEdit()
Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Critical, "UpdateGrid")
Exit Sub
End Try

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

Dim cnn As New SqlConnection(PstrConnString)
Dim daNewData As New SqlDataAdapter(strCmdString, cnn)
Dim cmdBldr As New SqlCommandBuilder(daNewData)

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

Try
If cnn.State = ConnectionState.Closed Then cnn.Open()
Catch ex As SqlException
Windows.Forms.Cursor.Current = Cursors.Default
cnn.Close()
cnn.Dispose()
MsgBox(ex.Message)
Exit Sub
End Try

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

Try
daNewData.Update(dtData.GetChanges)

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

Catch ex As SqlException
Windows.Forms.Cursor.Current = Cursors.Default
MsgBox(ex.Message, MsgBoxStyle.Critical, "UpdateGrid")
Me.MyDtGrdView.Refresh()
Catch ex As System.Data.DBConcurrencyException
Windows.Forms.Cursor.Current = Cursors.Default
MsgBox(ex.Message & vbCrLf & "Evtl. wurde der Datensatz zur selben Zeit durch eine andere Person geändert !", MsgBoxStyle.Critical, "UpdateGrid")
Me.MyDtGrdView.Refresh()
Catch ex As Exception
Windows.Forms.Cursor.Current = Cursors.Default
MsgBox(ex.Message, MsgBoxStyle.Critical, "UpdateGrid")
Me.MyDtGrdView.Refresh()
Finally

PintPGB += 10
Me.ToolStripProgressBar.Value = PintPGB

If Not IsNothing(cmdBldr) Then cmdBldr.Dispose()
If cnn.State = ConnectionState.Open Then cnn.Close()
cnn.Dispose()

Dim intCountData As Integer = 0
FillGrid(intCountData)
FormatGrid()

PintPGB += 10
With Me
With .ToolStripProgressBar
.Value = PintPGB
.Value = 0
.Visible = False
End With
.ToolStripStatusLabel.Text = String.Empty
End With

Windows.Forms.Cursor.Current = Cursors.Default

If dsData.Tables("MyData").Rows.Count <> intCountData Then
MsgBox("Fehler: CountError", MsgBoxStyle.Critical, "UpdateGrid")
End If
End Try
End If
End Sub




Betreff Von Datum
AW: AW: AW: DataGridView Fehler abfangen
Hi,<br><br>also ich kann machen was ich will. Ich krieg den Fehler nicht nachgebaut. Schau Dir den Stack Trace der Fehlermeldung genau an. Da steht dann auch in welcher Codezeile der Fehler genau geworfen...
Thomas Hauser 01.08.2007 01:53
AW: AW: AW: AW: DataGridView Fehler abfangen
Hallo,<br>ich hab noch vergessen, nach dem ich das Update fahre, Refreshe ich das Grid, um evtl. weitere Änderungen durch andere User, mit zu übernehmen (anzuzeigen)...<br>Das mache ich dann wie...
M Merlin 01.08.2007 08:47
AW: AW: AW: DataGridView Fehler abfangen
Hallo,<br><br>ich würde an dieser Stelle gerne sagen, was das Problem ist. Aber ich müsste definitiv das ganze Projekt nachbauen, um den Fehler nachvollziehen zu können. Hat das auch sicher was mit dem...
Thomas Hauser 01.08.2007 10:41
AW: AW: AW: AW: DataGridView Fehler abfangen
Gibt es hier die Möglichkeit ein kleines Zip-File hochzuladen?<br>Wie?<br>Dann könnte ich mal nen Beispiel posten...
M Merlin 01.08.2007 15:13
AW: AW: AW: AW: AW: DataGridView Fehler abfangen
http://www.rapidshare.com/ oder sonstige one klick hoster ...
Bernhard Grojer 01.08.2007 15:30
AW: AW: AW: AW: DataGridView Fehler abfangen
Hallo,<br>ich habe ein Zip-File als Anhang mit einem kleinen Beispielprojekt.<br><br>Es wir dazu eine SQL-Server Datenbank mit dem Namen Testen benötigt.<br><br>Hier der SQL-Skript für die Tabelle Test:<br><br>if...
M Merlin 02.08.2007 09:52
AW: AW: AW: AW: AW: DataGridView Fehler abfangen
Hallo noch Mal,<br>kann den Fehler auch niemand lokalisieren oder hat sich noch niemand des Problems angenommen....?<br>
M Merlin 05.08.2007 22:57
AW: AW: AW: AW: AW: AW: DataGridView Fehler...
Hallo,<br><br>also ich habe mir ja echt die Arbeit gemacht und das Projekt durchgeschaut. Ich komm nicht auf den Fehler. Laut Stack Trace kommt der Fehler aus dem Steuerelement. Aber dann müsste das in...
Thomas Hauser 08.08.2007 18:03
AW: AW: AW: AW: AW: AW: AW: DataGridView...
Danke erst Mal für deine Mühe....<br><br>Wenn ich Mal etwas mher Zeit habe muss ich da dann doch wohl man ran und das alles umschreiben....<br><br>Jetzt habe ich mir erst Mal damit geholfen, dass ich den...
M Merlin 09.08.2007 14:26

Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Building und Connecting Know-how

© Copyright 2003 ppedv AG