以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跟二进制耗上了,继续请教  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=74946)

--  作者:bahamute
--  发布时间:2015/9/23 11:13:00
--  跟二进制耗上了,继续请教
以下代码从命令窗口测试正常(命令窗口return语句改为return nothing),但是放到任务栏就报错:

System.InvalidOperationException: OleDbTransaction 已完成;它再也无法使用。

   System.Data.OleDb.OleDbTransaction.Commit()

   Foxtable.Connection.Commit()

   UserCode.Ab2sVfnWKSLDdT4vZ(TopicLinkEventArgs e)


难道不能用数据库事务?


                    Tables("文件模板").Filter="[文件名]=\'正式工工资考勤导入模板\'"
                    If Tables("文件模板").Current Is Nothing Then
                        Return
                    End If
                    Dim dr As DataRow = Tables("文件模板").Current.DataRow
                    If dr.RowState = DataRowState.Added Then \'如果是新增行,必须先保存才能插入文件
                        dr.Save()
                    End If
                        Dim fl As String =  ProjectPath &  dr("_Identify") & ".xls"
                        If dr.SQLLoadFile("文件",fl) Then \'如果提取文件成功
                            Dim Proc As New Process \'打开文件
                            Proc.File = fl
                            Proc.Start()
                        End If
           
[此贴子已经被作者于2015/9/23 11:16:49编辑过]

--  作者:大红袍
--  发布时间:2015/9/23 11:18:00
--  
代码只要正确,放在那里都没问题。
--  作者:bahamute
--  发布时间:2015/9/23 11:19:00
--  

请教大红袍,这几句提示的哪方面的问题?是否和加了事务有关?

System.InvalidOperationException:  OleDbTransaction 已完成;它再也无法使用。

    System.Data.OleDb.OleDbTransaction.Commit()

    Foxtable.Connection.Commit()

    UserCode.Ab2sVfnWKSLDdT4vZ(TopicLinkEventArgs e)


--  作者:大红袍
--  发布时间:2015/9/23 11:20:00
--  
同样的代码,不可能在另外一个地方就不行。
--  作者:bahamute
--  发布时间:2015/9/23 11:21:00
--  
任务栏代码加了数据库事务处理
--  作者:bahamute
--  发布时间:2015/9/23 11:24:00
--  
测试了一下,注释掉任务栏数据库事务代码后,正常了,难道二进制列不支持使用事务?
--  作者:大红袍
--  发布时间:2015/9/23 11:28:00
--  
封装的方法里面,和你加的事务,不是同一个。你也可以理解成你无法控制里面的东西。如果出错,会给你返回值的
--  作者:bahamute
--  发布时间:2015/9/23 11:40:00
--  
也就是说SQLLoadFile方法并不是常规访问数据库的方法,数据库事务不支持

改为常规访问方式就可以了,是这个意思吗?

--  作者:大红袍
--  发布时间:2015/9/23 11:43:00
--  

你用事务,也检查不出错误,因为它不是sql语句。

 

而且,方法里面已经用了事务了。


--  作者:bahamute
--  发布时间:2015/9/23 14:34:00
--  
请问,有没有读写二进文件案例或者代码?谢谢。