Устранение неполадок в существующем приложении 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.
UPDATE
Вот еще немного кода, который поможет объяснить этот вопрос.Сначала приведем код для нажатия кнопки 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 «If me.dgvPatientReview.RowCount> 0 then ...»
Подпрограмма 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
Тогда может возникнуть проблема с Sub-файлом UpdateTable:
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 определенно не мой сильный костюм!