Foxtable(狐表)用户栏目专家坐堂 → SQLtable可以添加增加临时列吗


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

主题:SQLtable可以添加增加临时列吗

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


加好友 发短信
等级:小狐 帖子:363 积分:3466 威望:0 精华:0 注册:2016/5/25 21:31:00
SQLtable可以添加增加临时列吗  发帖心情 Post By:2017/8/28 16:35:00 [只看该作者]

包材申请表中有商品ID,商品表也有商品ID
SQLtable类型包材申请表,添加临时列“名称”,通过在申请表中输入商品ID后显示商品表中对应的名称
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目2.zip



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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/8/28 17:10:00 [只看该作者]

AfterLoad事件

 

Dim cmd As New SQLCommand
cmd.ConnectionName = "db"
Dim str = DataTables("窗口1_包材申请表").GetComboListString("商品id")
str = str.replace("|", "','")
cmd.CommandText = "SELECT * From {商品} Where [商品ID] in ('" & str & "')"
Dim dt As DataTable = cmd.ExecuteReader
DataTables("窗口1_包材申请表").DataCols.Add("名称", Gettype(String))
For Each dr As DataRow In DataTables("窗口1_包材申请表").Select("")
    Dim fdr As DataRow = dt.Find("商品id = '" & dr("商品id") & "'")
    If fdr IsNot Nothing Then
        dr("名称") = fdr("名称")
    End If
Next

[此贴子已经被作者于2017/8/28 17:10:33编辑过]

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


加好友 发短信
等级:小狐 帖子:363 积分:3466 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2017/8/28 18:35:00 [只看该作者]

非常感谢,解决我一个大问题

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


加好友 发短信
等级:小狐 帖子:363 积分:3466 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2017/9/2 23:11:00 [只看该作者]

老师,这个代码在行数少时可以,行数一多速度就非常卡慢,计算不过来,有更好的方法吗

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


加好友 发短信
等级:二尾狐 帖子:388 积分:5098 威望:0 精华:0 注册:2013/11/2 0:01:00
回复:(wakai)老师,这个代码在行数少时可以,行数一...  发帖心情 Post By:2017/9/3 9:02:00 [只看该作者]

那你可以直接在sqlcommand语句里,把表之间的连接做好了,直接查询出来就是结果,速度非常快的

 

cmd.CommandText = "SELE CT 商品名称,订单ID From 商品档案,订单明细表 Where 商品档案.商品ID = 订单明细表.商品ID and 商品档案.商品ID in (xxxx) and 还有什么更多条件尽管填"


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/3 11:41:00 [只看该作者]

如果是sqlTable,这样写

 

Tables("窗口1_包材申请表").fill("select *,(select 名称 from {商品} b where a.商品id=b.商品id) as 名称 from {包材申请表} as a", "db", False)

 

如果是查询表sqlquery,可以用连接查询,速度会快一些。

 

http://www.foxtable.com/webhelp/scr/0688.htm

 


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


加好友 发短信
等级:小狐 帖子:363 积分:3466 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2017/9/4 13:41:00 [只看该作者]

用SQLtable,希望输入商品ID,就会马上显示商品表中名称来,用Tables("窗口1_包材申请表").fill("select *,(select 名称 from {商品} b where a.商品id=b.商品id) as 名称 from {包材申请表} as a", "db", False),需要下次打开窗体才会显示出来

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/4 14:15:00 [只看该作者]

以下是引用wakai在2017/9/4 13:41:00的发言:
用SQLtable,希望输入商品ID,就会马上显示商品表中名称来,用Tables("窗口1_包材申请表").fill("select *,(select 名称 from {商品} b where a.商品id=b.商品id) as 名称 from {包材申请表} as a", "db", False),需要下次打开窗体才会显示出来

 

你在DataColChanged事件,查询和引用不就行了?

 

http://www.foxtable.com/webhelp/scr/1451.htm

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/9/4 14:19:00 [只看该作者]

DataColChanged事件,代码

 

Select Case e.DataCol.name
    Case "商品id"
        Dim cmd As New SQLCommand
        cmd.ConnectionName = "db"
        cmd.CommandText = "SELECT 名称 From {商品} Where [商品ID] = '" & e.DataRow("商品id") & "'"
        e.DataRow("名称") = cmd.ExecuteScalar
End Select


 回到顶部