|
本帖最后由 jandz0413 于 2011-8-11 17:05 编辑
我是想把数据库连接的代码弄成function公用。需要取数据的时候,创建一个dictionary对象(对象值是字段名)传给这个Function,由其取值并替换对象的值后再传回来。
这样做是为了应对不同的地方,所需的字段数量不同的情况,需要几个字段我就给字典对象add几条key/value就行。
以上是需求。而问题是对象去function里转了一圈出来,值没变。
我觉得问题可能是我在For Each循环里给赋值的方法不对。
请大家帮忙改改。谢谢。
-
- 'Option Explicit
- Dim sql
- sql="SELECT AccQty,AvaQty FROM ProQty WHERE ProNo= 26103"
- Dim oDic
- Set oDic = CreateObject("scripting.dictionary")
- oDic.Add "1","AccQty"
- oDic.Add "2","AvaQty"
- Set temp=Adodb(sql,oDic)
- MsgBox temp.Item("1")'--按说值应该已经变了,但是这里看仍然是oDic.Add进去的值
- Function Adodb(sql,oDic)
- Dim res,cmd
- Dim objCount
- Set Res=Createobject("adodb.recordset")
- Set Cmd=Createobject("adodb.command")
- Cmd.activeconnection="Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;Initial Catalog=PPC;Data Source=192.168.168.168"
- Cmd.CommandType = 1
- cmd.CommandText = sql
- Set res = Cmd.Execute()
- For Each Item In oDic.Items
- Item = res(Item).value
- MsgBox Item'--这里看值是正确的,已经取到需要的数据了。
- Next
- res.movenext
- Set res = nothing
- Set cmd.ActiveConnection = nothing
- Set Cmd= Nothing
- Set Adodb=oDic'--把对象作为返回值
- End Function
复制代码 |
|