以文本方式查看主题

-  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
--  
是不能用的,这个事件全局变量还没有初始化