以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]多表共用DropDownForm窗口如何选择值?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=63442)

--  作者:andy123
--  发布时间:2015/1/21 11:18:00
--  [求助]多表共用DropDownForm窗口如何选择值?
多表共用一个下拉窗口,选择值写入当前表,并且也要将当前表某列的值写入到下接窗口中选择的表中。
想了很久有些功能还是实现 不了,来请教老师

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:下拉窗口选择1.zip



具体需求:(以示例文件说明)
(1)单击 “表C” 第二列时出现下拉窗口,从下拉窗口中可以选择显示“表A”或“表B”
(2)双击下拉窗口选定表中的行,执行如下动作:
生成一个5位随机数,并将随机数同时写入"表C"第二列及选择表("表A"或“表B”)的第三列
同时,将"表C"第一列的内容写入选择表("表A"或“表B”)的第二列
(3)下次打开下拉窗口时,过滤掉选择表("表A"或“表B”)中第二列中有值的行

现在主要是卡在第3点,写入值时过滤行就错乱。

先谢过图片点击可在新窗口打开查看

[此贴子已经被作者于2015-1-21 11:19:52编辑过]

--  作者:Bin
--  发布时间:2015/1/21 11:26:00
--  
反复测试了一下,好像都正常啊.
--  作者:有点甜
--  发布时间:2015/1/21 11:31:00
--  

Dim dname As String
dname = e.Form.DropTable.Name \'当前表表名
Dim dv As String
dv = Rand.NextString(5) \'生成长度为5的随机字符串

Dim r As Row

If e.Selected Then
    Select Case dname
        Case "表C"
            Dim tbl As Table =  Tables("认领_table1")
            If tbl.Current IsNot Nothing Then
                Select Case NameFlag
                    Case "表A"
                        r = Tables("表A").Rows(Tables("表A").FindRow(tbl.Current.DataRow))
                        r("第二列") = Tables("表C").Current("第一列")
                        r("第三列") =dv
                        e.Form.DropDownBox.Value  = dv
                        Tables("表A").Current.Locked = True
                        Tables("表A").save
                    Case "表B"
                        r = Tables("表B").Rows(Tables("表B").FindRow(tbl.Current.DataRow))
                        r("第二列") = Tables("表C").Current("第一列")
                        r("第三列") =dv
                        e.Form.DropDownBox.Value  = dv
                        Tables("表B").Current.Locked = True
                        Tables("表B").save
                    Case Else
                End Select
            End If
    End Select
End If


--  作者:andy123
--  发布时间:2015/1/21 11:36:00
--  
---------------------------
错误
---------------------------
编译错误:类型“Row”的值无法转换为“DataRow”。

错误代码:r = Tables("表A").Rows(Tables("表A").FindRow(tbl.Current.DataRow))
---------------------------
确定   
---------------------------


--  作者:andy123
--  发布时间:2015/1/21 11:39:00
--  
报错
--  作者:有点甜
--  发布时间:2015/1/21 11:56:00
--  
 拷贝上面代码,不可能报错啊
[此贴子已经被作者于2015-1-21 11:56:11编辑过]

--  作者:andy123
--  发布时间:2015/1/21 11:57:00
--  
改为:
r =DataTables("表B").DataRows(Tables("表B").FindRow(tbl.Current.DataRow))
搞定
谢谢各位

--  作者:有点甜
--  发布时间:2015/1/21 11:58:00
--  

Dim dname As String
dname = e.Form.DropTable.Name \'当前表表名
Dim dv As String
dv = Rand.NextString(5) \'生成长度为5的随机字符串

Dim r As Row

If e.Selected Then
    Select Case dname
        Case "表C"
            Dim tbl As Table =  Tables("认领_table1")
            If tbl.Current IsNot Nothing Then
                Select Case NameFlag
                    Case "表A"
                        r = Tables("表A").Rows(Tables("表A").FindRow(tbl.Current.DataRow))
                        r("第二列") = Tables("表C").Current("第一列")
                        r("第三列") =dv
                        e.Form.DropDownBox.Value  = dv
                        r.Locked = True
                        r.save
                    Case "表B"
                        r = Tables("表B").Rows(Tables("表B").FindRow(tbl.Current.DataRow))
                        r("第二列") = Tables("表C").Current("第一列")
                        r("第三列") =dv
                        e.Form.DropDownBox.Value  = dv
                        r.Locked = True
                        r.save
                    Case Else
                End Select
            End If
    End Select
End If


--  作者:andy123
--  发布时间:2015/1/21 12:16:00
--  
是我搞错了
Dim r As Row
写成了Dim r As DataRow