以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 窗口中按钮进行新增多行操作,如何避免命令未执行完毕,而用户关闭了程序,导致数据未新增完整? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=140175) |
-- 作者:guosheng -- 发布时间:2019/8/30 20:16:00 -- 窗口中按钮进行新增多行操作,如何避免命令未执行完毕,而用户关闭了程序,导致数据未新增完整? 确定按钮的click事件(一次新增刚估计好几百条), for i=1 ... dim dr as row=tables(...).addnew dr(...)=... dr(...)=... dr.save next |
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/8/30 21:34:00 -- 如果用户在新增行的过程中,误以为死机而通过任务管理器强制关闭程序,该如果处理啊? [此贴子已经被作者于2019/8/30 21:35:07编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/8/30 21:40:00 -- 做个提示,比如:http://www.foxtable.com/webhelp/topics/0793.htm |
-- 作者:guosheng -- 发布时间: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()
\'回滚事务,撤销所有操作 [此贴子已经被作者于2019/8/30 22:20:15编辑过]
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间: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编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/9/18 15:51:00 -- 这种导出无法使用进度条。除非这种循环导出的用法:http://www.foxtable.com/webhelp/topics/1148.htm |
-- 作者:guosheng -- 发布时间:2019/9/18 15:58:00 -- 导出执行过程中,加了模式窗口(窗口有句话,正在执行稍后……的提示)的打开和关闭,为什么模式窗口打开了,但是一直没有关闭,往下执行啊?应该怎么解决啊。 forms("等待窗口").open() …… [此贴子已经被作者于2019/9/18 16:00:13编辑过]
|
-- 作者:有点蓝 -- 发布时间:2019/9/18 16:14:00 -- 模式窗口是阻塞式的,和对话框一样,关闭之前,后面的代码都不会执行的 |