注册 登录
编程论坛 VB.NET论坛

为什么MDI中更改背景图片,后无法正常连接SQL?

梦幻倩影 发布于 2016-09-25 15:41, 2982 次点击
为什么MDI中更改背景图片,后无法正常连接SQL?
这好象与连接SQL没关系才对吧?
更改背景的代码如下:
 Private Sub 设置背景图ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 设置背景图ToolStripMenuItem.Click
        Dim Opendlg As New OpenFileDialog
        Dim wjm01 As String
        Opendlg.Title = "Select a picture file"
        Opendlg.Filter = "(*.jpg;*.bmp)|*.jpg;*.bmp|(全部文件)|*.*"
        Opendlg.ShowDialog()
        wjm01 = Opendlg.FileName
        If Exists(wjm01) Then
            Me.BackgroundImage = Image.FromFile(wjm01)
        End If

    End Sub
10 回复
#2
梦幻倩影2016-09-25 15:46
代码可以更改背景图,也不会挡住子窗体(刚试了用图片控件会挡子窗体),但更换图片后,其它窗体要保存数据到SQL就提示连接错误,不更换图片,其它窗体保存正常
#3
不说也罢2016-09-25 16:24
楼主前后左右看看,有木有ghost?

建议查遍该窗体代码,工具条的代码块有没有冗余的用来测试的代码,一不小心更改了数据库的连接参数
#4
梦幻倩影2016-09-26 14:27
还是不行,真的郁闷
#5
不说也罢2016-09-26 16:13
这种情况下,无法连接服务器的错误提示是什么?
更改背景图片之后msgbox下conntectstring看看,连接参数有没有发生变化
#6
梦幻倩影2016-09-26 21:18

        Dim st As logintype1
        Dim wjm As String = "login.dat"
        Dim sqlstr As String
        Dim ss As Integer
        ss = FreeFile()
        st.ser_name = ""
        st.dat_name = ""
        st.use_name = ""
        st.pwd_id = ""
        FileOpen(ss, wjm, OpenMode.Random, , , Len(st))
        FileGet(ss, st, 1)
        sqlstr = "Data Source=" + Trim(st.ser_name)
        sqlstr &= ";Initial Catalog=" + Trim(st.dat_name) + ";Trusted_Connection=no"
        sqlstr &= ";Persist Security Info=True;User ID=" + Trim(st.use_name)
        sqlstr &= ";Password=" + Trim(st.pwd_id)
        FileClose(ss)
        MsgBox(sqlstr)
#7
梦幻倩影2016-09-26 21:19
FileOpen(ss, wjm, OpenMode.Random, , , Len(st))
        FileGet(ss, st, 1)
执行完替换背景图后
这两句居然没有执行,也没有提示错误
#8
梦幻倩影2016-09-26 21:22
替换背景前后返回的值如下:
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-9-26 21:23编辑过]

#9
不说也罢2016-09-27 17:12
以下是引用梦幻倩影在2016-9-26 21:18:36的发言:


        Dim st As logintype1
        Dim wjm As String = "login.dat"
        Dim sqlstr As String
        Dim ss As Integer
        ss = FreeFile()
        st.ser_name = ""
        st.dat_name = ""
        st.use_name = ""
        st.pwd_id = ""
        FileOpen(ss, wjm, OpenMode.Random, , , Len(st))
        FileGet(ss, st, 1)
        sqlstr = "Data Source=" + Trim(st.ser_name)
        sqlstr &= ";Initial Catalog=" + Trim(st.dat_name) + ";Trusted_Connection=no"
        sqlstr &= ";Persist Security Info=True;User ID=" + Trim(st.use_name)
        sqlstr &= ";Password=" + Trim(st.pwd_id)
        FileClose(ss)
        MsgBox(sqlstr)


FileOpen中wjm只给了文件名而没有路径,你确保正确读取了吗?从你截的图看,wjm参数传的值可能没有找到该文件。

在.net下,读取文件使用类可能比较好一点儿。
#10
梦幻倩影2016-09-27 19:10
还真是这句的问题
Dim wjm As String = "login.dat"
改为如下则可正常接:
Dim wjm As String = Application.StartupPath & "\login.dat"
#11
梦幻倩影2016-09-27 19:11
又是相对路径惹的祸,已经两次了,看来以后还是少用相对路径
1