Foxtable(狐表)用户栏目专家坐堂 → BeforeConnectOuterDataSource SQL连接问题


  共有4177人关注过本帖树形打印复制链接

主题:BeforeConnectOuterDataSource SQL连接问题

帅哥哟,离线,有人找我吗?
hongye
  21楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/2/12 21:41:00 [只看该作者]

'--------------------------------主数据库-------------------------------
Dim cn As String = "Provider=SQLOLEDB.1;Password={0};Persist Security Info=True;User ID={1};Initial Catalog=bydata;Data Source={2}"
Dim sql As String = FileSys.ReadAllText(ProjectPath & "Attachments\SqlServers.sipcg")
Dim sarr() As String = sql.Replace(vbcr,"").Split(vblf)
Dim sdt As Date = Date.Now
Dim Sum As Integer
Forms("启动连接").Open
Dim se As WinForm.PictureBox = Forms("启动连接").Controls("PictureBox1")
se.Image = qd
Dim sqlqtu As WinForm.Label = Forms("启动连接").Controls("Label2")
sqlqtu.text = "正在连接数据源,请稍后....  "
Application.DoEvents

For i As Integer = 0 To 1
    Dim tsq1 As String
    Dim tsq2 As String
    Dim tsq3 As String
    Dim jzf1 As String = sarr(i*3).SubString(9)
    Dim jzf3 As String = sarr(i*3+1).SubString(8)
    Dim jzf5 As String = sarr(i*3+2).SubString(12)
    tsq1 = jzf1.Trim()
    tsq2 = jzf3.Trim()
    tsq3 = jzf5.Trim()
    Dim Val1 As String = DecryptText(tsq1,"slp","shby")
    Dim Val3 As String = DecryptText(tsq2,"slp","shby")
    Dim Val5 As String = DecryptText(tsq3,"slp","shby")
    Dim exp As String = CExp(cn,Val1,Val3,Val5)
    Dim ErrMsg As String
    Dim sqlqd As WinForm.Label = Forms("启动连接").Controls("Label1")
    sqlqd.text = "正在连接数据源:  " & Val5   '追加数据代码
    Application.DoEvents
    If Connections.TryConnect(exp,ErrMsg) = True Then
        For iy As Integer = 1 To 1
            Connections.Add("彬阳数据",exp)
            sqlqd.text = Val5 & " 数据源加载成功!准备用户登入!"
            Application.DoEvents
            While Date.Now < sdt.AddSeconds(2)
            End While
            Forms("启动连接").Close()
        Next
        Forms("用户登录").Open()
        If _UserName = "" Then
            Syscmd.Project.Exit()
            Return Nothing '这个要加上,因为既然要退出,就不应该再执行后面的初始化代码了,否则会出错
        End If
        Exit For
    Else
        Sum = Sum + i
        If sum = 0 Then
            sqlqd.text = Val5 & " 数据源未加载成功!准备使用备用地址加载数据源!"
            Application.DoEvents
            While Date.Now < sdt.AddSeconds(1)
            End While
        End If
        If Sum = 1 Then
            sqlqd.text = Val5 & " 数据源未加载成功!准备使用备用地址加载数据源!"
            Application.DoEvents
            While Date.Now < sdt.AddSeconds(1)
            End While
            Forms("启动连接").Close()
            Forms("SQL提示").Open()
            Dim sqlts As  WinForm.Label = Forms("SQL提示").Controls("Label1")
            sqlts.text = Val5 & " 数据源无法连通!是否需要数据库连接设置?"& (vbcrlf)& ErrMsg '追加数据代码
            Return Nothing
        End If      
    End If
