ASP - 判断RecordSet中字段是否存在的作弊技巧

公司程序需要增加在Excel缺少某个字段时的处理情况。目前使用的Recordset打开的Excel,也就是说,问题其实就是要判断RecordSet某个字段是否存在。但令我牙疼的是,直接使用

1
2
3
if recordSet("fieldName") then
' do something
end if

直接报错,后续代码不执行。

网上寻找解决方案,似乎使用循环是唯一方案:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if fieldExists(recordSet, "fieldName") then
' do something
end if

function fieldExists(recordSet, fieldName)
fieldExists = false

for each field in recordSet.fields
if field.name = fieldName then
fieldExists = true
exit for
end if
next
end function

但意外中,我发现了另外一种更高效的技巧——利用报错来实现同样的功能

1
2
3
4
5
6
7
8
9
10
11
12
13
if fieldExists(recordSet, "fieldName") then
' do something
end if

function fieldExists(recordSet, fieldName)
fieldExists = false

err.clear
on error resume next
fieldExists = recordSet(fieldName).name <> ""
if err <> 0 then fieldExists = false
err.clear
end function

虽然不是正规思路,但明显后者更高效,我选后者

参考