以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  SQLtable可以添加增加临时列吗  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=105887)

--  作者:wakai
--  发布时间:2017/8/28 16:35:00
--  SQLtable可以添加增加临时列吗
包材申请表中有商品ID,商品表也有商品ID
SQLtable类型包材申请表,添加临时列“名称”,通过在申请表中输入商品ID后显示商品表中对应的名称
 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目2.zip



--  作者:有点甜
--  发布时间: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
--  发布时间:2017/8/28 18:35:00
--  
非常感谢,解决我一个大问题
--  作者:wakai
--  发布时间:2017/9/2 23:11:00
--  
老师,这个代码在行数少时可以,行数一多速度就非常卡慢,计算不过来,有更好的方法吗
--  作者:chen3728060
--  发布时间:2017/9/3 9:02:00
--  回复:(wakai)老师,这个代码在行数少时可以,行数一...

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

 

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


--  作者:有点甜
--  发布时间: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
--  发布时间: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),需要下次打开窗体才会显示出来
--  作者:有点甜
--  发布时间: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

 


--  作者:有点甜
--  发布时间: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