以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]登录窗口测试连接成功后重启项目出错  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188285)

--  作者:huaziqiao1976
--  发布时间:2023/9/12 11:51:00
--  [求助]登录窗口测试连接成功后重启项目出错
Dim SQLServer As String
Dim Database As String
Dim Username As String
Dim Password As String
SQLServer = e.Form.Controls("TextBox5").Value \' 服务器地址
Database = e.Form.Controls("TextBox6").Value \' 数据库文件
Username = e.Form.Controls("TextBox7").Value \' SQL用户名
Password = e.Form.Controls("TextBox8").Value \' SQL密码

Dim ErrMsg As String
Dim Conn As String ="Provider=SQLOLEDB.1;Data Source=" & SQLServer & ";Initial Catalog=" & Database & ";User ID=" & Username & ";Password=" & Password & ";Persist Security Info=False;"
If Connections.TryConnect(Conn,ErrMsg) = False Then
    MessageBox.Show("数据源无法连通!原因:" & ErrMsg)
Else   
FileSys.WriteAllText(ProjectPath & "Attachments\\ip.txt","Provider=SQLOLEDB.1;Data Source=" & SQLServer & ";Initial Catalog=" & Database & ";User ID=" & Username & ";Password=" & Password & ";Persist Security Info=False;", True)
FileSys.WriteAllText(ProjectPath & "Attachments\\open.Txt","open",True)
MessageBox.Show("数据源连通!需要重启")
Syscmd.Project.Open(ProjectFile)
End If
提示:从索引 0 处开始,初始化字符串的格式不符合规范。

--  作者:有点蓝
--  发布时间:2023/9/12 12:06:00
--  
把所有项目事件代码,登录窗口所有代码都发上来
--  作者:huaziqiao1976
--  发布时间:2023/9/12 12:19:00
--  

BeforeConnectOuterDataSource

Dim ipFile As String = e.ProjectPath & "Attachments\\ip.txt"
Dim Open As String = e.ProjectPath & "Attachments\\Open.txt"     \'数据源连接设置窗口是否打开的配置文件
Dim  ip As  String = FileSys.ReadAllText(ipFile)

Dim close As String = e.ProjectPath & "\\Attachments\\Open.txt"
Dim OpenText As  String = FileSys.ReadAllText(close)

If OpenText = "close"   \'判断修改数据源信息传递过来的参
Return
Else
If e.Name = "GJ" Then
    If Filesys.FileExists(ipFile) Then
        e.C     \'已配置好的数据源连接字符串,
        FileSys.WriteAllText(e.ProjectPath & "Attachments\\Open.txt","Close",False)
        \'MessageBox.Show("数据源已连通!")
        Return
    End If
      End If    
     If Connections.TryConnect(ip) = False Then
      MessageBox.Show("请重新设置参数!")
      FileSys.WriteAllText(e.ProjectPath & "Attachments\\Open.txt","Open",False)  \'置数据源检测开关状态为Open.
     e.C& e.ProjectPath & "Attachments\\UserInfo.mdb;Persist Security Info=False"
     Return
    End If
End  If

BeforeOpenProject

Dim s As String = FileSys.GetParentPath(e.File) & "\\Attachments\\ip.txt"
If FileSys.FileExists(s) = False Then
    e.Cancel = True
    e.HideSplashForm = True           \'这个文件是空文件也行
    MessageBox.show("数据库连接文件" & "IP.txt" & "丢失,无法打开此项目!")
Return
End If

AfterOpenProject
Dim Open As String = ProjectPath & "\\Attachments\\Open.txt"
Dim OpenText As  String = FileSys.ReadAllText(Open)

If OpenText = "Open"   \'判断修改数据源信息传递过来的参数,决定是否打开开设置窗口
    Forms("数据连接").open()
    Return
Else
    Forms("创建单位").open()
    Return                   \'一定要写上,否则会报错!
End If

登录窗口 Button2 click
Dim SQLServer As String
Dim Database As String
Dim Username As String
Dim Password As String
SQLServer = e.Form.Controls("TextBox5").Value \' 服务器地址
Database = e.Form.Controls("TextBox6").Value \' 数据库文件
Username = e.Form.Controls("TextBox7").Value \' SQL用户名
Password = e.Form.Controls("TextBox8").Value \' SQL密码

Dim ErrMsg As String
Dim Conn As String ="Provider=SQLOLEDB.1;Data Source=" & SQLServer & ";Initial Catalog=" & Database & ";User ID=" & Username & ";Password=" & Password & ";Persist Security Info=False;"
If Connections.TryConnect(Conn,ErrMsg) = False Then
    MessageBox.Show("数据源无法连通!原因:" & ErrMsg)
Else   
FileSys.WriteAllText(ProjectPath & "Attachments\\ip.txt","Provider=SQLOLEDB.1;Data Source=" & SQLServer & ";Initial Catalog=" & Database & ";User ID=" & Username & ";Password=" & Password & ";Persist Security Info=False;", True)
FileSys.WriteAllText(ProjectPath & "Attachments\\open.Txt","open",True)
MessageBox.Show("数据源连通!需要重启")
Syscmd.Project.Open(ProjectFile)
End If


--  作者:有点蓝
--  发布时间:2023/9/12 13:38:00
--  
去掉窗口按钮里的【Syscmd.Project.Open(ProjectFile)】改为放到AfterOpenProject

AfterOpenProject
Dim Open As String = ProjectPath & "\\Attachments\\Open.txt"
Dim OpenText As  String = FileSys.ReadAllText(Open)

If OpenText = "Open"   \'判断修改数据源信息传递过来的参数,决定是否打开开设置窗口
    Forms("数据连接").open()
Syscmd.Project.Open(ProjectFile)
    Return
Else
    Forms("创建单位").open()
Syscmd.Project.Open(ProjectFile)
    Return                   \'一定要写上,否则会报错!
End If

--  作者:huaziqiao1976
--  发布时间:2023/9/12 13:41:00
--  
这样不是弹出两个窗口就重启了,参数都还没修改
--  作者:有点蓝
--  发布时间:2023/9/12 13:47:00
--  
这2个窗口改为模式窗口
--  作者:huaziqiao1976
--  发布时间:2023/9/12 13:52:00
--  
又变成关闭窗口就重启
--  作者:huaziqiao1976
--  发布时间:2023/9/12 14:07:00
--  
改成 Syscmd.Project.Exit()
--  作者:有点蓝
--  发布时间:2023/9/12 14:08:00
--  
什么样的情况下需要重启?什么情况不需要重启?自己加个全局变量判断一下,符合条件再重启
--  作者:huaziqiao1976
--  发布时间:2023/9/12 14:20:00
--  
BeforeConnectOuterDataSource 需要重新获得IP.TEXT修改后和登录参数时要重启