以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  假设录入了11,22,33三个序列号,那么入库单为“未领用”状态,那么如何实现这三个序列号,分成三条不同的记录呢?也就是生成三行数据呢?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=67753)

--  作者:李孝春
--  发布时间:2015/4/30 17:35:00
--  假设录入了11,22,33三个序列号,那么入库单为“未领用”状态,那么如何实现这三个序列号,分成三条不同的记录呢?也就是生成三行数据呢?


 

 

[此贴子已经被作者于2015/4/30 18:14:44编辑过]

--  作者:李孝春
--  发布时间:2015/4/30 18:12:00
--  

问题1:出库单中如何仅加载为“出库操作”的表数据,但是同时又不影响实时库存的计算!

 

问题2:由于出库会存在批量出库状况,那就是多个序列号被同时选择后,状态为领用状态,

假设选择了11,22,33三个序列号,该出库单为”已领用“状态,那么如何实现入库的时候11,22,33三个序列号的对应是否领用为“已领用”呢?

 

问题3:同样入库会存在同一型号产品,几个序列号批量录入,

假设录入了11,22,33三个序列号,那么入库单为“未领用”状态,那么如何实现这三个序列号,分成三条不同的记录呢?也就是生成三行数据。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报价业务.foxdb

[此贴子已经被作者于2015/4/30 18:45:20编辑过]

--  作者:大红袍01
--  发布时间:2015/5/3 22:46:00
--  

1、不行,不然就要改代码,参考 http://www.foxtable.com/help/topics/2926.htm

 

2、当序列号是有逗号形式的,比如 11,22,33 那就把它改成 \'11\',\'22\',\'33\' 也就是用代码 "\'" & 序列号.Replace(",", "\',\'") & "\'"

 

Datatables("库存表").ReplaceFor(是否领取, "已领取", "序列号 in (\'" & "\'" & 序列号.Replace(",", "\',\'") & "\') and 操作类型 = \'入库操作\'")

 

3、用逗号分隔字符串

 

For Each s As String in 序列号.Split(",")

    \'增加行

Next


--  作者:李孝春
--  发布时间:2015/5/4 10:16:00
--  回复:(大红袍01)1、不行,不然就要改代码,参考 ht...

谢谢你

 

但是问题3运行后效果不是预想中的 求继续指导

 

方框打钩部分希望是全部一样的 1,2,3,4,5希望这行不显示 红色标注的1 2 3 4 5 应当显示出来

 

代码:

Select Case e.DataCol.Name
    Case "序列号"
        Dim Multi As String = "" & e.DataRow("序列号") & ""
        For Each s As String In Multi.Split(",")
            Tables("入库单_table1").AddNew()
        Next
End Select

 


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

 

 

问题2 这个代码放在变动咧事件里么?

[此贴子已经被作者于2015/5/4 10:15:52编辑过]

--  作者:Bin
--  发布时间:2015/5/4 10:18:00
--  

For Each s As String in 序列号.Split(",")

    \'增加行

Next


如果用这个代码,肯定是分开多行的,你是要分开多行还是要不分开?


--  作者:大红袍
--  发布时间:2015/5/4 10:21:00
--  

3、

 

Select Case e.DataCol.Name
    Case "序列号"
        If e.NewValue IsNot Nothing Then
            SystemReady = False
            Dim Multi As String = e.DataRow("序列号")
            Dim ary() As String = Multi.Split(",")
            e.DataRow("序列号") = ary(0)
            For i As Integer = 1 To ary.Length - 1
                Dim nr As Row = Tables("入库单_table1").AddNew()
                nr("序列号") = ary(i)
            Next
           
            SystemReady = True
        End If
End Select


--  作者:大红袍
--  发布时间:2015/5/4 10:21:00
--  
2、放在Datacolchanged事件,或者保存按钮里面。
--  作者:李孝春
--  发布时间:2015/5/4 10:27:00
--  回复:(大红袍)3、 Select Case e.DataCol...

序列号列正常了 但是其他公共数据还是空白 该怎么赋值为第一个对应的值呢?也就是说1 2 3 4 5 序列号不同 但是其他数据值是相同的


--  作者:大红袍
--  发布时间:2015/5/4 10:29:00
--  
以下是引用李孝春在2015/5/4 10:27:00的发言:

序列号列正常了 但是其他公共数据还是空白 该怎么赋值为第一个对应的值呢?也就是说1 2 3 4 5 序列号不同 但是其他数据值是相同的

 

其它数据的值,你就不能自己赋值一下?怎么说你也是弄几年foxtable了啊

 

nr("产品") = e.DataRow("产品")
--  作者:李孝春
--  发布时间:2015/5/4 11:15:00
--  回复:(大红袍)以下是引用李孝春在2015/5/4 10:27:0...

呵呵 我是断断续续弄了那久 但是差不多好几个月才弄一次 所以实际时间没有那么长

 

新增多个序列号 并保存 当时全部显示,但是一旦关闭窗体后 再次打开就永远只有第一条 哎 求纠正


图片点击可在新窗口打开查看此主题相关图片如下:123.gif
图片点击可在新窗口打开查看

 

保存数据事件代码为:

Dim nms As New List(Of String)
Dim drs As New List(of DataRow)
With DataTables("入库单_table1")
    nms = .GetValues("产品")
    For Each nm As String In nms \'找出每个产品的第一行数据, 添加到集合drs中
        drs.Add(.Find("产品 = \'" & nm & "\'", "[_SortKey]"))
    Next
    For Each dr As DataRow In drs
        .DataCols("入库").RaiseDataColChanged(dr)
    Next
End With

 

DataTables("入库单_Table1").Save()

 


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:报价业务.foxdb