이 문제로 인해 화를 내고 있습니다. 왜 이런 일이 일어나고 있는지 알 수 없습니다. vb.net을 사용하는 액세스 db에서 쿼리를 실행하고 데이터를 listview에 저장합니다. 코드 :이 목록보기는하지만 모든 반환 된 데이터를 표시되지, 왜 내가 해결할 수없는VB.NET listview가 데이터 집합의 모든 데이터를 표시하지 않습니다.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim strAccessConn As String = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = T:\mydb.accdb"
Dim cn As OleDbConnection = New OleDbConnection(strAccessConn)
Dim ds As New DataSet
Dim dt As DataTable
'Note the query is entered as a string.
Dim da As New OleDbDataAdapter("Q_LIST", cn) 'is the name of the query in Access
'Set the CommandType of the SelectCommand to TableDirect
da.SelectCommand.CommandType = CommandType.TableDirect
da.Fill(ds, "mytable")
dt = ds.Tables("mytable")
ListViewBatchResults.MultiSelect = True
ListViewBatchResults.View = View.Details
ListViewBatchResults.GridLines = True
ListViewBatchResults.Columns.Clear()
ListViewBatchResults.Items.Clear()
For Each col As DataColumn In dt.Columns()
ListViewBatchResults.Columns.Add(col.ToString)
Next
MsgBox(dt.Rows.Count)
For Each row As DataRow In dt.Rows()
Dim lst As ListViewItem
lst = ListViewBatchResults.Items.Add(row(0))
For i As Integer = 1 To dt.Columns.Count - 1
lst.SubItems.Add(row(i))
Next
Next
End Sub
-는 DB에서 다른 쿼리에서 작동하지만 어떤 이유로이 하나. 행 수는 264 개의 행이 있다는 것을 보여 주지만 목록 뷰는 프로젝트를 실행할 때 그 중 3 개만 보여줍니다. 도대체 무슨 일이야?
건배! DT가 제대로 설치되어있는 경우, 당신은 어떤 문제를 발견하지해야하며, 따라서 문제는 DT에있다 :
합니다. 사용중인 쿼리 또는 dt의 정보를 제공하십시오 (Rows.Count는 높을 수 있지만 대부분의 행은 비어있을 수 있음). – varocarbas
나는 그걸 가지고 놀았고 다른 쿼리를 사용했습니다 : SELECT TESTS. * FROM TESTS; 이것은 비어있는 95 개의 행을 반환하지만 listview는 약 10 개만 표시합니다. 이것이 VB에서 버그라고 생각하기 시작 했나요? –
그런 일을 생각하기 전에 "프로그램/DB에 버그가있을 확률이 높습니다"라는 옵션을 사용하십시오. :). 이렇게 급진적 인 결론에 도달하기 전에 단계별 분석을 해보 죠, 그렇지 않습니까? dt.Rows는 (열거 가능한) Collection으로 취급되며 Collection을 반복하는 각 루프에 대한 버그에 대해 들어 본 적이 없습니다. 먼저 반복 작업이 올바른지 확인하십시오. lst.SubItems.Add (row (i))에 중단 점을 설정하고 값이 올바른지 확인하십시오. – varocarbas