Foxtable(狐表)用户栏目专家坐堂 → [求助]项目发布后新增一条有默认数据的记录时出错


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

主题:[求助]项目发布后新增一条有默认数据的记录时出错

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]项目发布后新增一条有默认数据的记录时出错  发帖心情 Post By:2014/12/23 20:41:00 [显示全部帖子]

我的项目文件发布后,用的数据库是ACCESS,有一张表的窗口有个”新增一行“按钮,新增一行后就跳出错误:
.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.11.11.1
错误所在事件:[原料采购入库明细]表的[工序]列的默认值计算错误。
详细错误信息:
Cannot call this method while the script is executing.

说明一下,这个工序列我在做项目时设置了一个默认值,这张表共有四个列有默认值,所以,就跳出了四次出错信息,在项目文件中运行一点问题也没,就是发布后运行才出错,老师帮我看看怎么回事。

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 20:46:00 [显示全部帖子]

工序列写的默认值是:  "原料采购入库"  此列的数据类型是字符型
我刚才又试了下,在项目文件中一点问题也没,就是发布后出错

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 21:03:00 [显示全部帖子]

我试出来了,二个方面:
第一,将默认值去掉,在”新增一行“按钮中用代码的方式写入数据不会报错
第二,造成列的默认数据出错的原因是我点了一个”同步当前表“按钮后才会出错的,这个按钮的代码如下:CurrentTable.DataTable.Load  只要执行了这一行代码后,再点新增行就开始出错了

[此贴子已经被作者于2014-12-23 21:03:55编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 21:12:00 [显示全部帖子]

还是出错,这次弹出以下代码:
.NET Framework 版本:2.0.50727.6421
Foxtable 版本:2014.11.11.1
错误所在事件:[原料采购入库明细]表的[道次]列的默认值计算错误。
详细错误信息:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

原来的工序列已经改为代码输入了,所以,不在出错,道次列还是默认值

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 21:17:00 [显示全部帖子]

我是WIN8系统,我运行了BAT文件了

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 21:39:00 [显示全部帖子]

甜老师,用管理员运行也不行,刚才经过反复几十次的测试,终于找到出现问题的操作流程了,如下:
1、进行窗体后,先点增加一行,这时不会出错,默认值也正常出现在记录中,新增一行的代码如下:
Tables("原料采购入库明细").AddNew()
Tables("原料采购入库明细").Current("录入人") = user.Name
Tables("原料采购入库明细").Current("录入日期") = Today()

2、不做任何其他操作,选中刚才新增的一行,点删除按钮,代码如下:
If Tables("原料采购入库明细").Current("审核")=True Then
    MessageBox.Show("本条记录已经锁定并且写入工序合并表,如要删除请先解锁!", "提示",MessageBoxButtons.ok, MessageBoxIcon.error)
Else
    Dim Result As DialogResult
    Result = MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        Tables("原料采购入库明细").Current.Delete
        e.Form.Controls("ComboBox_单据号").ComboList = DataTables("原料采购入库明细").GetComboListString("单据号")
        e.Form.Controls("ComboBox_卷号").ComboList = DataTables("原料采购入库明细").GetComboListString("卷号")
        e.Form.Controls("ComboBox_审核").ComboList = DataTables("原料采购入库明细").GetComboListString("审核")
    End If
End If

3、点同步当前表按钮,代码如下:CurrentTable.DataTable.Load

此时,再点新增一行,就必出现上面的错误了,如果进入系统后,先点同步当前表按钮,之前再按上面流程操作,就不会出错
[此贴子已经被作者于2014-12-23 21:39:46编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2014/12/23 21:43:00 [显示全部帖子]

我知道是,就是右点程序名,选以管理员身份运行

 回到顶部