0

ここで問題が発生しました。ストアドプロシージャを呼び出して、レコードをADODBRecordSetに配置しました。私がfield.countをチェックすると、6つの結果が得られました。これは良いことです。しかし、そのレコードセットにループしようとすると、そのうちの1つがスキップされます。これが私のコードです

  oRs = g_oSQL.GetRecords("PS_palFetchAllPalette_sel")
        If Not oRs Is Nothing Then
            cmbPallet.Items.Clear()
            oRs.MoveFirst()

            While Not oRs.EOF
                If oRs.Fields.Item("palcode").Value.ToString() <> "None" Then
                    cmbPallet.Items.Add(oRs.Fields.Item("palcode").Value.ToString())
                End If
                oRs.MoveNext()
            End While
4

2 に答える 2

1

しばらくADODBを使用していませんが、field.countはレコードセット内のフィールドの数を示し、返されたレコードの数を示しませんか?0レコードを返すこともできますが、それでもクエリにメタデータがあります。

「なし」のチェックが機能していることを確認しますか?これには、palcodeが空またはNullではなく、実際の値が「None」である必要があります。Whileループ内にブレークポイントを設定し、期待どおりの結果が得られているかどうかを確認します。

于 2013-03-26T15:47:30.913 に答える
1

oRs.MoveNext()を使用して最後のレコードに到達すると、EOFに到達するため、次のループは発生しません。ループの構造を変更してみてください。

With oRs
  Do Until .EOF
     'get your data
     .MoveNext

  Loop

で終わる

于 2013-03-26T16:48:34.053 に答える