0

単純な文字列の割り当てで VB がデータの行を削除するという問題に困惑しています。処理ループは以下です。dvDataデータビューに 3 つの行がある (つまり、 3 である)場合dvData.Count、以下の文字列の割り当てにより、データビューで行が失われます (つまり、文字列の割り当てを実行した後dvData.Countは 2 になります)。さらに奇妙なのは、この同じ文字列代入呼び出しが、データ行を失うことなく、同じスクリプト内で何度も使用されていることです。

For Each oneShipment As Shipment In DelShipmentsList
    For intRow = 0 To (dvData.Count - 1)

        ' Example: if dvData.Count is 3 at this point, then....
        dvData(intRow)("Result") = "     Receipt Transaction Accepted."
        ' ... now dvData.Count will be 2!

    Next
Next
4

2 に答える 2

0

完全に予想外であり、頭を悩ませるに値するものでしたが、答えを見つけたようです. 整数と文字列を明示的に渡すことを確実にするために、必要に応じて CStr() と CInt() を使用してもらいました。これが私たちが見つけたものです:

' This string causes the dataview to change error
dvData(CInt(intRow))(CStr("Result")) = CStr("Receipt Transaction Accepted")

'This string does not.
dvData(CInt(intRow))(CStr("Result")) = CStr("Receipt Transaction Successful")

どうやら「認められた」という言葉には何かがあるようです。さまざまな文字列を試して、指定された文字列が他の方法では説明できない奇妙な動作を引き起こす理由を理解するのにかなりの時間を費やしました。

于 2013-10-25T18:58:19.433 に答える