以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]更新了7.22的版本后,代码执行出现了问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=91986)

--  作者:rophy0952
--  发布时间:2016/10/24 9:07:00
--  [求助]更新了7.22的版本后,代码执行出现了问题
窗口文本的dataformat事件中,在更新版本前,e.value的值小于1或者为空的时候,临时表《生产打印表》新增一行,然后赋值。但在更新版本之后,e.value的值为空的时候,临时表《生产打印表》无法新增一行,也无法然后赋值。
以下内容为程序代码:

1 Dim dd As String = Forms("生产任务单").controls("生产单号").text
2 If e.value < 1 Then
3 Tables("生产任务单_生产打印表").addnew(1)
4 Dim dr As DataRow = DataTables("生产主表").SQLfind("生产单号 = \'"& dd &"\'and 作废 = 0")
5 If dr IsNot Nothing Then
6 Tables("生产任务单_生产打印表").Current("蒸镀规格") = dr("蒸镀规格")
7 End If
8 End If
9 If e.value >= 1 Then
10 Tables("生产任务单_生产打印表").addnew(e.value)
11 Tables("生产任务单_生产打印表").AllowEdit = 1
12 For Each r As Row In Tables("生产任务单_生产打印表").Rows
13 Dim dr1 As DataRow = DataTables("生产主表").SQLfind("生产单号 = \'"& dd &"\'and 作废 = 0")
14 If dr1 IsNot Nothing Then
15 r("蒸镀规格") = dr1("蒸镀规格")
16 Tables("生产任务单_生产打印表").AllowEdit = 0
17 End If
18 Next
19 End If

--  作者:有点蓝
--  发布时间:2016/10/24 9:23:00
--  
1、dataformat事件不是用来做这种事的,建议改到其它事件
2、
If e.value < 1 Then
改为
If e.value Is nothing orelse e.value < 1 Then
3、更新到最新7-29版本

--  作者:rophy0952
--  发布时间:2016/10/24 10:01:00
--  
因为在enter 和leave 等事件无法执行这个代码,所以没有办法只能用dataformat这个事件,按照您建议的代码录入以后,还是没有新增及赋值。我现在的版本是最新的版本了,没有让我更新的提示
--  作者:有点蓝
--  发布时间:2016/10/24 10:14:00
--  
改到valuechanged事件
--  作者:rophy0952
--  发布时间:2016/10/24 11:57:00
--  
file:///C:/Users/Administrator/Desktop/QQ截图20161024115838.jpg

没有valuechange这个事件呢!

--  作者:有点蓝
--  发布时间:2016/10/24 12:07:00
--  
http://www.foxtable.com/webhelp/scr/0769.htm


上例子

--  作者:rophy0952
--  发布时间:2016/10/24 12:37:00
--  
第一行件数为空的时候,打开窗口后临时表“生产打印表”无法新增行,而我设定的是当“件数”的值小于或空白时,“生产打印表”新增一行。第二行件数有数值的时候,打开窗口后临时表“生产打印表”就可以新增相应的行数(符合设定的要求)。现已将“件数”改成文本框,代码放在了valuechanged事件内了。之前旧版本一直是可以的,就是在更新了版本后现出的这个问题。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.foxdb

[此贴子已经被作者于2016/10/24 13:01:07编辑过]

--  作者:有点蓝
--  发布时间:2016/10/24 14:40:00
--  
代码写到窗口afterload

Dim dd As String = Forms("生产任务单").controls("生产单号").text
Dim drCur As Row = Tables("生产主表").Current
If drCur IsNot Nothing Then
    If drCur.IsNull("件数") OrElse drCur("件数") < 1 Then
        Dim r As Row =Tables("生产任务单_生产打印表").addnew(1)
        Dim dr As DataRow = DataTables("生产主表").SQLfind("生产单号 = \'"& dd &"\'and 作废 = 0")
        If dr IsNot Nothing Then
            r("蒸镀规格") = dr("蒸镀规格")
        End If
    Else
        Tables("生产任务单_生产打印表").addnew(drCur("件数"))
        Tables("生产任务单_生产打印表").AllowEdit = True
        Dim dr1 As DataRow = DataTables("生产主表").SQLfind("生产单号 = \'"& dd &"\'and 作废 = 0")
        If dr1 IsNot Nothing Then
            For Each r As Row In Tables("生产任务单_生产打印表").Rows
                r("蒸镀规格") = dr1("蒸镀规格")
            Next
            Tables("生产任务单_生产打印表").AllowEdit = False
        End If
    End If
End If