以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 含有复选框表的窗口的多窗口调用问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81024) |
-- 作者:judyhu2008 -- 发布时间:2016/2/16 17:42:00 -- 含有复选框表的窗口的多窗口调用问题 我有一个存货选择窗口,想在采购订单、销售订单和生产记录中,需要用到存货相关信息时,都可以调用存货选择窗口。 现在在存货选择窗口放了个确认键,如果确认,则把信息调用到采购订单表中。 但问题来了,在存货选择窗口的确认建的CLICK事件,我需要写把数据调用到哪个窗口。 Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} Dim Cols2() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} For Each r1 As Row In Tables("存货选择_table1").GetCheckedRows For i As Integer = 0 To Cols1.Length -1 Dim r2 As Row = Tables("订单明细").Current r2(Cols2(i)) = r1(Cols1(i)) Next Next Forms("存货选择").close 如上,有没有办法,可以让这个确认按钮,同时对其它几个窗口调用的时候有效呢,而不是只能指定一个窗口。 |
-- 作者:大红袍 -- 发布时间:2016/2/16 18:23:00 -- 打开窗口的时候,用变量记录其值,如
vars("表名") = "订单明细" Forms("存货选择").Open
---------------
然后这样写代码
Dim r2 As Row = Tables(vars("表名")).Current |
-- 作者:judyhu2008 -- 发布时间:2016/2/16 20:30:00 -- 谢谢大红袍老师,总是很及时,很帮助 :) 我上面的代码,只能复制一行到选定的表中,如果想复制所有选中的行到选定的表中,需要如何写啊?
|
-- 作者:judyhu2008 -- 发布时间:2016/2/16 20:57:00 -- Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} Dim Cols2() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} For Each r1 As Row In Tables("存货选择_table1").GetCheckedRows Dim r2 As Row = Tables(vars("表名")).current For i As Integer = 0 To Cols1.Length -1 r2(Cols2(i)) = r1(Cols1(i)) Next Tables(vars("表名")).AddNew Next Forms("存货选择").close 我写出以上代码,也可以用了,但是都会多出一行,想着用DO LOOP语句应该可以解决问题。 还是请大红袍老师帮我看看吧
|
-- 作者:大红袍 -- 发布时间:2016/2/16 21:09:00 -- Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"}
Dim Cols2() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"}
For Each r1 As Row In Tables("存货选择_table1").GetCheckedRows
Dim r2 As Row = Tables(vars("表名")).AddNew
For i As Integer = 0 To Cols1.Length -1
r2(Cols2(i)) = r1(Cols1(i))
Next
Next
Forms("存货选择").close
|
-- 作者:judyhu2008 -- 发布时间:2016/2/16 21:15:00 -- 好像不行,变成第一行是空行了 因为CURRENT那行没有被赋值,然后多新增一行了,难道要先写DELETE一行?
[此贴子已经被作者于2016/2/16 21:20:46编辑过]
|
-- 作者:大红袍 -- 发布时间:2016/2/16 22:17:00 -- Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} |
-- 作者:judyhu2008 -- 发布时间:2016/2/16 22:30:00 -- Dim r2 As Row = iif(t.current Is Nothing OrElse t.Current.Index = t.Rows.Count-1, t.AddNew, t.Current) 比如我复选了三行,按这个代码,第一次的当前行还是会空出,后面再增加三行; 我把t.addnew和t.current换一个位置,那第一次的当前行是会被赋值,但增加的第三行则为空了。 其实正常来说,就算我当前行是有值的,我在当前行选择存货,从当前行到第三行,是先给当时行赋值,再增加两行就可以了。 逻辑我明白,就是不知道FT怎么写。
|
-- 作者:大红袍 -- 发布时间:2016/2/16 22:36:00 -- Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} Dim Cols2() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"} Dim count As Integer = 0 For Each r1 As Row In Tables("存货选择_table1").GetCheckedRows Dim t As Table = Tables(vars("表名")) Dim r2 As Row = iif(count = 0, t.current, t.addnew) count += 1 For i As Integer = 0 To Cols1.Length -1 r2(Cols2(i)) = r1(Cols1(i)) Next Next Forms("存货选择").close
|
-- 作者:judyhu2008 -- 发布时间:2016/2/16 22:54:00 -- 用这个代码,第二行会出现空行。复选框的值是都写入到表中了。 但是多增加了一行,且第二行都是为空。 如我只复选了一行,但执行这个代码后,除了复选框的内容写入到表中,还会新增加一个空行。 对不起,老师,我的系统东西太多了,数据也都已经弄好。不方便传上去,否则可能你一次就搞定了。 代码,我看上去也是没有问题的,不知道是什么情况。
[此贴子已经被作者于2016/2/16 22:57:45编辑过]
|