Foxtable(狐表)用户栏目专家坐堂 → 含有复选框表的窗口的多窗口调用问题


  共有2743人关注过本帖树形打印复制链接

主题:含有复选框表的窗口的多窗口调用问题

美女呀,离线,留言给我吧!
judyhu2008
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
含有复选框表的窗口的多窗口调用问题  发帖心情 Post By: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

如上,有没有办法,可以让这个确认按钮,同时对其它几个窗口调用的时候有效呢,而不是只能指定一个窗口。

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/16 18:23:00 [只看该作者]

打开窗口的时候,用变量记录其值,如

 

vars("表名") = "订单明细"

Forms("存货选择").Open

 

---------------

 

然后这样写代码

 

Dim r2 As Row = Tables(vars("表名")).Current


 回到顶部
美女呀,离线,留言给我吧!
judyhu2008
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
  发帖心情 Post By:2016/2/16 20:30:00 [只看该作者]

谢谢大红袍老师,总是很及时,很帮助 :)

我上面的代码,只能复制一行到选定的表中,如果想复制所有选中的行到选定的表中,需要如何写啊?

 回到顶部
美女呀,离线,留言给我吧!
judyhu2008
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
  发帖心情 Post By: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语句应该可以解决问题。
还是请大红袍老师帮我看看吧

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
  发帖心情 Post By:2016/2/16 21:15:00 [只看该作者]

好像不行,变成第一行是空行了
因为CURRENT那行没有被赋值,然后多新增一行了,难道要先写DELETE一行?
[此贴子已经被作者于2016/2/16 21:20:46编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/2/16 22:17:00 [只看该作者]

Dim Cols1() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"}
Dim Cols2() As String = {"存货编码","存货中文名","规格型号","品牌","主计量单位"}
For Each r1 As Row In Tables("存货选择_table1").GetCheckedRows
    Dim t As Table = Tables(vars("表名"))
    Dim r2 As Row = iif(t.current Is Nothing OrElse t.Current.Index = t.Rows.Count-1, t.AddNew, t.Current)
    For i As Integer = 0 To Cols1.Length -1
        r2(Cols2(i)) = r1(Cols1(i))
    Next
Next
Forms("存货选择").close


 回到顶部
美女呀,离线,留言给我吧!
judyhu2008
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
  发帖心情 Post By: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怎么写。


 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By: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
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:154 积分:1217 威望:0 精华:0 注册:2015/10/29 16:22:00
  发帖心情 Post By:2016/2/16 22:54:00 [只看该作者]

用这个代码,第二行会出现空行。复选框的值是都写入到表中了。
但是多增加了一行,且第二行都是为空。

如我只复选了一行,但执行这个代码后,除了复选框的内容写入到表中,还会新增加一个空行。

对不起,老师,我的系统东西太多了,数据也都已经弄好。不方便传上去,否则可能你一次就搞定了。
代码,我看上去也是没有问题的,不知道是什么情况。
[此贴子已经被作者于2016/2/16 22:57:45编辑过]

 回到顶部
总数 11 1 2 下一页