Next
'----------------------------------FTP信息------------------------------
'''
Dim sf As String = FileSys.ReadAllText(ProjectPath & "Attachments\ftpip.ipls")
Dim arrs() As String = sf.Replace(vbcr,"").Split(vblf)
Forms("启动连接").open
Dim ftpqtu As WinForm.Label = Forms("启动连接").Controls("Label2")
ftpqtu.text = "正在连接FTP,请稍后....  "
Application.DoEvents
For i As Integer = 0 To 1
    Dim sqlqd As WinForm.Label = Forms("启动连接").Controls("Label1")
    Dim ftp0 As New FTPClient
    Dim tsq1 As String
    Dim tsq2 As String
    Dim tsq3 As String
    Dim jzf1 As String = arrs(i*3).Split("|")(1)
    Dim jzf3 As String = arrs(i*3+1).Split("|")(1)
    Dim jzf5 As String = arrs(i*3+2).Split("|")(1)
    tsq1 = jzf1.Trim()
    tsq2 = jzf3.Trim()
    tsq3 = jzf5.Trim()
    Dim Val1 As String = DecryptText(tsq1,"slp","shby")
    ftp0.password = Val1
    Dim Val3 As String = DecryptText(tsq2,"slp","shby")
    ftp0.Account = Val3
    Dim Val5 As String = DecryptText(tsq3,"slp","shby")
    ftp0.host = Val5
    sqlqd.text = "正在连接FTP地址:  " & ftp0.host  '追加数据代码
    Application.DoEvents
    If  ftp0.Connect  Then
        sqlqd.text = ftp0.host & "该FTP服务器可正常使用!" '追加数据代码
        Application.DoEvents
        While Date.Now < sdt.AddSeconds(2)
        End While
        Forms("启动连接").Close()
        For iy As Integer = 1 To 1
            Dim ftp1 As New FTPClient
            ftp1.host =ftp0.host
            Tables("FTPIP").Current("FTPhost") = ftp0.host
            ftp1.Account = ftp0.Account
            Tables("FTPIP").Current("FTPAccount") = ftp0.Account
            ftp1.password = ftp0.password
            Tables("FTPIP").Current("FTPpassword") = ftp0.password
        Next
        If DataTables("FTPIP").HasChanges Then
            DataTables("FTPIP").Save()
        End If
        Exit For
    Else
        Sum = Sum + i
        If sum = 0 Then
            sqlqd.text = ftp0.host & " FTP服务器未连接成功!准备使用备用地址连接!"
            Application.DoEvents
            While Date.Now < sdt.AddSeconds(2)
            End While
        End If
        If Sum = 1 Then
            sqlqd.text = ftp0.host & "该FTP服务器不可用!"
            Application.DoEvents
            While Date.Now < sdt.AddSeconds(2)
            End While
            Forms("启动连接").Close()
        End If
       
    End If
Next
'-----------------------------------------------------------------------


 回到顶部
帅哥,在线噢!
有点蓝
  22楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106016 积分:539167 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/2/12 22:23:00 [只看该作者]

网络判断参考:



如果不判断,默认会有30秒到几分钟不等的超时响应,此时会阻塞主进程

 回到顶部
帅哥哟,离线,有人找我吗?
hongye
  23楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:437 积分:2943 威望:0 精华:0 注册:2011/3/15 12:49:00
  发帖心情 Post By:2019/2/13 1:42:00 [只看该作者]

提示窗口是不是因为网络的问题才不显示的啊

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  24楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 9:16:00 [只看该作者]

做一个test内部函数,输入代码,如

 

Forms("启动连接").Close()
Forms("SQL提示").Open()
Dim sqlts As  WinForm.Label = Forms("SQL提示").Controls("Label1")
sqlts.text = " 数据源无法连通!是否需要数据库连接设置?"& (vbcrlf)'追加数据代码
return nothing

 

然后再在原来的代码调用

 

Functions.BeginSyncExecute("test")


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  25楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/2/13 13:41:00 [只看该作者]

在AfterClose里的代码
Dim Result As DialogResult
Result = MessageBox.Show("系统需要退出,请重新进入系统!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question)
If Result = DialogResult.OK Then
    Syscmd.Project.Exit(True)
    Return
End If
不知道为什么会报错
“未将对象引用设置到对象的实例”


.NET Framework 版本:2.0.50727.9035
Foxtable 版本:2018.10.9.1
错误所在事件:窗口,网络设置窗口,AfterClose
详细错误信息:
未将对象引用设置到对象的实例。
[此贴子已经被作者于2019/2/13 14:20:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  26楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 14:27:00 [只看该作者]

改成这样

 

 

Dim Result As DialogResult

Result = MessageBox.Show("系统需要退出,请重新进入系统!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question)
If Result = DialogResult.OK Then
    DataTables.save
    System.Diagnostics.Process.GetCurrentProcess().Kill
    Return    
End If


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  27楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/2/13 17:23:00 [只看该作者]

这个项目总体有个问题,在我登入项目前就进入,FOXTABL 了?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  28楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/2/13 17:55:00 [只看该作者]

以下是引用hongyefor在2019/2/13 17:23:00的发言:
这个项目总体有个问题,在我登入项目前就进入,FOXTABL 了?

 

是的。

 

你可以在afteropenProject事件启动一个模式窗口,在函数里面处理完以后,再关闭模式窗口。

 

或者,启动的时候,隐藏,最后再显示,如

 

basemainform.windowstate = 0
basemainform.left = -10000

 

------还原

 

basemainform.windowstate = 2


 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  29楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/2/13 19:02:00 [只看该作者]

项目属性里按确定,可用隐藏,可是真正开启项目就不行了,这是怎么回事?

 回到顶部
帅哥哟,离线,有人找我吗?
hongyefor
  30楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:524 积分:3676 威望:0 精华:0 注册:2012/7/27 10:28:00
  发帖心情 Post By:2019/2/13 21:10:00 [只看该作者]

搞好了,要加在内部代码里

 回到顶部
总数 30 上一页 1 2 3