以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- BeforeConnectOuterDataSource中的全局变量不能执行吗 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=79354) |
-- 作者:sjzsdu -- 发布时间:2015/12/29 15:49:00 -- BeforeConnectOuterDataSource中的全局变量不能执行吗 全局代码中设置了: \'判断是否连接数据库成功 Public isconnected As Boolean BeforeConnectOuterDataSource事件中写了:这个代码 If e.Name = "ERPdatabase" Then Dim pathP As String = "System/DatabasePath" Dim xmlDoc As New System.XML.XmlDocument xmlDoc.Load(config) Dim xmlNd As System.XML.XmlNode = xmlDoc.SelectSingleNode(pathP) Dim databasePath As String = xmlNd.InnerText MessageBox.show(databasePath) Dim pathN As String = "System/DatabaseName" Dim xmlNd1 As System.XML.XmlNode = xmlDoc.SelectSingleNode(pathN) Dim databaseName As String = xmlNd1.InnerText MessageBox.show(databaseName ) Dim pathPS As String = "System/DatabasePassword" Dim xmlNd2 As System.XML.XmlNode = xmlDoc.SelectSingleNode(pathPS) Dim databasePassword As String = xmlNd2.InnerText MessageBox.show(databasePassword ) Dim s As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & databasePath & "\\" & databaseName & ";Persist Security Info=False;Jet OLEDB:Database Password=" & databasePassword MessageBox.show(s) MessageBox.show(Connections.TryConnect(s)) If Connections.TryConnect(s) = False Then MessageBox.Show("数据源无法连通!") MessageBox.show(1) e.HideSplashForm = True MessageBox.show(2) isconnected= False MessageBox.show(3) Else MessageBox.show(4) isconnected= True MessageBox.show(5) e.ConnectionString = s End If MessageBox.show(e.ConnectionString) MessageBox.show(Isconnected) 没发布项目的时候,一切正常。发布后在其他计算机上运行的时候,执行到 【isconnected= True】,就莫名其妙的退出了,没有提示错误 (【MessageBox.show(5)】这一步没有执行,【MessageBox.show(4)】这一步执行了)就卡在isconnected上面 |
-- 作者:大红袍 -- 发布时间:2015/12/29 16:03:00 -- 我单独做一个项目测试没有问题。
是不是和你的其它代码有冲突?你弄个空项目测试看看。 |
-- 作者:sjzsdu -- 发布时间:2015/12/29 16:11:00 -- 数据库密码故意设置错误后, MessageBox.Show("数据源无法连通!") MessageBox.show(1) e.HideSplashForm = True MessageBox.show(2) 这几步都能执行, 下面几步也没执行下去,也没有错误提示跳出来 isconnected= False MessageBox.show(3) 在本计算机,发布后的项目和发布前的项目都能够执行,没有错误。 发布后的项目搬到其他计算机上运行就出来这个问题。这会是什么情况呢,想不明白啊,纠结了一天了,你发布后有没有搬到其他计算机上试过 |
-- 作者:大红袍 -- 发布时间:2015/12/29 16:14:00 -- 那如果你不在那里赋值,重新发布,在测试,是否正常弹出? |
-- 作者:sjzsdu -- 发布时间:2015/12/29 16:49:00 -- 把isconnected那两步拿掉,可以执行下去 |
-- 作者:大红袍 -- 发布时间:2015/12/29 16:51:00 -- 你运行 可执行文件名.exe 那个exe
win7系统的话,右键,设置使用管理员身份运行一下。
--------------如果还不行,弄个空项目写上代码测试。 |
-- 作者:sjzsdu -- 发布时间:2015/12/29 17:17:00 -- 全局变量和Vars变量是不是只能在afteropenproject以后才能使用啊,我用vars变量代替了全局变量isconnected BeforeConnectOuterDataSource事件可以顺利执行了,为Vars(“isconnected”)为true 但是在afteropenproject事件中引用 Vars(“isconnected”)的时候,发现这个变量值居然是Null。 |
-- 作者:大红袍 -- 发布时间:2015/12/29 17:25:00 -- vars不能在你的事件用。
或者你用saveConfigValue代替一下吧。
http://www.foxtable.com/help/topics/1544.htm
|
-- 作者:liufucan -- 发布时间:2020/4/29 16:17:00 -- 我也碰到这个问题了,不管是全局变量还是saveConfigValue在这个事件赋值,都是空值,这算bug吗? |
-- 作者:有点蓝 -- 发布时间:2020/4/29 16:31:00 -- 是不能用的,这个事件全局变量还没有初始化 |