以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助] foxtable 改用数据库表  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=151945)

--  作者:susanhe
--  发布时间:2020/7/7 20:49:00
--  [求助] foxtable 改用数据库表
你好,老师

以下的BOM表(黄色标识) 是在Foxtable中。 因为数据庞大,一直下载,影响速度。如何将以下代码修改一下,使其直接从SQL中数据库表BOM表中直接取出 ?谢谢。

Dim pn As String = args(0)
Dim qty As String = args(1)
Dim idx As Integer = args(5)
For Each dr As DataRow In  DataTables("BOM").Select("FNumber=\'" & pn & "\'")
    Dim ndr As DataRow = DataTables("物料需求").AddNew
    ndr("PartNo") = dr("PN")
    ndr("Date") = args(3)
    ndr("批号") = args(4)
    ndr("Demand") = dr("FQty") * qty
    ndr("层次") = "第" & idx & "层"
   
    Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3), args(4),idx+1)
Next

--  作者:有点蓝
--  发布时间:2020/7/7 20:56:00
--  
Select改为sqlSelect:http://www.foxtable.com/webhelp/topics/2900.htm
--  作者:susanhe
--  发布时间:2020/7/7 23:14:00
--  


老师,还请问一下以下黄色是来自另SQL数据库加一个表 ICBOM中的pn,该如何表示 ? 谢谢。

Dim pn As String = args(0)
Dim qty As String = args(1)
Dim idx As Integer = args(5)
For Each dr As DataRow In  DataTables("BOM").SQLSelect("FNumber=\'" & pn & "\'")
    Dim ndr As DataRow = DataTables("物料需求").AddNew
    ndr("PartNo") = dr("PN")
    ndr("Date") = args(3)
    ndr("批号") = args(4)
    ndr("Demand") = dr("FQty") * qty
    ndr("层次") = "第" & idx & "层"
   
    Functions.Execute("sumChild",dr("PN"),ndr("Demand"), args(2), args(3), args(4),idx+1)
Next

--  作者:有点蓝
--  发布时间:2020/7/7 23:18:00
--  
在这里是一个变量,和数据库有什么关系?如果变量值来自其他数据库,只能先取出来再用
--  作者:susanhe
--  发布时间:2020/7/8 7:44:00
--  
老师,

这个变量& pn & 来自数据库中的另一个表 ICBOM中。 要查找数据库表 BOM 中的 FNumbe 等于  ICBOM中的 pn 。

这样可以吗 ?谢谢。

--  作者:有点蓝
--  发布时间:2020/7/8 9:01:00
--  
表 ICBOM中的 pn值全部都取出来,再拼接到查询条件中
--  作者:susanhe
--  发布时间:2020/7/8 13:13:00
--  
麻烦老师一下。
--  作者:有点蓝
--  发布时间:2020/7/8 13:36:00
--  
比如:

Dim cmd As New SQLCommand
cmd.ConnectionName = "数据源名称"
Dim
 dt As DataTable
cmd.CommandText = "SELECT DISTINCT 
pn From {ICBOM}"
dt = cmd.ExecuteReader()
dim str as string = dt.GetComboListString("
pn")
For Each dr As DataRow In  DataTables("BOM").SQLSelect("FNumber in (\'" & str.replace("|","\',\'") & "\')")
……