以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  明细表录入数据时能否一次选择多行并自动填充  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17277)

--  作者:zpx_2012
--  发布时间:2012/3/8 17:56:00
--  明细表录入数据时能否一次选择多行并自动填充
请教各位老师,
在明细表录入数据时一次只能选择一行,这样效率较低。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图1.jpg
图片点击可在新窗口打开查看

如果要一次性选择多行,比如弹出一个复选组合框那样可以选取多个确定后自动填充到明细表要怎么办?
谢谢!


--  作者:zpx_2012
--  发布时间:2012/3/8 21:50:00
--  
怎么没有人指点啊,是不是问题不清楚,其实就是想实现录入明细表的记录时可以一次选择多行然后自动填充进去。比如
在一张入库单的明细表中,可能进了10种产品,可以在弹出的选择框(或列表之类)中勾选出这10种产品一次全部添加进明细表中(明细表中的行会根据所选择的产品多少自动增加行),然后再来分别填写数量,单价等就可以,不要一次只能选择一种输入数量然后再选择第二种,那样重复操作太多次。
--  作者:czy
--  发布时间:2012/3/8 21:59:00
--  
建一个窗口,用复选组合框,在组合框中选择多值,再向指定表写入就行了。
--  作者:zpx_2012
--  发布时间:2012/3/9 8:26:00
--  
谢谢CZY,但不懂得怎么样将选择的多个值逐行写入,而且若选择的值是原来明细表中已经存在的则不要再写入。
请邦忙写一下代码,再次感谢!

图片点击可在新窗口打开查看此主题相关图片如下:qq截图1.jpg
图片点击可在新窗口打开查看



--  作者:blackzhu
--  发布时间:2012/3/9 8:43:00
--  

Dim Str As String = e.Form.Controls("CheckedComboBox1").Value
Dim Multi As String = Str
Dim Values() As String
Values = Multi.split(",")
For Index As Integer = 0 To Values.Length - 1
    Dim r As Row = Tables("表名").AddNew
    r("列名")= Values(Index)
Next

 

  试试这个,分割符用 , 号.


--  作者:狐狸爸爸
--  发布时间:2012/3/9 9:25:00
--  

呵呵,黑朱兄,Multi是多余的,怎样改一下比较:

 

Dim Str As String = e.Form.Controls("CheckedComboBox1").Value
Dim Values() As String
Values = Str.split(",")
For Index As Integer = 0 To Values.Length - 1
    Dim r As Row = Tables("表名").AddNew
     r("列名")= Values(Index)
Next


--  作者:zpx_2012
--  发布时间:2012/3/9 9:25:00
--  
谢谢blackzhu,可以了,但还有一个问题,就是如果选取了原来明细表中已经有的产品编码,不要再增加进去。

图片点击可在新窗口打开查看此主题相关图片如下:qq截图2.jpg
图片点击可在新窗口打开查看



--  作者:狐狸爸爸
--  发布时间:2012/3/9 9:31:00
--  

大概如此:

 

Dim Str As String = e.Form.Controls("CheckedComboBox1").Value
Dim Values() As String
Values = Str.split(",")
For Index As Integer = 0 To Values.Length - 1

     dim h as boolean

      h =false

     for each r as row in Tables("表名").Rows

         if r("列名") = values(index)

            h = true

            exit for

         end if

     next

      if h = false then
           Dim r As Row = Tables("表名").AddNew
          r("列名")= Values(Index)

      end if
Next


--  作者:zpx_2012
--  发布时间:2012/3/9 11:51:00
--  
谢谢狐狸爸爸&blackzhu,完全可以了。
--  作者:blackzhu
--  发布时间:2012/3/9 14:17:00
--  
以下是引用狐狸爸爸在2012-3-9 9:25:00的发言:

呵呵,黑朱兄,Multi是多余的,怎样改一下比较:

 

Dim Str As String = e.Form.Controls("CheckedComboBox1").Value
Dim Values() As String
Values = Str.split(",")
For Index As Integer = 0 To Values.Length - 1
    Dim r As Row = Tables("表名").AddNew
     r("列名")= Values(Index)
Next

 

 

  老大,终归有那么一天,我写得代码你不会再提建议的. 继续努力.