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


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

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

帅哥哟,离线,有人找我吗?
狐狸爸爸
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/29 9:40:00 [只看该作者]

我用Foxtable自带的示例文件,测试没问题的:

 

 

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.CommandText = "Select * From {订单}"
dt = cmd.ExecuteReader()
Dim b As New CrossTableBuilder("统计表1", dt)
b.HGroups.AddDef("客户")
b.VGroups.AddDef("产品","产品_{0}")
b.Totals.AddDef("数量")
b.Build '生成统计表
MainTable = Tables("统计表1")

应该是列名出错。

[此贴子已经被作者于2011-5-29 9:45:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | 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"就不行!


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By: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
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | 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


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/31 13:44:00 [只看该作者]

收到,我测试一下看看。

图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

呵呵,你试试,可以的


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/5/31 15:12:00 [只看该作者]

以下是引用hhbb在2011-5-31 13:46: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之前也是可以的。。。


 回到顶部
帅哥哟,离线,有人找我吗?
hhbb
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | 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!


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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2011/6/2 15:52:00 [只看该作者]

原以为报『不存在名为""DataTable!』跟是否是外部数据源有关,现在看来不是!

大家帮我测试是否存在如下问题:

1.文件中[材料明细]Tables("材料分析_Table1").DataSource = dt 放在前面,没事!
              [没""DataTable]Tables("材料分析_Table1").DataSource = dt 放在后面,有事!

2.[???]比[材料汇总]不同的是,[???]后面多了以下语句,却莫名其妙报错了!

For Each dr As DataRow In dt.Select("材料編號 Like 'P*%'")
    dr("單位") = DataTables("配合比").Find("clmq = '" & dr("材料名稱") & "'")("cldw")   
Next

注:我的版本是2010.12.04.1(装不上最新的)

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:材料分析1.table

报错:
图片点击可在新窗口打开查看此主题相关图片如下:01.gif
图片点击可在新窗口打开查看

[此贴子已经被作者于2011-6-2 15:53:53编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/6/2 16:01:00 [只看该作者]

1、???的代码有问题,应该这个样:

 

For Each dr As DataRow In dt.Select("材料編號 Like 'P*%'")
    Dim dr2 As DataRow = DataTables("配合比").Find("clmq = '" & dr("材料名稱") & "'")
    If dr2 IsNot Nothing    
            dr("單位") = dr2("cldw")  
    End If
Next

 

2、沒""DataTable 的问题已经解决,等下次更新,下次你应该可以装上了。


 回到顶部
总数 21 上一页 1 2 3 下一页