1

データのコレクションの構築に問題があります。問題のコードは次のとおりです。

    'Basic defitions are as follows:
     Private mCol As Collection
     Dim mcnn As ADODB.Connection
     Dim mrs As New ADODB.Recordset

     Dim uCustomClass As CustomClass
     On Error GoTo 0
     'set Find to false to catch any errors
     Find = False
     'checks for an active connection and then..
     Set mCol = Nothing
     Set mCol = New Collection
     With mrs
     .Open AN_SQL_SELECT_STATEMENT , mcnn, adOpenForwardOnly, adLockOptimistic
     While Not .EOF
        Set uCustomClass = New CustomClass
        Set uCustomClass.Connection = mcnn
        uCustomClass.CustomerName = NullToEquiv(.Fields("customer_name").Value,NULL_STRING)
        uCustomClass.NumberOfOrders = NullToEquiv(.Fields("num_of_orders").Value, NULL_LONG)
        uCustomClass.FavoriteColour = NullToEquiv(.Fields("favorite_colour").Value, NULL_STRING)

        'Cache orginal values in case the keys change
        uCustomClass.CacheOriginalValues
        'add to collection
        mCol.Add uCustomClass
        .MoveNext
    Wend

これを実行すると、uCustomClass ツリー構造は次のようになります。

    -uCustomClass
       +connection
        count
       + mcnn
       -mCol
          +Item1
          +Item2
          +Item3      
       +mrs
        mvarChangedCount
       +NewEnum

uCustomClass の直下に Item1、Item2、および Item3 を取得していませんが、mCol にのみ取得しています。別のカスタムクラスの別の場所で実行されているまったく同じコードのように見えるものがあり、必要なものを取得しています。

    -uCustomClassThatWorks
        +connection
         count
        + mcnn
        -mCol
           +Item1
           +Item2
           +Item3      
        +mrs
        mvarChangedCount
        +NewEnum
        +Item1
        +Item2
        +Item3

問題が発生している可能性のあるアイデアはありますか?

4

1 に答える 1

1

uCustomClassこれらのアイテムをどのように追加するかはわかりません。足りないコードか何かがありますか?

重要なポイントの 1 つは、コレクションが同じキーを複数回持つことはできないということです。これは、コレクションを 1 つの領域に追加することはできても、再度追加することはできない理由を説明しています。弦を削ったり、状況を悪化させたりする何かがあるかもしれません。そのため、キーが一意であることを確認してください。

于 2013-08-21T13:39:51.230 に答える