以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  利用下拉窗口进行赋值,该怎么改成事务的方式处理啊?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=140468)

--  作者:guosheng
--  发布时间:2019/9/6 9:33:00
--  利用下拉窗口进行赋值,该怎么改成事务的方式处理啊?
下拉窗口的dropdownclosed事件:
If e.Form.dropdownbox.name="启动发票结转"
    If e.Selected Then \'如果选择了值
        Dim tbl As Table = Tables("增加合同下拉窗口_table1")
        If tbl.Current IsNot Nothing Then
            Tables("租赁合同结转情况表").current("合同编号")=tbl.current("合同编号")
            Tables("租赁合同结转情况表").current("合同属性")=tbl.current("合同属性")
    Tables("租赁合同结转情况表").current("合同状态")=tbl.current("合同状态")
            Tables("租赁合同结转情况表").current("项目名称")=tbl.current("项目名称")
        End If
    End If
End If
引用下拉窗口的dropdownbox 所在的模式窗口(窗口控件已绑定表字段)的 确定按钮
Dim drr1 As Row = Tables("租赁合同结转情况表").current
If e.Form.Controls("启动发票结转").value Is Nothing
    messagebox.show("合同相关信息不能为空")
Else
    drr1("创建日期")=rq
    drr1("创建人")=_UserName
    drr1.save
endif

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

[此贴子已经被作者于2019/9/6 9:34:55编辑过]

--  作者:有点蓝
--  发布时间:2019/9/6 10:00:00
--  
没看懂。有什么问题?
--  作者:guosheng
--  发布时间:2019/9/6 10:17:00
--  
以上利用下拉窗口进行赋值的操作,怎么改成帮助中,"数据库事务"的方式赋值啊?如果采用这种方式,窗口的控件是不是就不能绑定到表字段啊?

--  作者:有点蓝
--  发布时间:2019/9/6 10:22:00
--  
这种无法使用事务,事务只能使用sql更改数据才有用。

这个用法到底有什么问题?和控件绑定有什么关系?

--  作者:guosheng
--  发布时间:2019/9/6 10:29:00
--  
问题是:点击 确定按钮后,增加的数据量(我贴到只是部分赋值操作)比较大,不用 事务处理,怕用户端的操作没有执行完毕啊。
我的思路是(还没测):把窗口的控件跟表字段不关联,然后 点击 确定 按钮后,执行sql insert语句,把窗口控件的值传给 insert的value参数,如果sql没执行完毕,就回滚。不知道思路对不对啊。

如果这个思路没问题的话,insert成功后,怎么找到这一行(找到_identify),追载或加载到用户本地啊?
[此贴子已经被作者于2019/9/6 10:38:30编辑过]

--  作者:有点蓝
--  发布时间:2019/9/6 10:40:00
--  
不管窗口控件有多少个,如果都是绑定一行数据,那么没有必要使用事务。除非是涉及到几个表的数据需要同步操作。这时可以使用sql进行事务操作
--  作者:guosheng
--  发布时间:2019/9/6 16:54:00
--  
Try
     Connections("cs2").BeginTransaction() \'开始事务
      Dim cmd As new SQLCommand
      cmd.C

      cmd.CommandText = "Insert Into 租赁合同结转情况表……     ‘第一次新增操作
      cmd.ExecuteNonQuery
      ……
      cmd.CommandText = "Insert Into 租赁合同结转情况表……    ’第二次新增操作
      cmd.ExecuteNonQuery
     ……
      查询 第一次新增的行是否存在——应该怎么写代码(功能是需要步骤项某一行写数据,执行下边的update。想实现若存在符合条件的行就update,不存在就insert)? 可以用sqlfind查找吗? Dim drf As DataRow=DataTables("租赁合同结转情况表").sqlfind(……
      cmd.CommandText = "UPDAT  ……
      cmd.ExecuteNonQuery

       ……
      cmd.CommandText = "Insert Into 租赁合同结转情况表……    ’第三次新增操作
      cmd.ExecuteNonQuery

        Connections("cs2").Commit

     Catch ex As Exception \'如果出错
        Connections("cs2").Rollback() \'回滚事务,撤销所有操作
   End Try

[此贴子已经被作者于2019/9/6 16:58:28编辑过]

--  作者:有点蓝
--  发布时间:2019/9/6 16:55:00
--  
事务没有结束,无法查询新增的数据的。

dim cnt as integer = cmd.ExecuteNonQuery
if cnt > 0 then msgbox(插入成功)

--  作者:guosheng
--  发布时间:2019/9/6 17:26:00
--  
目前需求是这样的,
有一个接口传输来的数据:
编号   类别     金额
A01   租金     10            json第1条数据
A01   服务费   11           json第2条数据
A01   违约金   12            json第3条数据
……
接收数据的表结构:
编号   租金金额     服务费金额   违约金金额     ……
A01    10             11               12

因为接收的数据比较多,我想用事务进行处理:
目前做法是:
1、循环json,
2、看是否有编号为 A01 的行,若不存在则 insert,否则update。
但是若事务未提交,则怎么判断,是否insert过符合条件的行啊?
或者我的思路有问题吗,应该怎么改啊。

[此贴子已经被作者于2019/9/6 17:29:12编辑过]

--  作者:有点蓝
--  发布时间:2019/9/6 17:37:00
--  
json发上来看看