2013-08-09 3 views
0

이 문제로 인해 화를 내고 있습니다. 왜 이런 일이 일어나고 있는지 알 수 없습니다. 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에있다 :

+0

합니다. 사용중인 쿼리 또는 dt의 정보를 제공하십시오 (Rows.Count는 높을 수 있지만 대부분의 행은 비어있을 수 있음). – varocarbas

+0

나는 그걸 가지고 놀았고 다른 쿼리를 사용했습니다 : SELECT TESTS. * FROM TESTS; 이것은 비어있는 95 개의 행을 반환하지만 listview는 약 10 개만 표시합니다. 이것이 VB에서 버그라고 생각하기 시작 했나요? –

+0

그런 일을 생각하기 전에 "프로그램/DB에 버그가있을 확률이 높습니다"라는 옵션을 사용하십시오. :). 이렇게 급진적 인 결론에 도달하기 전에 단계별 분석을 해보 죠, 그렇지 않습니까? dt.Rows는 (열거 가능한) Collection으로 취급되며 Collection을 반복하는 각 루프에 대한 버그에 대해 들어 본 적이 없습니다. 먼저 반복 작업이 올바른지 확인하십시오. lst.SubItems.Add (row (i))에 중단 점을 설정하고 값이 올바른지 확인하십시오. – varocarbas

답변

0
Dim lst As ListViewItem 

당신이 제공 한 정보와 함께 당신을 도울 수 없습니다
Dim lst As New ListViewItem 
+0

안녕하세요 짐, 응답 해 주셔서 감사합니다. –

관련 문제