Foxtable(狐表)用户栏目专家坐堂 → 用SQLcommand生成的表,增加临时列,不可以用buildtree


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

主题:用SQLcommand生成的表,增加临时列,不可以用buildtree

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


加好友 发短信
等级:三尾狐 帖子:739 积分:7694 威望:0 精华:0 注册:2017/2/3 10:29:00
用SQLcommand生成的表,增加临时列,不可以用buildtree  发帖心情 Post By:2020/12/8 4:54:00 [只看该作者]

老师好。用SQLcommand 生成的 表,增加 年、月两临时列。执行tv.BuildTree("流水", "年|月") 时出错。

Dim cmd As new SQLCommand
Dim dt As DataTable
cmd.connectingname = “数据源”
cmd.CommandText = "sele t DISTINCT  委托编号 from {流水}"    ‘-----------委托编号的格式举例:20201208-01,
dt = cmd.ExecuteReader()

 

If dt.DataCols.Contains("年") = False Then
    dt.datacols.Add("年",Gettype(String))
End If
If dt.DataCols.Contains("月") = False Then
    dt.datacols.Add("月",Gettype(String))
End If


For Each dr As DataRow In dt.DataRows
    Dim s As String = dr("委托编号")
    dr("年") = left(s,4)
    dr("月") = s.SubString(4,2)
Next

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
tv.BuildTree(dt,"年|月")

出现如下错误:

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:窗口,流水窗口,AfterLoad
详细错误信息:
对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。

请老师指点,谢谢老师!

[此贴子已经被作者于2020/12/8 5:30:43编辑过]

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/8 8:48:00 [只看该作者]

错误所在事件:窗口,流水窗口,AfterLoad

上面是AfterLoad的全部代码?如果不是,全部发上来看看
[此贴子已经被作者于2020/12/8 8:47:42编辑过]

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


加好友 发短信
等级:三尾狐 帖子:739 积分:7694 威望:0 精华:0 注册:2017/2/3 10:29:00
  发帖心情 Post By:2020/12/8 14:40:00 [只看该作者]

老师,下面是 afterload 的全部代码。其中,tb1是sqltable,selec t * from {流水} where [_identify] is null 

Dim tb1 As Table = Tables(e.Form.name & "_table1")
Dim dtb1 As DataTable = DataTables(e.Form.name & "_table1")

Dim cmd As new SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "sele ct DISTINCT  委托编号 from {流水}"
dt = cmd.ExecuteReader(True)
If dt.DataCols.Contains("年") = False Then
    dt.datacols.Add("年",Gettype(String))
End If
If dt.DataCols.Contains("月") = False Then
    dt.datacols.Add("月",Gettype(String))
End If


For Each dr As DataRow In dt.DataRows
    Dim s As String = dr("委托编号")
    dr("年") = left(s,4)
    dr("月") = s.SubString(4,2)
Next

Dim tv As WinForm.TreeView = e.Form.Controls("TreeView1")
tv.BuildTree(dt,"年|月")

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/8 14:58:00 [只看该作者]

dt = cmd.ExecuteReader(True)

改为

dt = cmd.ExecuteReader()

1楼的代码是没有true的,给出来的代码都不是原装的,又如何解决问题!

 回到顶部