对工作中的现有Windows Form应用程序进行故障排除。按下“添加分析物”按钮时,应该出现5行并且确实如此(有时,这是另一个错误)。当您选择其他分析物并再次单击“添加分析物”时,应该会出现另外5行。发生的情况是,将出现前一行分析物的另一行,第二行分析物的6行。
我已经尝试了很多事情-弄乱了添加行的For循环,并确保DataGridView.AllowUserToEdit为FALSE。我已经多次运行调试器,这是行数从5到12之后的代码。
Private Sub FillerUpToolStripButton_Click(sender As Object, e As EventArgs) Handles FillerUpToolStripButton.Click
Try
Me.TblQCResultsTableAdapter.FillerUp(Me.DbCalcsDataSet.tblQCResults, New System.Nullable(Of Integer)(CType(QCIDToolStripTextBox.Text, Integer)))
Catch ex As System.Exception
System.Windows.Forms.MessageBox.Show(ex.Message)
End Try
End Sub
预期结果是应该开始5行,然后再开始总共10行。这里还涉及其他功能,但这是调试器向我展示的是添加时rowCount从5跳到12。
更新
这里有更多代码可以帮助解释这个问题。 首先,这里是AddAnalyte按钮单击的代码:
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
If Me.cmbAnalytes.SelectedIndices.Count = 0 Then Exit Sub
If Me.dgvPatientReview.RowCount > 0 Then
Me.Validate()
Me.TblQCResultsBindingSource.EndEdit()
Me.TblQCResultsTableAdapter.Update(Me.DbCalcsDataSet.tblQCResults)
End If
For i = 0 To Me.cmbAnalytes.SelectedIndices.Count - 1
AddFiveAnalytes(Me.cmbAnalytes.SelectedItems(i))
Next
Me.cmbAnalytes.ClearSelected()
UpdateTable()
End Sub
这可能是问题所在-因为这是第一次很好,并在添加更多行后中断。我不确定if语句“如果me.dgvPatientReview.RowCount> 0然后...”
AddFiveAnalytes子项也可能是问题所在
Public Sub AddFiveAnalytes(ByVal test As String)
Using cmd As New OleDb.OleDbCommand
For i = 0 To 5
cmd.Connection = con
cmd.CommandText = "INSERT into tblQCResults (QCID, Analyte, [Within Tolerance], RevisedReport) VALUES (@QCID, @Analyte, 0, 0);"
cmd.Parameters.AddWithValue("@QCID", intIncidence)
cmd.Parameters.AddWithValue("@Analyte", test)
cmd.ExecuteNonQuery()
Next
End Using
End Sub
然后UpdateTable Sub也可能是问题:
Public Sub UpdateTable()
Dim Boo As Boolean = False
1:
con.Close()
con.Open()
FillerUpToolStripButton.PerformClick()
Dim intA As Integer = aRound(Me.dgvPatientReview.RowCount / 5, 0)
If Not (Me.dgvPatientReview.RowCount / 5).ToString = intA.ToString Then
If Boo = True Then
MsgBox("There is an error in attempting to add 5 new lines. If you need more lines than are being shown, add 5 more. Any lines not used will be deleted when you save.")
GoTo 2
Else
Boo = True
GoTo 1
End If
End If
2:
For i = 0 To Me.dgvPatientReview.RowCount - 1
If Me.dgvPatientReview.Item(10, i).Value = True Then
dgvPatientReview(11, i).Style.BackColor = Color.LightYellow
Else
dgvPatientReview(11, i).Style.BackColor = Color.Silver
End If
Next
End Sub
我希望这些信息有助于解答此问题。 VBA绝对不是我的强项!