使用.FIELDS adodb显示多个值

时间:2010-05-14 16:26:23

标签: mysql sql excel vba

我收到了一些数据:

rs.Filter = "datapath='" + dpath + "' and analystname='" + aname + "' and reportname='" + rname + "' and batchstate='" + bstate + "'"
If Not rs.EOF Then
    MsgBox rs.Fields("rowid")
End If

如果rs.filter返回多条记录,我如何让rs.fields("rowid")给我多个rowid值?

3 个答案:

答案 0 :(得分:2)

do while not (rs.eof and not rs.bof)

   MsgBox rs.Fields("rowid") 
   rs.movenext()

end while

语法可能不对,但这就是想法。

答案 1 :(得分:1)

如果您只是调用rs.Fields("rowId"),那么您实际上是在询问当前行的列值,该值可能是第一行。假设记录集返回10行,您想对每行的rowId值做什么?在消息框中显示每个?这意味着10个消息框。如果这真的是你想要做的,你会做类似的事情:

rs.Filter = "datapath='" + dpath + "' and analystname='" + aname + "' and reportname='" + rname + "' and batchstate='" + bstate + "'"
Do Until rs.EOF
    MsgBox rs.Fields("rowid").Value
    rs.MoveNext
Loop

这假定rs是仅向前记录集。如果您使用的是键集游标,则可能需要调用MoveFirst()。

rs.Filter = "datapath='" + dpath + "' and analystname='" + aname + "' and reportname='" + rname + "' and batchstate='" + bstate + "'"
rs.MoveFirst()
Do Until rs.EOF
    MsgBox rs.Fields("rowid").Value
    rs.MoveNext
Loop

答案 2 :(得分:1)

这是ADO,因此请使用GetString:

MsgBox rs.GetString

首先检查是否有一些记录被退回。

更多信息:http://www.w3schools.com/ado/met_rs_getstring.asp