【发布时间】:2015-12-13 21:27:07
【问题描述】:
每次从数据库读取时,我似乎都找不到这个错误。错误显示,但我的程序仍然正常运行,这很奇怪。我尝试过使用断点,但在表单加载事件之前弹出错误。这是我的代码。
Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
fileID = 0
If e.RowIndex >= 0 Then
Dim row As New DataGridViewRow
row = Me.DataGridView1.Rows(e.RowIndex)
fileID = row.Cells("ID").Value.ToString
KUP_DATABASE_REPORT.ShowDialog() 'Error pop out on this line
End If
End Sub
上面的代码来自主窗体。当我单击单元格时,一个新表单将显示数据库中的所有数据。下面的代码是第二种形式,它从中提取数据并填充空文本框等。
通过使用断点,致命错误发生在KUP_DATABASE_REPORT.ShowDialog()这一行
Private Sub KUP_DATABASE_REPORT_Load(sender As Object, e As EventArgs) Handles MyBase.Load
DateTimePicker1.MinDate = DateTime.Now()
DateTimePicker1.CustomFormat = "dddd dd MMMM yyyy"
NumericUpDown1.ResetText()
NumericUpDown2.ResetText()
LoadFileDataFromRead()
End Sub
Private Sub LoadFileDataFromRead()
Try
Connect2Database()
theID = New Integer = 0
theID = KUP_DATABASE_READ.fileID
myCommand.CommandText = "Select * from kup_table Where ID = @theIDD"
myCommand.Parameters.AddWithValue("@theIDD", theID)
reader = myCommand.ExecuteReader()
While reader.Read
'======================FILE INFO=============================
NumericUpDown1.Controls.Item(1).Text = reader.GetInt32("FILE_NO")
NumericUpDown2.Controls.Item(1).Text = reader.GetInt32("FILE_YEAR")
TextBox1.Text = reader.GetString("FILE_TYPE")
TextBox2.Text = reader.GetString("FILE_COLOR")
TextBox3.Text = reader.GetString("FILE_DESC")
'======================LOT INFO==============================
ComboBox1.Text = reader.GetString("DAERAH")
ComboBox2.Text = reader.GetString("MUKIM")
ComboBox3.Text = reader.GetString("SEKSYEN")
TextBox4.Text = reader.GetString("LOT")
ComboBox4.Text = reader.GetString("LOT_INFO")
TextBox5.Text = reader.GetString("TITLE_NO")
'======================CLIENT INFO===========================
TextBox6.Text = reader.GetString("NAME")
TextBox7.Text = reader.GetString("ADDR")
TextBox8.Text = reader.GetString("ADDR2")
TextBox9.Text = reader.GetString("TEL_NUM")
TextBox10.Text = reader.GetString("FAX_NUM")
'======================STATUS================================
RichTextBox1.Text = reader.GetString("STATUS")
'======================LEVEL/PROCESS=========================
If reader.GetInt32("TECH_DEPT") = 0 Then
CheckBox1.Checked = False
Else
CheckBox1.Checked = True
End If
If reader.GetInt32("T_JKR") = 0 Then
CheckBox8.Checked = False
Else
CheckBox8.Checked = True
End If
If reader.GetInt32("T_JPS") = 0 Then
CheckBox9.Checked = False
Else
CheckBox9.Checked = True
End If
If reader.GetInt32("T_BKSA") = 0 Then
CheckBox10.Checked = False
Else
CheckBox10.Checked = True
End If
If reader.GetInt32("T_JAS") = 0 Then
CheckBox11.Checked = False
Else
CheckBox11.Checked = True
End If
If reader.GetInt32("T_PERTANIAN") = 0 Then
CheckBox12.Checked = False
Else
CheckBox12.Checked = True
End If
If reader.GetInt32("T_MAJLIS") = 0 Then
CheckBox13.Checked = False
Else
CheckBox13.Checked = True
End If
If reader.GetInt32("T_JPBD") = 0 Then
CheckBox14.Checked = False
Else
CheckBox14.Checked = True
End If
If reader.GetInt32("T_KESIHATAN") = 0 Then
CheckBox15.Checked = False
Else
CheckBox15.Checked = True
End If
If reader.GetInt32("T_OTHERS") = 0 Then
CheckBox16.Checked = False
TextBox11.ResetText()
TextBox11.Enabled = False
Else
CheckBox16.Checked = True
TextBox11.Enabled = True
TextBox11.Text = reader.GetString("T_OTHERS_TXT")
End If
'===========================DONE TECH DEPARTMENT====================
If reader.GetInt32("PEJABAT_TANAH") = 0 Then
CheckBox2.Checked = False
Else
CheckBox2.Checked = True
End If
If reader.GetInt32("ULASAN_YB") = 0 Then
CheckBox3.Checked = False
Else
CheckBox3.Checked = True
End If
If reader.GetInt32("JKBB_APPROVED") = 0 Then
CheckBox4.Checked = False
Else
CheckBox4.Checked = True
End If
If reader.GetInt32("LAYOUT_ENDOSED") = 0 Then
CheckBox5.Checked = False
Else
CheckBox5.Checked = True
End If
If reader.GetInt32("5A_NOTICE") = 0 Then
CheckBox6.Checked = False
Else
CheckBox6.Checked = True
End If
If reader.GetInt32("QT_ISSURANCE") = 0 Then
CheckBox7.Checked = False
Else
CheckBox7.Checked = True
End If
'====================CHECKBOX DONE NOW IS THE TEXT=================
TextBox12.Text = reader.GetString("TECH_DEPT_TXT")
TextBox13.Text = reader.GetString("PEJABAT_TANAH_TXT")
TextBox14.Text = reader.GetString("ULASAN_YB_TXT")
TextBox15.Text = reader.GetString("JKBB_APPROVED_TXT")
TextBox16.Text = reader.GetString("LAYOUT_ENDOSED_TXT")
TextBox17.Text = reader.GetString("5A_NOTICE_TXT")
TextBox18.Text = reader.GetString("QT_ISSURANCE_TXT")
If reader.GetString("REMINDER_STATUS") Then
RadioButton1.Checked = True
Else
RadioButton2.Checked = True
End If
End While
reader.Dispose()
sqlConn.Close()
Catch ex As MySqlException
MsgBox(ex.ToString)
If sqlConn.State = ConnectionState.Open Then
sqlConn.Close()
End If
Finally
sqlConn.Dispose()
End Try
End Sub
更新 我通过慢慢剥离大部分代码找到了罪魁祸首。错误就在这个事件上。
Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton2.CheckedChanged
If RadioButton2.Checked Then
Connect2Database()
Try
myCommand.CommandText = "Update kup_table SET REMINDER_STATUS = 0 Where ID = @theIDD"
myCommand.ExecuteNonQuery()
sqlConn.Close()
MsgBox("The reminder has been switched off successfully.", MsgBoxStyle.Information)
Catch ex As MySqlException
MsgBox(ex.Message)
Finally
sqlConn.Dispose()
End Try
End If
End Sub
我不确定为什么它会给出致命错误,但是当我将此事件注释掉时,它不再显示任何致命错误。如果有人知道答案,请发一个,以便我标记谢谢
【问题讨论】:
-
这可能与使用默认表单实例有关。看不到
theId的声明位置,但theID = New Integer = 0并没有按照你的想法做,我有点惊讶它编译了 -
@Plutonix 很抱歉不够清楚。 theID 在表单顶部声明为 Dim theID as Integer
-
如果断点没有停止意味着..??您能否尝试删除 .pdb - 便携式调试器并重建解决方案。
-
@goofyui 我编辑了问题详细信息以使其更加清晰。我在哪里可以找到 pdb 文件?我似乎在项目文件夹中找不到它
-
应该是 projectname.pdb 和 projectname.sln 一样
标签: mysql vb.net command visual-studio-2015 fatal-error