以文本方式查看主题

-  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=72321)

--  作者:lesliecheung912
--  发布时间:2015/7/28 12:06:00
--  表事件如何对窗口中绑定的关联表起作用
如题,我在窗口中绑定关联表“包材入库明细表.破损记录”,然后在表B的表事件PrepareEdit中写入以下代码:
If e.Col.Name = "物资名称" Then
    Dim str As String
    Dim str1 As String = Tables("包材入库明细表").Current("物资名称")
    If str1 > "" AndAlso str1.Contains("套装") Then
        Dim drs As List(Of DataRow)
        drs = DataTables("成品BOM").SQLSelect("产品名称 = \'"& Tables("包材入库明细表").Current("产品名称") &"\'")
        For Each r As DataRow In drs
            If r("套装") = True Then
                If str = Nothing Then
                    str = r("物资名称")
                Else
                    str = str & "|" & r("物资名称")
                End If
            End If
        Next
        Tables("破损记录").Cols("物资名称").ComboList = str
    Else
        e.Cancel = True
    End If
End If
以上代码是为了实现在破损记录表的物资名称列可以生成下拉框然后进行选择。
我现在想要实现在窗口绑定的关联表中控制物资名称列不能手动修改,只可以通过下拉框去选择,应该如何实现呢?
感谢!!

--  作者:大红袍
--  发布时间:2015/7/28 12:09:00
--  

参考

 

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

 


--  作者:lesliecheung912
--  发布时间:2015/7/28 14:41:00
--  
这样也不行,现在的问题应该是我实际是在关联表中操作,但是事件要写到datatable中,这样会不会矛盾呢?
--  作者:大红袍
--  发布时间:2015/7/28 14:50:00
--  
If e.Col.Name = "物资名称" Then
    Dim str As String
    Dim str1 As String = Tables("包材入库明细表").Current("物资名称")
    If str1 > "" AndAlso str1.Contains("套装") Then
        Dim drs As List(Of DataRow)
        drs = DataTables("成品BOM").SQLSelect("产品名称 = \'"& Tables("包材入库明细表").Current("产品名称") &"\'")
        For Each r As DataRow In drs
            If r("套装") = True Then
                If str = Nothing Then
                    str = r("物资名称")
                Else
                    str = str & "|" & r("物资名称")
                End If
            End If
        Next
        e.Table.Cols("物资名称").AllowDirectType = False
        e.Table.Cols("物资名称").ComboList = str

    Else
        e.Cancel = True
    End If
End If

--  作者:lesliecheung912
--  发布时间:2015/7/28 14:53:00
--  
请问对于实际操作是对关联表但事件要写到Datatable表事件的情况应该如何解决?
--  作者:lesliecheung912
--  发布时间:2015/7/28 14:59:00
--  
谢谢,现在又可以了,刚才我是用Tables("破损记录").cols.AllowDirectType = False.
感觉现在系统好像有点慢一拍似的。

--  作者:大红袍
--  发布时间:2015/7/28 15:01:00
--  

下面这句代码写到AfterOpenProject事件

 

Tables("表A.表B").Cols("物资名称").AllowDirectType = False

 

删除这句

 

e.Table.Cols("物资名称").AllowDirectType = False


--  作者:lesliecheung912
--  发布时间:2015/7/28 15:27:00
--  
可以了,谢谢老师!