‘调用准备
Dim oDic,strSql
Set Dic=CreateObject("scripting.dictionary")
oDic.Add "1","column1"
oDic.Add "2","column2"
strSql="selectcolumn1,column2from tablewhere ......"
GetDBdata strSql,oDic
'*************************************************Function GetDBdata(sql,oDic)
'---------------------------------------------------------------'说明: 通过字典对象从DB中获取所需数据
'输入: strSql 获取数据的sql语句
' oDic 包含需要获取的字段名称的字典对象,key/value须在sql获取的字段列表中
'输出: oDic 返回值为传入字段对应的取值或在没有记录时返回False
'Note:后续需要加入传入SQL没有记录的异常处理,返回一个值在调用该函数时做判断
'---------------------------------------------------------------Dim res,cmd
Dim key
Set Res=Createobject("adodb.recordset")
Set Cmd=Createobject("adodb.command")
Cmd.activeconnection="Provider=SQLOLEDB.1;Password=111111;Persist Security Info=True;User ID=sa;Initial Catalog=NorthWind;Data Source=..."
Cmd.CommandType = 1
Cmd.CommandText = sql
Set res = Cmd.Execute()
Do Until res.eof=True
For Each key In oDic
If res.eof=true and res.bof=true Then
oDic.Item(key)="False" '如果没记录,返回flase
Else
If res.eof=false Then
oDic.Item(key) = res(oDic.Item(key)).value
End If
End If
Next
If res.eof<>True Then
res.movenext
End If
Loop
Set res = Nothing
Set cmd.ActiveConnection = Nothing
Set Cmd= Nothing
Set GetDBdata=oDic
End Function
PS:adodb.recordset对象的EOF和BOF属性
BOF—指示当前记录的位置在Recordset对象的第一个记录之前。
EOF—指示当前记录的位置在Recordset对象的最后一个记录之后。
返回值
BOF和EOF属性返回Boolean值。
使用BOF和EOF属性确定Recordset对象是否包含记录,或者从一个记录移动到另一个记录时是否超出Recordset对象的限制。
如果当前记录位于第一个记录之前,则BOF属性返回True(-1)。如果当前记录是第一个记录或位于第一个记录之后,则返回False (0)。
如果当前记录位于最后一个记录之后,则EOF属性返回True。如果当前记录是最后一个记录或位于最后一个记录之前,则返回False。
如果BOF或EOF属性为True,则没有当前记录。
如果打开不包含记录的Recordset对象,则BOF和EOF属性被设置为True,Recordset对象的RecordCount属性设置为零。当打开至少包含一个记录的Recordset对象时,第一个记录是当前记录,并且BOF和EOF属性均为False。
如果删除Recordset对象中保留的最后一个记录,BOF和EOF属性将保持False,直到重新定位当前记录为止。