Foxtable(狐表)用户栏目专家坐堂 → 怎么判断数据是否保存


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

主题:怎么判断数据是否保存

帅哥哟,离线,有人找我吗?
307587760
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:134 积分:1037 威望:0 精华:0 注册:2014/12/15 10:51:00
怎么判断数据是否保存  发帖心情 Post By:2015/12/2 19:50:00 [只看该作者]

请教老师:
我有10行数据,删除了一条,Table里面就剩下了9条数据,DataTable里面也只剩下了9条数据,但是即使这样,我的数据还是没有保存成功,因为我关闭项目的时候系统会问我数据是否需要保存
重点是我想做一个判断,怎么能断定数据保存了没有,系统怎么检测到我的数据没有保存的呢,求老师指点,谢谢!

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


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


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


加好友 发短信
等级:幼狐 帖子:134 积分:1037 威望:0 精华:0 注册:2014/12/15 10:51:00
  发帖心情 Post By:2015/12/3 10:15:00 [只看该作者]

老师这个不行啊,我写在了DrawCell中,但是代码没有走到这里,请问系统每次退出的时候是怎么判断数据没有保存的呢

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


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

上传例子说明什么问题啊。

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


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

以下是引用307587760在2015/12/3 10:15:00的发言:
老师这个不行啊,我写在了DrawCell中,但是代码没有走到这里,请问系统每次退出的时候是怎么判断数据没有保存的呢

 

http://www.foxtable.com/help/topics/0668.htm

 


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


加好友 发短信
等级:幼狐 帖子:134 积分:1037 威望:0 精华:0 注册:2014/12/15 10:51:00
  发帖心情 Post By:2015/12/3 12:28:00 [只看该作者]

老师,我简单做了一个例子,但是问题没有重现。但是我可以肯定的是DrawCell里面的代码有问题,还请老师帮忙分析一下代码:
'If DataTables("产值明细表").HasChanges Then
'Exit Sub
'End If
Dim v1() As String = {"申报日期","所属期间","开发项目","开发产品","合同名称","乙方"}
Dim FreezeCols As New List(of String)
FreezeCols.AddRange(v1) '将数组中的元素全部加入到集合中
If not FreezeCols.Contains(e.Col.Name) Then
    If e.Row.IsNull("审核人员") Or trim(e.Row("审核人员"))=""  Then
        e.Style = "未审核"
    End If
End If

If not e.Row.IsNull("乙方") Then
    If e.Col.Name = "本月付款比例" Then
        If e.Row(e.Col.Name)>1 Or e.Row(e.Col.Name)< 0 Or e.Row.IsNull(e.Col.Name)
            e.Style = "错误" '那么用"不及格"样式绘制单元格
        End If
    End If
    If e.Col.Name = "申报产值" Then
        If e.Row.IsNull(e.Col.Name) = True
            e.Style = "错误" '那么用"不及格"样式绘制单元格
        End If
    End If
End If
蓝色的是根据上面的指导进行了判断,保存,但是没起作用,所以又屏蔽了。如若删除一行数据后,到红色行就开始报错。

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

[此贴子已经被作者于2015/12/3 12:28:24编辑过]

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


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

代码没有问题。你去点击看哪里的事件有错

 

http://www.foxtable.com/help/topics/1485.htm

 


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


加好友 发短信
等级:幼狐 帖子:134 积分:1037 威望:0 精华:0 注册:2014/12/15 10:51:00
  发帖心情 Post By:2015/12/7 16:53:00 [只看该作者]

你好,老师,这个问题已经找到原因了,但是还是没有解决方案,所以还请老师帮忙看看如何解决,代码如下:
 If e.Table.Current Is Nothing Or DataTables(e.Table.Name).DataCols.Contains("乙方")=False  Then
                Tables("产值情况_Table1").Filter = "[乙方] = ''"
                Forms("产值情况").Text=  "产值情况:当前未选定有效行"
            Else
                If  RibbonTabs("Common").Groups("审核").Items("单合同显示").Pressed Then
                    SQLStr=SQLStr &    " and [本月应付款] <> '0' and  [是否增量]=false and [是否预估数]=false"
                    SQLStr=SQLStr
                    Tables("产值情况_Table1").Filter = SQLStr & " and ([本月应付款] <> '0' or [申报产值]<>'0' )  and [是否预估数]=false" & ZLMode
                    Tables("产值情况_Table1").Sort ="所属期间 DESC"
                    Forms("产值情况").Text=  "单合同-产值情况"
                Else
                    Tables("产值情况_Table1").Filter = "[乙方] = '"  & e.Table.Current("乙方") & "'"  _
                    & " and [本月应付款] <> '0' and  [是否增量]=false and [是否预估数]=false"
                    
                    Tables("产值情况_Table1").Filter = "[乙方] = '"  & e.Table.Current("乙方") & "'"  _
                    & " and ( [本月应付款] <> '0' or [申报产值]<>'0' ) And [是否预估数]=false" & ZLMode
                    MessageBox.Show(Tables("产值情况_Table1").Filter)
                    '                    Tables("产值情况_Table1").Sort ="所属期间 DESC"
                    Forms("产值情况").Text= "全部合同-产值情况"
                    
                End If
            End If


我的代码如上,代码走到红色的地方时候报错,报错的条件是我删除了关键表的最后一条数据,代码在CurrentChanged 中,删除数据肯定触发了CurrentChanged,但是此时再去访问e.Table.Current("乙方"),显然是不可能的,因为此行已经被删除了
所以代码报错了,请问老师我该如何去判断e.Table.Current 是否存在呢?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目5.rar
这是一个简单的例子,我就没有做取值过滤了,直接用的弹窗来使问题重现。


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


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

BeforeDeleteDataRow

 

e.DataTable.GlobalHandler.CurrentChanged = False

 

DataRowDeleted

 

e.DataTable.GlobalHandler.CurrentChanged = True


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


加好友 发短信
等级:幼狐 帖子:134 积分:1037 威望:0 精华:0 注册:2014/12/15 10:51:00
  发帖心情 Post By:2015/12/7 17:54:00 [只看该作者]

试试,谢谢
[此贴子已经被作者于2015/12/7 17:56:20编辑过]

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