2015-12-13 2 views
0

Я не могу найти эту ошибку, указанную каждый раз, когда я читаю из базы данных. Ошибка показывает, но моя программа все еще работает нормально, что странно. Я попытался использовать точки останова, но ошибка выскочила перед событием загрузки формы. Вот мой код.Неустранимая ошибка при выполнении команды

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 

UPDATE Я нашел виновника по медленно снимая большую часть кодов. И ошибка была на этом событии.

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 

Я не знаю, почему он дает роковую ошибку, но когда я прокомментировал это событие, оно не показывает каких-либо фатальную ошибку больше. Если кто-либо из вас знает ответ, отправьте его, чтобы я мог отметить спасибо

+0

Возможно, это связано с использованием экземпляров формы по умолчанию. Cant видит, где объявлен 'theId', но' theID = New Integer = 0' не делает то, что вы так думаете. Я удивлен, что он компилирует – Plutonix

+0

@Plutonix Извините, что недостаточно ясна. ID объявляется в верхней части формы как Dim idID как Integer – Student

+0

Если точка останова doesnt stop означает .. ?? Не могли бы вы попытаться удалить .pdb - переносимый отладчик и перестроить решение. – goofyui

ответ

0

Извините за глупый вопрос здесь. Я узнал, почему. Это потому, что я не параметризируюсь запрос еще до выполнения ...

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 

Действительно жаль, и спасибо за те, которые пытались помочь. Я пропустил эту ОДНУЮ линию.

myCommand.Parameters.AddWithValue("@theIDD", theID) 
+0

Ах, вы уже нашли проблему - я только что написал комментарий об этом –