求好手帮助
求高手帮助!
本人在VS2010下用VB写了一个串口程序,引用了Microsoft Comm Control 6.0,添加了串口控件AxMSCommLib.AxMSComm,我的程序是读取串口数据后会写入ACCESS数据库,在装有VS2010的机器上可以正常通讯,无任何问题。生成打包程序后,在未安装VS2010的机器上运行,串口有反应,但是只能听到滴滴滴的声音(应该是已经读取到一部分数据),接下来就报错,提示如下:
************** 异常文本 **************
System.Runtime.InteropServices.COMException (0x800A0BCD): BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
在 ADODB._Recordset.Move(Int32 NumRecords, Object Start)
在 BX40_1._3.Display.System_Paramater_Show() 位置 D:\BX40-1.3\BX40-1.3\Modules\Display.vb:行号 23
我查看了Display.vb的23行,代码为:Ado_Recordset.Move(6, BookmarkEnum.adBookmarkFirst)
网上搜了很长时间,也没找到问题所在,不知道是串口的问题,还是数据库的问题,请各位高手指教一下,不胜感激,谢谢!
------最佳解决方案--------------------
在Release目录下生成的文件全都打包了,里面有两个DLL,AxInterop.MSCommLib.dll和Interop.MSCommLib.dll,但是这两个DLL无法注册成功,我的系统是WIN7,使用管理员权限运行regsvr32注册这两个DLL都无法成功,提示为:模块"AxInterop.MSCommLib.dll"已加载,但找不到入口点DllRegisterServer。请确保"AxInterop.MSCommLib.dll"为有效DLL或OCX文件,然后重试。
你这个是写入access?反正是操作了office软件,要求必须要在所运行的机器上也有相应版本的access,
office软件是一个组件,光是打包一两个dll是没用的.这样的EXE要求目标机器上必须要有与开发环境里的office软件版本相同的软件!比如你操作了excel 2003,那目标机器上也必须是2003,2000的excel都不行...
网上有很多这方面的资料,到目前为止,我还没有找到一个完美的解决办法..
------其他解决方案--------------------
我是过的话 2007 与2003都是可以的,不过Provider=Microsoft.Jet.OLEDB.4.0; 这句要改成Provider=Microsoft.ACE.OLEDB.12.0才能支持2007的ACCDB
不装access也试过可以,要装一个Access runtime比office安装文件小很多,好像就十几M
------其他解决方案--------------------
怎么没人呢?多谢帮忙啊!
------其他解决方案--------------------
如果只是不同的机器有这样的问题, 那你确认一下你的控件是不是全打包了,是不是在新机器安装注册了。
系统环境一样吗? 最好自己定义一下串口各个参数,因为默认的有可能不一样。
数据库有记录吗? 你的代码是怎样的?
------其他解决方案--------------------
在Release目录下生成的文件全都打包了,里面有两个DLL,AxInterop.MSCommLib.dll和Interop.MSCommLib.dll,但是这两个DLL无法注册成功,我的系统是WIN7,使用管理员权限运行regsvr32注册这两个DLL都无法成功,提示为:模块"AxInterop.MSCommLib.dll"已加载,但找不到入口点DllRegisterServer。请确保"AxInterop.MSCommLib.dll"为有效DLL或OCX文件,然后重试。
另外再补充一下,在同一台安装VS2010的机器上可以正常运行,但是卸载了vs2010就会出错,如题所示。
数据库连接的代码如下:Ado_Connection = New ADODB.Connection
If Ado_Connection.State = ConnectionState.Closed Then
Ado_Connection.CursorLocation = CursorLocationEnum.adUseClient
Ado_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\" & File_Name & ";Persist Security Info=False"
Ado_Connection.Open(Ado_Str)
End If
'Building recordset to database
Ado_Recordset = New ADODB.Recordset
Ado_Recordset.CursorType = CursorTypeEnum.adOpenDynamic
Ado_Recordset.LockType = LockTypeEnum.adLockOptimistic
Ado_Recordset.Open("System_Initialization_Paramater", Ado_Connection, , , CommandTypeEnum.adCmdTable)
本人在VS2010下用VB写了一个串口程序,引用了Microsoft Comm Control 6.0,添加了串口控件AxMSCommLib.AxMSComm,我的程序是读取串口数据后会写入ACCESS数据库,在装有VS2010的机器上可以正常通讯,无任何问题。生成打包程序后,在未安装VS2010的机器上运行,串口有反应,但是只能听到滴滴滴的声音(应该是已经读取到一部分数据),接下来就报错,提示如下:
************** 异常文本 **************
System.Runtime.InteropServices.COMException (0x800A0BCD): BOF 或 EOF 中有一个是“真”,或者当前的记录已被删除,所需的操作要求一个当前的记录。
在 ADODB._Recordset.Move(Int32 NumRecords, Object Start)
在 BX40_1._3.Display.System_Paramater_Show() 位置 D:\BX40-1.3\BX40-1.3\Modules\Display.vb:行号 23
我查看了Display.vb的23行,代码为:Ado_Recordset.Move(6, BookmarkEnum.adBookmarkFirst)
网上搜了很长时间,也没找到问题所在,不知道是串口的问题,还是数据库的问题,请各位高手指教一下,不胜感激,谢谢!
------最佳解决方案--------------------
在Release目录下生成的文件全都打包了,里面有两个DLL,AxInterop.MSCommLib.dll和Interop.MSCommLib.dll,但是这两个DLL无法注册成功,我的系统是WIN7,使用管理员权限运行regsvr32注册这两个DLL都无法成功,提示为:模块"AxInterop.MSCommLib.dll"已加载,但找不到入口点DllRegisterServer。请确保"AxInterop.MSCommLib.dll"为有效DLL或OCX文件,然后重试。
你这个是写入access?反正是操作了office软件,要求必须要在所运行的机器上也有相应版本的access,
office软件是一个组件,光是打包一两个dll是没用的.这样的EXE要求目标机器上必须要有与开发环境里的office软件版本相同的软件!比如你操作了excel 2003,那目标机器上也必须是2003,2000的excel都不行...
网上有很多这方面的资料,到目前为止,我还没有找到一个完美的解决办法..
------其他解决方案--------------------
我是过的话 2007 与2003都是可以的,不过Provider=Microsoft.Jet.OLEDB.4.0; 这句要改成Provider=Microsoft.ACE.OLEDB.12.0才能支持2007的ACCDB
不装access也试过可以,要装一个Access runtime比office安装文件小很多,好像就十几M
------其他解决方案--------------------
怎么没人呢?多谢帮忙啊!
------其他解决方案--------------------
如果只是不同的机器有这样的问题, 那你确认一下你的控件是不是全打包了,是不是在新机器安装注册了。
系统环境一样吗? 最好自己定义一下串口各个参数,因为默认的有可能不一样。
数据库有记录吗? 你的代码是怎样的?
------其他解决方案--------------------
在Release目录下生成的文件全都打包了,里面有两个DLL,AxInterop.MSCommLib.dll和Interop.MSCommLib.dll,但是这两个DLL无法注册成功,我的系统是WIN7,使用管理员权限运行regsvr32注册这两个DLL都无法成功,提示为:模块"AxInterop.MSCommLib.dll"已加载,但找不到入口点DllRegisterServer。请确保"AxInterop.MSCommLib.dll"为有效DLL或OCX文件,然后重试。
另外再补充一下,在同一台安装VS2010的机器上可以正常运行,但是卸载了vs2010就会出错,如题所示。
数据库连接的代码如下:Ado_Connection = New ADODB.Connection
If Ado_Connection.State = ConnectionState.Closed Then
Ado_Connection.CursorLocation = CursorLocationEnum.adUseClient
Ado_Str = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\" & File_Name & ";Persist Security Info=False"
Ado_Connection.Open(Ado_Str)
End If
'Building recordset to database
Ado_Recordset = New ADODB.Recordset
Ado_Recordset.CursorType = CursorTypeEnum.adOpenDynamic
Ado_Recordset.LockType = LockTypeEnum.adLockOptimistic
Ado_Recordset.Open("System_Initialization_Paramater", Ado_Connection, , , CommandTypeEnum.adCmdTable)