今天定下心来试了一天,终于找到项目闪退的原因了,不是操作系统问题,也不是管理员权限问题,也不是NET版本问题,而是ACCESS数据库2007版兼容性问题
下面的代码用在带有SQLQuery的Table的窗口中必出错,表现为闪退,但用在Normal中不大会出错,此外项目经常会在开发过程中突然闪退,比如当打开项目属性或表属性时,总之非常不稳定。
Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" '设置筛选器
dlg.FileName = "库存查询.xls"
If dlg.ShowDialog = DialogResult.Ok Then '如果用户单击了确定按钮'
Tables("库存查询主窗口_Table_查询表").SaveExcel(dlg.FileName, "库存查询") '保存文件
End If
我刚才用排除法,把项目删到只有一个窗口与一张表,执行上面的代码时还是出错了,我再新建一个空项目,然后连上外部数据库后加载一张ACCESS2007格式的外部表,这张表是上面代码要用到的一张表,这时执行上面代码时不出错了,我就再继续加载外部数据库中的其他表,加了几张后执行代码就出错了,这时,我突然想到了是不是数据库本身的问题,于是用Foxtable中的创建Access文件方法建了个2003版的ACCESS数据库,然后我打开2007版的数据库把数据表全部复制到2003版的MDB数据库中,最后调整下项目中的连接外部数据库的代码,由原来的 "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & e.ProjectPath & "ShcsMain.accdb;Persist Security Info=False" 改成"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & e.ProjectPath & "ShcsMain.MDB;Persist Security Info=False",再重新打开项目后一切正常了,发布项目后换到另一台电脑上执行也正常了。
以下是我之前在论坛提出的关于项目不稳定的帖子,现在看来,全是我上面所说的原因。
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=63039&skin=0
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65123&replyID=&skin=1
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65263&replyID=&skin=1
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=65557&replyID=&skin=1
另外,之前项目在开发时如果关掉项目,操作系统的进程还在,再开项目后就多个进程,反复这样操作,有一次搞出12个进程出来,吓我一跳,后来找甜老师求助,帮我写了段退出项目后杀进程的代码,算是凑合着用了,这个问题现在也解决了。
[此贴子已经被作者于2015/3/19 0:04:13编辑过]