if not rs.bof then msgbox rs,fields(0).name end if
if rs.recordcount>0 then ... else msgbox "没有记录!",48,"提示" end if rs.close
哦,有点误解楼主的意思了 如果只想要获取字段名称和类型,应该和bof/eof没有关系吧?最好看看你的代码... 只想要获取表的字段名称和类型可以这样: select * from tb where 1=0 然后: for i =0 to fields.count-1 msgbox rs.fields(i).name next
我认为这个理解有问题 说白了,bof,eof是测试fields(n).value,也就是返回的记录集是否有数据 但无论bof,eof的值如何,fields(n)的name,type等等是一定返回的 上面那个select * from tb where 1=0 就是返回一个空记录集,这个语句在用ADDNEW添加数据时是常用的语句,以提高表中巨量数据下的效率.... 做了个简单测试: Dim rs As ADODB.Recordset Dim sql As String Dim i As Long
sql = "select * from tb where 1=0 " Set rs = ExecuteSQL(sql) '这个是一个查询函数
Debug.Print rs.BOF For i = 0 To rs.Fields.Count - 1 Debug.Print rs.Fields(i).Name Debug.Print rs.Fields(i).Type Next结果: True编号 3 AA 202 BB 3 CC 7
msgbox rs,fields(0).name
end if
...
else
msgbox "没有记录!",48,"提示"
end if
rs.close
如果只想要获取字段名称和类型,应该和bof/eof没有关系吧?最好看看你的代码...
只想要获取表的字段名称和类型可以这样:
select * from tb where 1=0
然后:
for i =0 to fields.count-1
msgbox rs.fields(i).name
next
用ADOX的话,能取字段名,但不知道字段数据类型怎么获得,还请指教!
我认为这个理解有问题
说白了,bof,eof是测试fields(n).value,也就是返回的记录集是否有数据
但无论bof,eof的值如何,fields(n)的name,type等等是一定返回的
上面那个select * from tb where 1=0 就是返回一个空记录集,这个语句在用ADDNEW添加数据时是常用的语句,以提高表中巨量数据下的效率....
做了个简单测试:
Dim rs As ADODB.Recordset
Dim sql As String
Dim i As Long
sql = "select * from tb where 1=0 "
Set rs = ExecuteSQL(sql) '这个是一个查询函数
Debug.Print rs.BOF
For i = 0 To rs.Fields.Count - 1
Debug.Print rs.Fields(i).Name
Debug.Print rs.Fields(i).Type
Next结果:
True编号
3 AA
202 BB
3 CC
7