以文本方式查看主题

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

--  作者:wfan0102
--  发布时间:2013/6/3 8:29:00
--  [求助]

假如有表A(有a,b两列),表B(有a,b两列),表B的a列为列表项目(数据来源于表A的a列),开启输入助手允许手工输入数据,要求:手工输入表B中a列内容的时候判断数据是否属于表A中a列的数据。如何判断呢??


--  作者:Bin
--  发布时间:2013/6/3 8:43:00
--  
利用 dim dr as datarow = datatables("表A").FInd("A列=\'XX\'")
判断一下DR是否为空就知道有没找到表A的数据了
 if dr is nothing then

--  作者:gsnake
--  发布时间:2013/6/3 8:43:00
--  
看看帮助FIND
--  作者:wfan0102
--  发布时间:2013/6/3 9:54:00
--  

现在是如何 取到 输入表B中a列的值呢??要动态的取,不是固定一个值


--  作者:wfan0102
--  发布时间:2013/6/3 9:56:00
--  
利用 dim dr as datarow = datatables("表A").FInd("A列=\'datatables("表B").datacols("A列")\'") 么?
--  作者:Bin
--  发布时间:2013/6/3 9:57:00
--  
在DataColChanged事件中,这些帮助中都有的. 新手一定要静下心来看帮助.
--  作者:XYT
--  发布时间:2013/6/3 9:57:00
--  

你是在表A取表B的值吗?

If e.DataCol.Name = "产品编号" Then \'发生变化的是产品编号吗?
    \'在产品表找出该产品
    Dim dr As DataRow
    dr = DataTables("产品").Find("编号 = " & "\'" & e.DataRow("产品编号") & "\'" )
    If dr IsNot Nothing \'如果找到, 则设置各列内容
        e.DataRow("品名")= dr("品名")
        e.DataRow("型号")= dr("型号")
        e.DataRow("规格")= dr("规格")
    End If
End If

可以参考下这个代码


--  作者:狐狸爸爸
--  发布时间:2013/6/3 10:00:00
--  

设置表B的DatacolChanging事件:

 

if e.Datacol.name = "a" Andalso e.NewValue > "" then ’如果在a列输入值

  If DataTables("表A").Find("a = \'" & e.NewValue & "\'")  Is Nothing Then \'如果表A的a列不存在此值

     e.Cancel = True \'取消输入

  end If

End If

 

参考:

http://www.foxtable.com/help/topics/0396.htm

http://www.foxtable.com/help/topics/0624.htm

 

  

[此贴子已经被作者于2013-6-3 10:02:58编辑过]

--  作者:狐狸爸爸
--  发布时间:2013/6/3 10:04:00
--  

还有动态合成表达式也应该看看:

http://www.foxtable.com/help/topics/1284.htm

 


--  作者:wfan0102
--  发布时间:2013/6/3 10:13:00
--  

感谢大家的帮助,有了这些思路可以解决其他的问题。狐狸爸爸的代码就是我想要的,再次感谢