Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共6 条记录, 每页显示 10 条, 页签: [1]
[浏览完整版]

标题:麻烦老爹检查一下代码,超出数组边界?发现BUG。二楼

1楼
菜鸟foxtable 发表于:2010/10/28 11:24:00

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执行框里运行正常。


此主题相关图片如下:未命名.jpg
按此在新窗口浏览图片

 

如果把思路改成预先将所有数据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

[此贴子已经被作者于2010-10-28 11:50:02编辑过]
2楼
菜鸟foxtable 发表于:2010/10/28 11:42:00

Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "exec PROC_DI_zygfbrjsxd"
cmd.ExecuteReader()
简化后就是存储过程不能执行。。。。

 

发现有个似乎BUG的东西。在SQL excuter里执行存储过程语句无效,不能正常弹出预览窗口。

 

只能先执行一个常规的查询语句弹出预览窗口后,在预览窗口里执行存储过程才行。

 

似乎一楼的问题就是由于这个原因造成的吧?

 

 


图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.jpg
图片点击可在新窗口打开查看
[此贴子已经被作者于2010-10-28 11:49:38编辑过]
3楼
程兴刚 发表于:2010/10/28 13:30:00

是不是这里:

 

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
否者您得到的列表项目最后多一个“|”

4楼
狐狸爸爸 发表于:2010/10/28 14:45:00

这不是bug,SQL执行窗口判断所执行的SQL语句,如果是Select开头,才弹出窗口显示结果。

一楼的问题我看看,目前你想办法用Select语句吧,我也建议用Select语句。

[此贴子已经被作者于2010-10-28 14:52:33编辑过]
5楼
菜鸟foxtable 发表于:2010/10/28 15:45:00
以下是引用狐狸爸爸在2010-10-28 14:45:00的发言:

这不是bug,SQL执行窗口判断所执行的SQL语句,如果是Select开头,才弹出窗口显示结果。

一楼的问题我看看,目前你想办法用Select语句吧,我也建议用Select语句。

[此贴子已经被作者于2010-10-28 14:52:33编辑过]

一楼这个问题要解决,我做的东西就是针对任意的SQL数据库,两种类型的语句应该通用才对。

6楼
菜鸟foxtable 发表于:2010/10/28 15:49:00
以下是引用程兴刚在2010-10-28 13:30:00的发言:

是不是这里:

 

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
否者您得到的列表项目最后多一个“|”

程版,多一个|不影响的,不过您的代码更合理。

共6 条记录, 每页显示 10 条, 页签: [1]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03589 s, 2 queries.