以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  往焦点所在单元格传输数据失败  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145855)

--  作者:tld
--  发布时间:2020/2/9 16:33:00
--  往焦点所在单元格传输数据失败
老师,我通过双击tables("试样信息表").current("检测内容")打开“窗口1”,进行一系列操作后,得到字符串 str,希望:tables("试样信息表").current("检测内容")=str

发现不成功。在tables("试样信息表").current("备注")单元格双击后打开“窗口1”,就能实现tables("试样信息表").current("检测内容")=str。

想请教,从窗口向主表中的焦点所在单元格写数据不可以吗?我希望双击哪个单元格,就向哪个单元格传输数据。可以做到吗? 谢谢!

--  作者:有点蓝
--  发布时间:2020/2/9 22:47:00
--  
肯定可以的。双击事件写了什么代码?窗口向单元格赋值又是怎么做的?
--  作者:tld
--  发布时间:2020/2/10 20:27:00
--  
If System.Windows.Forms.Control.ModifierKeys = Keys.Control And e.Col.Name="检测内容"  ‘*********************如果改成其他列,比如“备注”就没有问题
    Dim ddr As DataRow  = DataTables("通用检测价格表").Find("次分类 = \'" & e.Row("试样名称") & "\'")
    If ddr Is Nothing Then
        msgbox("请检查【试样名称】是否填写正确")
        e.Cancel = True
    End If
    If ddr IsNot Nothing Then
        Public_检测大类 = ddr("首分类")
        Public_次分类=DDR("次分类")
        Public_表名称=e.Table.name
        Forms("窗口1").open
    End If
End If

*******************以下是窗口1的代码
Dim nr1 As WinForm.TextBox = e.Form.Controls("详细内容")
Dim jg1 As WinForm.TextBox = e.Form.Controls("检测费")\'
Dim sl1 As WinForm.TextBox = e.Form.Controls("检测数量")
Dim nr2 As WinForm.TextBox = e.Form.Controls("试样名称")
Dim jg2 As WinForm.TextBox = e.Form.Controls("加工费")
Dim sl2 As WinForm.TextBox = e.Form.Controls("试样数量")
Dim dr1 As Row= Tables(public_表名称).current
dr1("检测内容")=iif( sl1.text>0,(nr1.text & "*" & sl1.text),"")
dr1("加工内容")=iif(sl2.text>0,(nr2.text & "*" & sl2.text),"")
dr1("检测费")=jg1.text
dr1("加工费")=jg2.text

如果双击的是“检测内容”列,dr1("检测内容")=iif( sl1.text>0,(nr1.text & "*" & sl1.text),"")就没有结果。双击其他列打开窗口,就没有问题


[此贴子已经被作者于2020/2/10 20:30:13编辑过]

--  作者:有点蓝
--  发布时间:2020/2/10 20:46:00
--  
If System.Windows.Forms.Control.ModifierKeys = Keys.Control And e.Col.Name="检测内容"  ‘*********************如果改成其他列,比如“备注”就没有问题
    Dim ddr As DataRow  = DataTables("通用检测价格表").Find("次分类 = \'" & e.Row("试样名称") & "\'")
    If ddr Is Nothing Then
        msgbox("请检查【试样名称】是否填写正确")
    else
        Public_检测大类 = ddr("首分类")
        Public_次分类=DDR("次分类")
        Public_表名称=e.Table.name
        Forms("窗口1").open
    End If
    e.Cancel = True
End If

--  作者:tld
--  发布时间:2020/2/11 5:26:00
--  
问题解决了,谢谢老师。我有些疑惑,为什么没有代码e.Cancel = True 就不能往焦点单元格写数据?有什么规则吗?
--  作者:有点蓝
--  发布时间:2020/2/11 8:43:00
--  
只要是在设计事件里打开窗口的都需要这样用,这是固定用法:http://www.foxtable.com/webhelp/topics/1499.htm