在VB.NET w / ADO帮助中需要记录集行为

时间:2009-10-15 19:21:09

标签: vb.net ado.net vb6 dataset

VB.NET新手在这里。

我已经(通过这个网站)了解了如何通过以下方式协商数据集:

For Each dRow In quanDS.Tables(0).Rows
  'do something to each row
Next

我现在需要弄清楚现在循环遍历数据集中返回的记录的子集 - 这是我需要转换的VB6示例:

strSQL = "select * from tblDQ order by xid, xcode, xDOS"
rsMaster.Open strSQL, conDB, adOpenDynamic, adLockOptimistic
rsMaster.MoveFirst

Do While Not rsMaster.EOF
    strxID = Trim(rsMaster!xID)
    strxCode = Trim(rsMaster!xcode)
    dblQuan = rsMaster!units
    Do While Trim(rsMaster!xID) = strxID And Trim(rsMaster!xcode) = strxCode
        rsMaster!unitdif = rsMaster!units - dblQuan
        rsMaster.Update
        dblQuan = rsMaster!units
        rsMaster.MoveNext
        If rsMaster.EOF Then
            Exit Do
        End If
    Loop
Loop

rsMaster.Close

任何帮助都将不胜感激!

2 个答案:

答案 0 :(得分:1)

你可以直接翻译。 rs!fieldName语法转换为VB.NET中的row("fieldName")

但是如果你使用LINQ会更容易。

答案 1 :(得分:1)

将其转换为SQLDataReader以替换记录集会非常简单。基本上,语法是

    using conn as new sqlconnection({connection string})
   using cmd as new sqlcommand("select * from tblDQ order by xid, xcode, xDOS", conn)
      cmd.connection.open()
      using reader as SQLDataReader = cmd.ExecuteDataReader()
          while reader.read
                  do your thing here, referencing reader("field")
          end while
      end using  'dispose of the reader
    end using  'dispose of teh command
end using  'close and dispose of the connection