Foxtable(狐表)用户栏目专家坐堂 → 窗口中按钮进行新增多行操作,如何避免命令未执行完毕,而用户关闭了程序,导致数据未新增完整?


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

主题:窗口中按钮进行新增多行操作,如何避免命令未执行完毕,而用户关闭了程序,导致数据未新增完整?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
窗口中按钮进行新增多行操作,如何避免命令未执行完毕,而用户关闭了程序,导致数据未新增完整?  发帖心情 Post By:2019/8/30 20:16:00 [只看该作者]

确定按钮的click事件(一次新增刚估计好几百条), for i=1 ... dim dr as row=tables(...).addnew dr(...)=... dr(...)=... dr.save next

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/30 20:44:00 [只看该作者]

按钮第一行加上代码:
vars("runing") = true
‘按钮原来其它代码for i=1 ... dim dr as row=tables(...).addnew dr(...)=... dr(...)=... dr.save next
vars("runing") = false

项目BeforeCloseProject事件
if vars("runing") = true then
    e.Cancel = True
    msgbox("请等候命令执行完毕!")
end if

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/8/30 21:34:00 [只看该作者]

如果用户在新增行的过程中,误以为死机而通过任务管理器强制关闭程序,该如果处理啊?
[此贴子已经被作者于2019/8/30 21:35:07编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/30 21:40:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/8/30 22:20:00 [只看该作者]

看帮助有事务处理,不知道能不能解决数据的一致性问题啊?
不知道for和next的位置放的对不对啊?

Try
    Connections("数据源").BeginTransaction() '开始事务
    Dim cmd As new
SQLCommand
    cmd.ConnectionName = "数据源"

    for i=1 to 100
    cmd.CommandText = "Insert Into 表1 (列名1, 列名2, 列名3....) Values(值1, 值2, 值3...)"
    cmd.
ExecuteNonQuery
    Connections("数据源").Commit '提交事务,所有操作生效
    next
Catch ex As Exception '如果出错
    Connections("数据源").Rollback() '回滚事务,撤销所有操作


End Try
[此贴子已经被作者于2019/8/30 22:20:15编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/30 22:22:00 [只看该作者]

可以,但是循环多,程序一样会卡住

    for i=1 to 100
    cmd.CommandText = "Insert Into 表1 (列名1, 列名2, 列名3....) Values(值1, 值2, 值3...)"
    cmd.
ExecuteNonQuery
    next
    Connections("数据源").Commit '换一下位置
Catch ex As Exception '如果出错 
    Connections("数据源").Rollback() '回滚事务,撤销所有操作

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/18 15:26:00 [只看该作者]


这种导出报表,该怎么用进度条来显示进度啊?感觉应该是在Dim dlg As New SaveFileDialog之前加一个进度条显示,之后加一个进度条显示。不知道该怎么计算程序运行的总体时间。
加了两行打开模式窗口的代码后,程序一直停留在模式窗口这,模式窗口一直没关闭掉,不知道怎么回事。
forms("等待窗口").open()
Dim jb As New SQLJoinTableBuilder("查询表1","租赁项目结转明细表")
jb.C
jb.AddTable("租赁项目结转明细表","合同编号","租赁合同结转情况表","合同编号",JoinModeEnum.Left)
jb.AddCols("{租赁项目结转明细表}.合同编号", "客户名称","房间名称","项目名称","租赁类别","合同开始日期","合同终止日期", "应结转租金税额","应结转租金金额","应结转服务费税额","应结转服务费金额","应结转日期","实际结转日期","红冲确认人","红冲确认日期")
'jb.AddCols("{租赁项目结转明细表}.合同编号", "客户名称","房间名称","项目名称","租赁类别", "应结转租金税额","应结转租金金额","应结转服务费税额","应结转服务费金额","应结转日期","实际结转日期","红冲确认人")
jb.filter= filter
jb.Build()
DataTables("查询表1").DataCols.Add("不含税租金金额",Gettype(Double), "isnull(应结转租金金额,0)-isnull(应结转租金税额,0)" )
DataTables("查询表1").DataCols.Add("不含税服务费金额",Gettype(Double), "isnull(应结转服务费金额,0)-isnull(应结转服务费税额,0)" )
Tables("查询表1").Cols("不含税租金金额").Move(8)
Tables("查询表1").Cols("不含税服务费金额").Move(11)

forms("等待窗口").close()

Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xlsx" '设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮
     Tables("查询表1").SaveExcel(dlg.FileName,"明细表")  '保存文件
        Dim Proc As New Process
        Proc.File = dlg.FileName
        Proc.Start()
End If

[此贴子已经被作者于2019/9/18 15:45:05编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/18 15:51:00 [只看该作者]

这种导出无法使用进度条。除非这种循环导出的用法:http://www.foxtable.com/webhelp/topics/1148.htm

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/18 15:58:00 [只看该作者]

导出执行过程中,加了模式窗口(窗口有句话,正在执行稍后……的提示)的打开和关闭,为什么模式窗口打开了,但是一直没有关闭,往下执行啊?应该怎么解决啊。
forms("等待窗口").open()
…… 

forms("等待窗口").close()
[此贴子已经被作者于2019/9/18 16:00:13编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110784 积分:563852 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/9/18 16:14:00 [只看该作者]

模式窗口是阻塞式的,和对话框一样,关闭之前,后面的代码都不会执行的

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