Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
Dim cmd As New SQLCommand
cmd.C
Dim dt As datatable
If Vars("类型") = "查询" Then
cmd.CommandText = "" & Vars("查询") & "" & " where 1<>1"
Else If Vars("类型") = "存储" Then
cmd.CommandText = Vars("查询")
End If
dt = cmd.ExecuteReader()
Dim lst As String
For Each dc As DataCol In dt.dataCols
lst = dc.name & "|" & lst
Next
Tables("Bsfilter").Cols("listed").Combolist = "" & lst & ""
上面代码是提取后台数据表的所有列名,做为某列的列表项目。
当语句为select * from Vw_zycybrjk这样类型的正常,而语句是存储过程exec PROC_DI_zygfbrjsxd时报错。
这两个查询语句在SQL执行框里运行正常。
如果把思路改成预先将所有数据Fill到某窗口某表,则正常。
If Vars("类型") = "存储" Then
Dim lst1 As String
For Each c As col In Tables("主窗口_Table1").Cols
lst1 = c.name & "|" & lst1
Next
Tables("Bsfilter").Cols("listed").Combolist = "" & lst1 & ""
End If
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "exec PROC_DI_zygfbrjsxd"
cmd.ExecuteReader()
简化后就是存储过程不能执行。。。。
发现有个似乎BUG的东西。在SQL excuter里执行存储过程语句无效,不能正常弹出预览窗口。
只能先执行一个常规的查询语句弹出预览窗口后,在预览窗口里执行存储过程才行。
似乎一楼的问题就是由于这个原因造成的吧?
是不是这里:
For Each dc As DataCol In dt.dataCols
lst = dc.name & "|" & lst
Next
改为:
For Each dc As DataCol In dt.dataCols
if lst = nothing
lst = dc.name
else
lst = dc.name & "|" & lst
end if
Next
否者您得到的列表项目最后多一个“|”
这不是bug,SQL执行窗口判断所执行的SQL语句,如果是Select开头,才弹出窗口显示结果。
一楼的问题我看看,目前你想办法用Select语句吧,我也建议用Select语句。
这不是bug,SQL执行窗口判断所执行的SQL语句,如果是Select开头,才弹出窗口显示结果。
一楼的问题我看看,目前你想办法用Select语句吧,我也建议用Select语句。
一楼这个问题要解决,我做的东西就是针对任意的SQL数据库,两种类型的语句应该通用才对。
是不是这里:
For Each dc As DataCol In dt.dataCols
lst = dc.name & "|" & lst
Next
改为:
For Each dc As DataCol In dt.dataCols
if lst = nothing
lst = dc.name
else
lst = dc.name & "|" & lst
end if
Next
否者您得到的列表项目最后多一个“|”
程版,多一个|不影响的,不过您的代码更合理。