以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [讨论]保存按钮代码  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=107148)

--  作者:cd_tdh
--  发布时间:2017/9/22 9:48:00
--  [讨论]保存按钮代码

老师,每次打开项目第一次录入数据,到调试77出现后,那一行数据就不见了,重新加载表,数据又出来了,后面有项目经理,项目总工,送审日期及登记人、登记日期、签订状态

列没有保存起,重新加载后在录入,又不会有问题,我保存按钮代码如下,请老师看看哪儿有问题啊:

\'判断是否为空
Dim nms() As String = {"项目编码","所属机构","项目类别","招标方式","项目名称","建设单位","合同金额","合同工期","开工日期","项目经理","项目总工"}
Dim ep As String = ""
For Each nm As String In nms
    If Tables("合同签订").current.isnull(nm) Then
        ep= nm
        Exit For
    End If
Next
If ep > "" Then
    messagebox.show(ep & "不能为空")
    Return
End If

MessageBox.Show(66)
Dim a As Row = Tables("合同签订").Current
If Tables("合同签订").current("合同签订状态") = Nothing Then  \'AndAlso _UserPost <> "管理员" Then
    a("登记人") = _UserXingMing
    a("登记日期") = Date.Now
    a("合同签订状态") = "待总公司经营部审核"
Else
End If

MessageBox.Show(77)
With Tables("合同签订")
    If .Current IsNot Nothing Then
        .Current.Save()
    End If
End With

MessageBox.Show(88)
\'通知经营部经理审核
Dim r As Row  = Tables("合同签订").Current
r.Save()
For Each dr As DataRow In DataTables("账号密码").sqlSelect("职务 = \'经营部经理\'")
    QQClient.Send(dr("部门") & "." & dr("姓名"),"+@|" & r("_Identify") & "|" & r("项目名称") & "|" & _UserXingMing,True)
Next

[此贴子已经被作者于2017/9/22 10:07:54编辑过]

--  作者:有点甜
--  发布时间:2017/9/22 10:13:00
--  

看看你的表事件 datacolchanged、beforesavedatarow,看看是不是有什么冲突的代码。

 

你可以逐个事件删除代码进行排查。

 

实在不行,就做个可以测试的例子发上来看看。


--  作者:cd_tdh
--  发布时间:2017/9/22 11:01:00
--  

老师,我做的测试项目貌似又没问题,请帮我看看,录入直接选择的项目名称

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目3.foxdb


--  作者:cd_tdh
--  发布时间:2017/9/22 11:24:00
--  

是这一段代码有问题,(2)都没执行

MessageBox.Show(1)

If e.DataCol.Name  = "合同签订状态"
    If e.DataRow("合同签订状态") = "已审批完成" Then

MessageBox.Show(2)
        Dim nma() As String = { "_Identify","项目编码","所属机构","项目类别","项目名称","合同金额","合同工期","开工日期","竣工日期","项目经理","项目总工" }     \'合同签订数据来源列
        Dim nmb() As String = {"临时列","项目编码","所属机构名称","项目类别","项目名称","合同金额","合同工期","开工日期","竣工日期","项目经理","技术负责人" }   \'业绩管理数据接收列
        e.DataRow.save
MessageBox.Show(3)
        Dim dr As DataRow = DataTables("业绩管理").AddNew
        For i As Integer = 0 To nma.Length - 1
            dr(nmb(i)) = e.DataRow(nma(i))
        Next
    Else
MessageBox.Show(4)
        SystemReady = False
        DataTables("业绩管理").deletefor("临时列 = \'" & e.DataRow("_Identify") & "\'")
        SystemReady = True
MessageBox.Show(5)
    End If
End If

[此贴子已经被作者于2017/9/22 11:36:42编辑过]

--  作者:有点甜
--  发布时间:2017/9/22 11:39:00
--  

1、看看 业绩管理表 的表事件代码,如 datacolchanged、datarowAdded 等。

 

2、看看是不是这句代码的问题 DataTables("业绩管理").deletefor("临时列 = \'" & e.DataRow("_Identify") & "\'")


--  作者:cd_tdh
--  发布时间:2017/9/22 12:04:00
--  
以下是引用有点甜在2017/9/22 11:39:00的发言:

1、看看 业绩管理表 的表事件代码,如 datacolchanged、datarowAdded 等。

 

2、看看是不是这句代码的问题 DataTables("业绩管理").deletefor("临时列 = \'" & e.DataRow("_Identify") & "\'")

合同签订表:BeforeDeleteDataRow代码如下:

If _UserPost <> "管理员" Then
    MessageBox.Show("你好,你没有删除权限,如出现录入错误,请联系系统管理员!", "提示")
    e.Cancel = True
End If

 

业绩管理表 datacolchanged,datarowAdded都没有代码,

BeforeDeleteDataRow代码如下:

If _UserGroup <> "总公司经营部" AndAlso  _UserGroup <> "超级管理员" Then
    MessageBox.Show("你好,你没有删除权限,如出现录入错误,请联系系统管理员!", "提示")
    e.Cancel = True
End If


--  作者:cd_tdh
--  发布时间:2017/9/22 12:19:00
--  
保存状态是“待总公司经营部审核”,应该还执行不到引用的代码啊,但前面的又没问题。
--  作者:有点甜
--  发布时间:2017/9/22 12:34:00
--  

确定某段代码有问题以后,再确定是哪句代码有问题。

 

请测试出结果后,再提问。


--  作者:cd_tdh
--  发布时间:2017/9/22 16:29:00
--  
有点甜老师,所有代码都执行完了,行才不见的,还是没找不到问题在哪儿了。
[此贴子已经被作者于2017/9/22 16:31:38编辑过]

--  作者:有点甜
--  发布时间:2017/9/22 16:36:00
--  
以下是引用cd_tdh在2017/9/22 16:29:00的发言:
有点甜老师,所有代码都执行完了,行才不见的,还是没找不到问题在哪儿了。
[此贴子已经被作者于2017/9/22 16:31:38编辑过]

 

1、是不是你4楼事件的代码的问题?

 

如果是,一点一点注释定位,是哪句代码有问题。

 

2、数据不见了,是不是你给表格设置了筛选filter?导致不满足条件的就隐藏了?