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


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

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

帅哥哟,离线,有人找我吗?
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

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
guosheng
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/18 17:00:00 [显示全部帖子]

我把窗口类型改成 独立窗口,并开启了计时器每秒钟执行一次。
窗口的afterload和timetick事件加入:e.Form.Controls("Label2").text=Format(Date.now, "T")
为什么label标签文本不发生变化啊(如果单独运行这个窗口,label2的文本能变化的),该怎么解决啊?

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


加好友 发短信
等级:四尾狐 帖子:896 积分:7535 威望:0 精华:0 注册:2017/12/27 14:19:00
  发帖心情 Post By:2019/9/18 21:04:00 [显示全部帖子]

我的理解是,编写3个自定义函数,函数1导出excel函数,函数2执行窗口的timertick事件(将当前时间赋值给label标签),函数3同步函数获取函数1的返回状态(当另存为Excel的窗口打开后则记录返回状态结果),然后用异步方式调用函数1和函数2。不知道理解的对不对啊?
[此贴子已经被作者于2019/9/18 21:08:02编辑过]

 回到顶部