3

現在、vb6 プログラムを開発していますが、2 つのテーブルから 1 つのリストビューを表示する際に問題があります。情報が乗算され、リストビューの最初の列に配置されます:(リストビューフォームの私のコードは次のとおりです:

Private Sub Form_Activate()
Set rs = New ADODB.Recordset
With rs
.open "Select * from tblapps , tblappsinfo", cn, 3, 3
ListView1.ListItems.Clear
Do Until rs.EOF
    ListView1.ListItems.Add = !Name
    ListView1.ListItems.Item(1).ListSubItems.Add = !address
    ListView1.ListItems.Item(1).ListSubItems.Add = !tin
    ListView1.ListItems.Item(1).ListSubItems.Add = !cel
    ListView1.ListItems.Item(1).ListSubItems.Add = !College
    ListView1.ListItems.Item(1).ListSubItems.Add = !age
    ListView1.ListItems.Item(1).ListSubItems.Add = !Status
    ListView1.ListItems.Item(1).ListSubItems.Add = !Salary_Desired
    ListView1.ListItems.Item(1).ListSubItems.Add = !Hours_can_work
    ListView1.ListItems.Item(1).ListSubItems.Add = !Available_for_work



  .MoveNext
  Loop
End With
4

1 に答える 1

2

後続のレコードのサブアイテムを追加するときは、アイテムのインデックスを更新していません。常に に追加していItem(1)ます。

あなたの例で代わりに欲しいのは

ListView1.ListItems.Item(ListView1.ListItems.Count)

そうすれば、サブアイテムは常に最新のアイテムに追加されます。

しかし、注意してください!追加中に Sorted プロパティが true の場合、最新のものは最後のものではない可能性があります。その場合、名前を独自のキーとして各項目を追加できます。

ListView1.ListItems.Add , !Name, !Name

次に、インデックスの代わりにキーによる参照

ListView1.ListItems.Item(!Name)

ただし、 でループの前に並べ替えをオフにし、ループListView1.Sorted = Falseの後に でソートをオンに戻す方がおそらく (キーの競合の問題を回避するために) より簡単で簡単ListView1.Sorted = Trueです。

于 2012-11-08T16:50:55.063 に答える