Hallo Community,
Ich stehe wieder vor einem Problem und diesmal verstehe ich auch den Grund nicht. Ich habe einen DatagridViewer der auch wunderbar mit den Daten aus einer MDB Datein gefuellt wird. Nun moechte ich mit allerdings im Programm nach dem Status filtern. Das funktioniert prinzipiell auch. Allerdings erhalte ich folgende Fehlermeldung wenn ein Spalte mit leeren Datum im sichbaren Bereich des DataViewer ist.
"Der Wert für Spalte Date_Arrived in Tabelle DocManagment ist DBNull."
Ich habe fuer diesen Fehler bereits etlich Threads gefunden doch habe ich kein Loesung gefunden die ich bei mir auch umsetzen konnte. Ausserdem verstehe ich nicht was an meiner Abfrage anders ist als an der Erstabfrage(Ok, ich filtere im DataSet und stelle keine neue Abfrage aber dies hat ja nicht mit dem fuellen zu tun,oder?) ? Denn vor dem filtern scheint der Viewer ueberhaupt kein Problem mit leeren Date Feldern zu haben.
Hier der Code in dem dieser Fehler passiert. Dieser Coder stammt nicht von mir sondern wird anscheined vom Dataset(?) generiert
Hier noch mein Code
Spoiler anzeigen
Fuer Hilfe waehre ich sehr dankbar!
Mit freundlichen Gruessen
HolyAbsolut
Ich stehe wieder vor einem Problem und diesmal verstehe ich auch den Grund nicht. Ich habe einen DatagridViewer der auch wunderbar mit den Daten aus einer MDB Datein gefuellt wird. Nun moechte ich mit allerdings im Programm nach dem Status filtern. Das funktioniert prinzipiell auch. Allerdings erhalte ich folgende Fehlermeldung wenn ein Spalte mit leeren Datum im sichbaren Bereich des DataViewer ist.
"Der Wert für Spalte Date_Arrived in Tabelle DocManagment ist DBNull."
Ich habe fuer diesen Fehler bereits etlich Threads gefunden doch habe ich kein Loesung gefunden die ich bei mir auch umsetzen konnte. Ausserdem verstehe ich nicht was an meiner Abfrage anders ist als an der Erstabfrage(Ok, ich filtere im DataSet und stelle keine neue Abfrage aber dies hat ja nicht mit dem fuellen zu tun,oder?) ? Denn vor dem filtern scheint der Viewer ueberhaupt kein Problem mit leeren Date Feldern zu haben.
Hier der Code in dem dieser Fehler passiert. Dieser Coder stammt nicht von mir sondern wird anscheined vom Dataset(?) generiert
VB.NET-Quellcode
- <Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
- Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Data.Design.TypedDataSetGenerator", "4.0.0.0")> _
- Public Property Date_Arrived() As Date
- Get
- Try
- Return CType(Me(Me.tableDocManagment.Date_ArrivedColumn),Date)
- Catch e As Global.System.InvalidCastException
- Throw New Global.System.Data.StrongTypingException("Der Wert für Spalte Date_Arrived in Tabelle DocManagment ist DBNull.", e)
- End Try
- End Get
- Set
- Me(Me.tableDocManagment.Date_ArrivedColumn) = value
- End Set
- End Property
Hier noch mein Code
VB.NET-Quellcode
- 'Vor Release noch Directory Aendern!!
- Imports System.Data.OleDb
- Public Class StandartView
- Public ID As String
- Public Status As String
- 'User Settings & DataSet Load
- Private Sub StandartView_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- Me.DocManagmentTableAdapter.Fill(Me.Document_ExchangeDataSet.DocManagment)
- If My.Settings.User = "" Then
- User.Show()
- Me.Opacity = 0 ' Me.Hide funktioniert nicht wenn ich das beim laden (MyBase.Load) versuche.
- End If
- End Sub
- 'Close Program
- Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles btnClose.Click
- DocManagmentTableAdapter.Update(Document_ExchangeDataSet) 'Der FUNZT....seltsam
- Me.Close()
- End Sub
- 'Open Windows Multi arrived
- Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles btnMulti.Click
- Me.Hide()
- Multiple_Arrived.Show()
- End Sub
- 'TaskBox
- Private Sub ListBox1_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles Taskbox.SelectedIndexChanged
- Select Case True ' Das Feld Reason soll nur eingeblendet werden wenn er auch zuruck gesendet wird
- Case Taskbox.Text Is "Return"
- cmdReason.Visible = True
- Case Taskbox.Text Is "Edit"
- Enable()
- Case Else
- Disable()
- cmdReason.Visible = False
- End Select
- End Sub
- 'SelectFile
- Private Sub OpenFileDialog1_FileOk(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
- Dim strm As System.IO.Stream = OpenFileDialog1.OpenFile()
- If Not (strm Is Nothing) Then
- 'DER(KOPIERPROZESS)
- Dim FileToCopy As String = OpenFileDialog1.FileName.ToString()
- Dim NewFile As String = "C:\Users\mnbraun\Desktop\Fisch\HELLO.txt"
- Dim dd As Integer = 3
- Dim T As String = MonthName(dd)
- 'Dim FinnishDateFormat As Date = New CultureInfo("fi", False).DateTimeFormat
- 'Dim FinnishMonths As String() = FinnishDateFormat.MonthName
- System.IO.Directory.CreateDirectory("C:\Users\mnbraun\Desktop\" & T & "\")
- 'System.IO.File.Copy(FileToCopy, NewFile)
- strm.Close()
- End If
- End Sub
- 'Tableadapter
- Private Sub DocManagmentBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs)
- Me.Validate()
- Me.DocManagmentBindingSource.EndEdit()
- Me.TableAdapterManager.UpdateAll(Me.Document_ExchangeDataSet)
- End Sub
- 'Doppelklick to Edit
- Private Sub Dataviewer_CellDoubleClick(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles Dataviewer.CellDoubleClick
- txtID.Text = Dataviewer.CurrentRow.Cells(1).Value.ToString
- End Sub
- Private Sub DBRefresh()
- Dataviewer.DataSource = 0
- Dataviewer.DataSource = Document_ExchangeDataSet.Tables(0).DefaultView
- End Sub
- Private Sub Clear()
- txtShipper.Clear()
- txtDocname.Clear()
- txtType.Text = ""
- txtReason.Text = ""
- cmdDocDate.Value = Date.Now
- cmdReason.Clear()
- Taskbox.Items.Clear()
- End Sub
- Private Sub Disable()
- cmdDocDate.Enabled = False
- txtShipper.Enabled = False
- txtDocname.Enabled = False
- txtType.Enabled = False
- End Sub
- Private Sub Enable()
- cmdDocDate.Enabled = True
- txtShipper.Enabled = True
- txtDocname.Enabled = True
- txtType.Enabled = True
- End Sub
- 'ID Feld Pruefen ob Sendung existiert
- Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles txtID.TextChanged
- Dim al As New List(Of DataRow)
- If txtID.Text <> "" Then
- For Each te As DataRow In Document_ExchangeDataSet.Tables(0).Select("Doc_No='" & txtID.Text & "'", "ID DESC")
- al.Add(te)
- Next
- If al.Any = True Then
- Status = al(0).Item("Status").ToString()
- ID = al(0).Item("ID").ToString()
- txtShipper.Text = al(0).Item("Sender").ToString()
- txtDocname.Text = al(0).Item("Doc_Name").ToString()
- txtType.Text = al(0).Item("Doc_Type").ToString()
- txtReason.Text = al(0).Item("To_Manager").ToString()
- cmdDocDate.Value = Date.Parse(al(0).Item("Date_Create").ToString(), System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"))
- cmdReason.Text = al(0).Item("Reason_Returned").ToString()
- Taskbox.Items.Clear()
- Select Case True
- Case Status = "Sent"
- Disable()
- Taskbox.Items.Add("Arrived")
- Taskbox.Items.Add("Return")
- Taskbox.Items.Add("Edit")
- Case Status = "Arrived"
- Disable()
- Taskbox.Items.Add("Return")
- Taskbox.Items.Add("Edit")
- Case Status = "Returned"
- Disable()
- Taskbox.Items.Add("Arrived")
- Taskbox.Items.Add("Edit")
- Case Status = "Remaining"
- Disable()
- Taskbox.Items.Add("Sent")
- Taskbox.Items.Add("Edit")
- Case Else
- Disable()
- Taskbox.Items.Add("Error")
- 'Taskbox.Items.Add("New Doc & Sent")
- End Select
- Else
- Clear()
- Enable()
- Taskbox.Items.Add("New Doc")
- Taskbox.Items.Add("New Doc & Sent")
- End If
- End If
- End Sub
- 'DER Ok Knopf
- Private Sub btnOk_Click(sender As System.Object, e As System.EventArgs) Handles btnOk.Click
- Select Case True
- Case Taskbox.Text = "New Doc"
- 'OpenFileDialog1.Title = "Please Select Document"
- 'OpenFileDialog1.InitialDirectory = "C:temp"
- 'OpenFileDialog1.ShowDialog()
- Dim dsNewRow As DataRow
- dsNewRow = Document_ExchangeDataSet.Tables(0).NewRow()
- dsNewRow.Item("Date_Create") = Date.Now
- dsNewRow.Item("Status") = "Remaining"
- dsNewRow.Item("Doc_No") = txtID.Text
- dsNewRow.Item("Date_Doc") = cmdDocDate.Value
- dsNewRow.Item("Sender") = txtShipper.Text
- dsNewRow.Item("Doc_Name") = txtDocname.Text
- dsNewRow.Item("Doc_Type") = txtType.Text
- dsNewRow.Item("To_Manager") = txtReason.Text
- dsNewRow.Item("Last_Location") = My.Settings.Location
- dsNewRow.Item("Last_User") = My.Settings.User
- Document_ExchangeDataSet.Tables(0).Rows.Add(dsNewRow)
- Case Taskbox.Text = "New Doc & Sent"
- Dim dsNewRow As DataRow
- dsNewRow = Document_ExchangeDataSet.Tables(0).NewRow()
- dsNewRow.Item("Date_Create") = Date.Now
- dsNewRow.Item("Status") = "Sent"
- dsNewRow.Item("Date_Sent") = Date.Now
- dsNewRow.Item("Doc_No") = txtID.Text
- dsNewRow.Item("Date_Doc") = cmdDocDate.Value
- dsNewRow.Item("Sender") = txtShipper.Text
- dsNewRow.Item("Doc_Name") = txtDocname.Text
- dsNewRow.Item("Doc_Type") = txtType.Text
- dsNewRow.Item("To_Manager") = txtReason.Text
- dsNewRow.Item("Last_Location") = My.Settings.Location
- dsNewRow.Item("Last_User") = My.Settings.User
- Document_ExchangeDataSet.Tables(0).Rows.Add(dsNewRow)
- Case Taskbox.Text = "Sent"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Status") = "Sent"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Sent") = Date.Now
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("To_Manager") = txtReason.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_Location") = My.Settings.Location
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_User") = My.Settings.User
- Case Taskbox.Text = "Arrived"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Status") = "Arrived"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Arrived") = Date.Now
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("To_Manager") = txtReason.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_Location") = My.Settings.Location
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_User") = My.Settings.User
- Case Taskbox.Text = "Edit"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Doc") = cmdDocDate.Value
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Sender") = txtShipper.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Doc_Name") = txtDocname.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Doc_Type") = txtType.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Edit") = Date.Now
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("To_Manager") = txtReason.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_Location") = My.Settings.Location
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_User") = My.Settings.User
- Case Taskbox.Text = "Return"
- If Status = "Sent" Then
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Arrived") = Date.Now
- End If
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Status") = "Return"
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Date_Returned") = Date.Now
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Reason_Returned") = cmdReason.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("To_Manager") = txtReason.Text
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_Location") = My.Settings.Location
- Document_ExchangeDataSet.Tables(0).Rows.Find(ID).Item("Last_User") = My.Settings.User
- Dim dsNewRow As DataRow 'Nun wird die Sendung erneut erstellt
- dsNewRow = Document_ExchangeDataSet.Tables(0).NewRow()
- dsNewRow.Item("Date_Create") = Date.Now
- dsNewRow.Item("Status") = "Sent"
- dsNewRow.Item("Doc_No") = txtID.Text
- dsNewRow.Item("Date_Doc") = cmdDocDate.Value
- dsNewRow.Item("Sender") = txtShipper.Text
- dsNewRow.Item("Doc_Name") = txtDocname.Text
- dsNewRow.Item("Doc_Type") = txtType.Text
- dsNewRow.Item("Date_Sent") = Date.Now
- dsNewRow.Item("To_Manager") = txtReason.Text
- dsNewRow.Item("Last_Location") = My.Settings.Location
- dsNewRow.Item("Last_User") = My.Settings.User
- Document_ExchangeDataSet.Tables(0).Rows.Add(dsNewRow)
- Case Else
- MsgBox("Please select an Task")
- GoTo Skipmarke 'Vieleicht ueberpruefen. Die Communtiy ist nicht begeistert
- End Select
- DBRefresh()
- txtID.Text = "" 'Alles auf Null setzten
- Clear()
- txtID.Focus()
- btnClose.Text = "Save & Close"
- SkipMarke:
- End Sub
- Private Sub ToolStripComboBox1_TextChanged(sender As Object, e As System.EventArgs) Handles txtFilterStatus.TextChanged
- Dataviewer.DataSource = 0
- Dataviewer.DataSource = Document_ExchangeDataSet.Tables(0).Select("Status='" & txtFilterStatus.Text & "'", "ID DESC")
- End Sub
- End Class
Fuer Hilfe waehre ich sehr dankbar!
Mit freundlichen Gruessen
HolyAbsolut