以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]数据引用 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97530) |
||||
-- 作者:feng1999 -- 发布时间:2017/3/14 11:15:00 -- [求助]数据引用 老师好,这个项目中同种类型的元器件有三个相关的table,其中电解电容与电解电容检验记录建立了关联,主要是用于电解电容测试窗口中能够显示关联表的内容,我想问的问题是: 电解电容检验记录这个Table中的数据是否可以根据材料代号随机从电解电容检验记录数据库抽取10个数据用于展示呢?谢谢!
|
||||
-- 作者:feng1999 -- 发布时间:2017/3/14 11:15:00 --
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2017/3/14 12:28:00 -- 关于随机抽取记录的问题,您可以先参考一下: http://www.foxtable.com/webhelp/scr/2963.htm 有问题再留言。
|
||||
-- 作者:feng1999 -- 发布时间:2017/3/14 13:25:00 -- 老师,你好,在同一个表中随机抽取记录根据帮助中介绍的可以操作,但是我现在要做的是电解电容检验记录这个table中的数据根据材料代号随机从电解电容检验记录数据库这个Table中抽取10条记录,首先是根据材料代号进行匹配,然后再随机抽取记录,如果实现这样的功能需要怎么操作呢?谢谢!
|
||||
-- 作者:有点色 -- 发布时间:2017/3/14 14:52:00 -- Dim bh As String = "3020220023" Dim ids As String Dim lst As new List(of String) Dim drs As List(of DataRow) = DataTables("电解电容检验记录数据库").Select("材料代号 = \'" & bh & "\'") If drs.count < 10 Then msgbox("结果不足10个") Else Do Dim Id As Integer = rand.Next(0,drs.count) id = drs(id)("_Identify") If lst.Contains(id) =False Then lst.Add(id) End If ids = ids & id & "," Loop While lst.count <= 10 \'5是要抽取的行数 msgbox(ids.trim(",")) End If |
||||
-- 作者:feng1999 -- 发布时间:2017/3/14 15:50:00 -- 老师好,上面这代码还是实现不了我所说的功能,下面缩写代码只能抽取电解电容检验记录数据库中的第一条记录写入到电解电容检验记录中,如何实现随机从电解电容检验记录数据库中抽取10条记录写入电解电容检验记录table中呢?谢谢! If e.DataCol.Name = "材料代号"
Then Dim nms() As String = {"外形尺寸_本体直径","外形尺寸_本体高","电容量测试值","损耗角正切测试值","漏电流测试值"} Dim dr1 As DataRow dr1 = DataTables("电解电容检验记录数据库").Find("[材料代号]
= \'" & e.NewValue & "\'") If dr1 IsNot Nothing Then For
Each nm As String In nms e.DataRow(nm) =dr1(nm) Next End If End If |
||||
-- 作者:有点蓝 -- 发布时间:2017/3/14 16:29:00 -- If e.DataCol.Name = "材料代号" Then |
||||
-- 作者:feng1999 -- 发布时间:2017/3/15 13:10:00 -- 这样设计可以实现电解电容检验记录这个Table中的数据是否可以根据材料代号随机从电解电容检验记录数据库抽取10个数据,但是电解电容检验记录与电解电容关联列的内容就无法显示了呢?(这是三个不同的table,分别用于不同的功能) |
||||
-- 作者:有点色 -- 发布时间:2017/3/15 13:33:00 -- Select Case e.DataCol.name Case "供应商","暂收单号","材料代号" If e.DataRow.IsNull("材料代号") = False AndAlso e.DataRow.IsNull("供应商") = False AndAlso e.DataRow.IsNull("暂收单号") = False Then Dim nms() As String = {"外形尺寸_本体直径","外形尺寸_本体高","电容量测试值","损耗角正切测试值","漏电流测试值","材料代号"} Dim drs As List(of DataRow) = DataTables("电解电容检验记录数据库").Select("材料代号 = \'" & e.DataRow("材料代号") & "\'") systemready = False If drs.count <= 10 Then For Each dr As DataRow In drs Dim dr2 As DataRow = e.DataTable.Addnew For Each nm As String In nms dr2(nm) =dr(nm) Next dr2("供应商") = e.DataRow("供应商") drs("暂收单号") = e.DataRow("暂收单号") Next Else Dim i As Integer = 1 Do Dim Id As Integer = rand.Next(0,drs.count) Dim dr5 As DataRow = drs(id) Dim dr3 As DataRow = e.DataTable.Addnew For Each nm As String In nms dr3(nm) =dr5(nm) Next dr3("供应商") = e.DataRow("供应商") dr3("暂收单号") = e.DataRow("暂收单号") i += 1 Loop While i <= 10 End If e.DataRow.Delete systemready = True End If End Select |
||||
-- 作者:feng1999 -- 发布时间:2017/3/15 13:49:00 -- 老师好:下面所写代码所实现的功能是电解电容与电解电容检验记录通过编号建立关联,("供应商","暂收单号","日期","采购单号","材料代号")根据编号自动写入,电解电容检验记录根据材料代号随机从电解电容检验记录数据库抽取一行,请问这个代码有什么不严谨的地方吗?(代码分两部分,代码太长,一次上传不了) If e.DataCol.Name = "编号"
Then Dim nms() As String = {"供应商","暂收单号","日期","采购单号","材料代号"} If e.NewValue Is
Nothing Then
For Each nm As String In nms
e.DataRow(nm) = Nothing
Next
Else
Dim dr As DataRow
dr = DataTables("电解电容").Find("[编号] = \'" & e.NewValue & "\'") If dr IsNot Nothing For Each nm As String In nms e.DataRow(nm) = dr(nm) Next End If End If End If |