Foxtable(狐表)用户栏目专家坐堂 → 不存在名称为""的datatable


  共有16066人关注过本帖树形打印复制链接

主题:不存在名称为""的datatable

帅哥哟,离线,有人找我吗?
hhbb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/27 9:10:00 [显示全部帖子]

好似狐表的统计工具无法对SQL产生的临时DataTable再统计吧

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/31 12:30:00 [显示全部帖子]

我用Foxtable自带的示例文件『多表统计』,测试有问题的:

1.报不存在为""Datable的

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.Connection Name = "Sale"

cmd.CommandText = "select  客户ID,sum(数量) as 数量 from{订单} group by  客户ID"

dt = cmd.ExecuteReader()


For Each dr  As DataRow In Dt.DataRows

    dr("数量") = dr("数量") +100

Next


Tables("窗口1_Table1").DataSource = dt '放于最后报错!



2.不报错的

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.Connection Name = "Sale"

cmd.CommandText = "select  客户ID,sum(数量) as 数量 from{订单} group by  客户ID"

dt = cmd.ExecuteReader()


Tables("窗口1_Table1").DataSource = dt


For Each dr  As DataRow In Dt.DataRows

    dr("数量") = dr("数量") +100

Next


cmd.Connection Name 区分大小写吗?如写作cmd.Connection Name = "sale"就不行!


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/31 13:42:00 [显示全部帖子]

测试出来了:跟数据源有关!

 

如是『订单』表是内部表,则没问题

Dim cmd As New SQLCommand

Dim dt As DataTable

cmd.CommandText = "select  客户ID,sum(数量) as 数量 from{订单} group by  客户ID"

dt = cmd.ExecuteReader()


For Each dr  As DataRow In Dt.DataRows

    dr("数量") = dr("数量") +100

Next


Tables("窗口1_Table1").DataSource = dt


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/31 13:46:00 [显示全部帖子]

以下是引用mr725在2011-5-31 13:40:00的发言:

数据源名称(如:"Sale" <> "sale" )是区分大小写的。我也常碰到写代码时不注意而重新改这个名称的。

 

这个顺序:

Tables("窗口1_Table1").DataSource = dt

For Each dr  As DataRow In Dt.DataRows

    dr("数量") = dr("数量") +100

Next

后面的form ....  next 好像就没有什么意义了。再说,对上面的dt(临时表)似乎不能编辑的吧。

[此贴子已经被作者于2011-5-31 13:42:17编辑过]

呵呵,你试试,可以的


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:等待验证 帖子:386 积分:2482 威望:0 精华:1 注册:2011/5/10 11:13:00
  发帖心情 Post By:2011/5/31 15:21:00 [显示全部帖子]

以下是引用mr725在2011-5-31 15:12:00的发言:

呵呵,看来不测试就是不行的···  ,是可以的! 

 另外下面也是可以的呀,只是Dd 不能写成 dd :

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "Dd"
cmd.CommandText = "select  客户,sum(数量) as 数量 from{订单} group by  客户"
dt = cmd.ExecuteReader()
For Each dr  As DataRow In Dt.DataRows
    dr("数量") = dr("数量") +100
Next
Tables("窗口2_Table1").DataSource = dt    '这条放在for...next之前也是可以的。。。

几乎一样的语句,一时无事,一时有事,这说明肯定有Bug!


 回到顶部