2017-11-07 12 views
-1

元々Listviewコントロールを使用していたフォームがありましたが、リストボックスコントロールに変更する必要があります。ここでは、listviewに使用する元のコードを示します。私はadodbレコードセットを使用して、リストボックスを作成するためにそれを変更しようとしているが、エラーが続いている。 lv1はlistbox1です。 lv2はリストボックス2です。リストボックスにはリスト項目がありません。VB6はadodbレコードセットを使用してリストボックスに値を設定します

Private Sub PopulateListView() 
Dim cnPop As ADODB.Connection 
Dim rsPop As ADODB.Recordset 
Dim lst As ListItem 
Dim lngRecs As Long 

On Error GoTo ErrPopulate 

Set cnPop = New ADODB.Connection 
cnPop.CursorLocation = adUseClient 
cnPop.Open gcnORA 

Set rsPop = New ADODB.Recordset 
rsPop.Open sSQL, cnPop, adOpenDynamic, adLockReadOnly 

lv1.ListItems.Clear 
Do While rsPop.EOF = False 
    Set lst = lv1.ListItems.Add(, , rsPop!Customer_Number) 
    lst.SubItems(1) = rsPop!Customer_Name 
    rsPop.MoveNext 
Loop 

If rsPop.RecordCount > 0 Then 
    SelectButtons True 
End If 

With lblCount 
    .Caption = Format((rsPop.RecordCount), "#,##0") & IIf((rsPop.RecordCount) <= 1, " Customer", " Customers") & " found" 
    .Refresh 
End With 

rsPop.Close 
cnPop.Close 
Set rsPop = Nothing 
Set cnPop = Nothing 

Exit Sub 

ErrPopulate: 
MsgBox Err.Description, vbCritical, "Populate Error" 

End Sub 
+0

あなたはブレークポイントを置いて、それをデバッグしました。はいの場合、そのステートメントは失敗していますか? –

+0

はい、私はブレークポイントを置き、それをデバッグします。 – Yinah

+0

ドゥrsPop.EOF = Falseの は、あなたが取得しているエラーは何= lv1.ListItems.Add(、、rsPop!CUSTOMER_NUMBER) lst.SubItems(1)= rsPop!CUSTOMER_NAME rsPop.MoveNext – Yinah

答えて

1

listviewには複数の列を含めることができますが、前のリストビューには少なくとも2つの列、Customer NumberとCustomer Nameがあります。

リストボックスには1つの列しかありません。 2列のデータをリストボックスに表示/追加する方法を決定する必要があります。リストボックスのcolumnsプロパティで混乱しないでください。複数の列に設定されている場合でも、コントロールにはデータの列が1つしかありません。スクロールする代わりに水平にスクロールしてスクロールします。

lv1.Additem rsPop!Customer_Name 

リストボックスのドキュメント:リストボックスに項目を追加する

VB6 Listbox

関連する問題