一个小系统,检查下代码哪里出问题了。

艾乐飞 2009-12-18 11:04:34
这是部分代码,为什么输入密码正确,点击确定后直接跳出系统,并没有打开主界面,应该再哪加?

这是主界面的。
Imports System.Windows
Public Class FrmMain


Private Sub FrmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim check As Boolean = True
Try
Do
Dim Login As New LOGIN
Login.ShowDialog()

If Login.DialogResult = Windows.Forms.DialogResult.OK And Login.flag Then
check = False
ElseIf Login.DialogResult = Windows.Forms.DialogResult.Cancel Then
Me.Close()
check = False
End If

Loop While check

If UserRight = 1 Then
Me.SystemUser.Visible = False
ElseIf UserRight = 2 Then
Me.SystemUser.Visible = False
Me.PIman.Visible = False
End If

Catch ex As Exception
WriteErr(ex)
End Try
End Sub
Private Sub user_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SystemUser.Click
Dim FrmUser As New FrmUser
FrmUser.MdiParent = Me
FrmUser.Show()
End Sub

Private Sub Changemypwd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChangeMyPwd.Click
Dim ChangePwd As New ChangePwd
ChangePwd.ShowDialog()
End Sub

Private Sub Exitme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitMe.Click
ExitMe.Visible = False
SystemUser.Visible = False
PIman.Visible = False
PIQuery.Visible = False
End Sub

Private Sub Relogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReLogin.Click
Dim check As Boolean = True
Try
Do
Dim Login As New LOGIN
Login.ShowDialog()

If Login.DialogResult = Forms.DialogResult.OK And Login.flag Then
check = False
ElseIf Login.DialogResult = Forms.DialogResult.Cancel Then
Me.Close()
check = False
End If

Loop While check

If UserRight = 0 Then
Me.SystemUser.Visible = True
Me.PIman.Visible = True
Me.PIQuery.Visible = True
ElseIf UserRight = 1 Then
Me.PIman.Visible = True
Me.PIQuery.Visible = True
ElseIf UserRight = 2 Then
Me.PIQuery.Visible = True
End If

Catch ex As Exception
WriteErr(ex)
End Try
End Sub
End Class

这是登陆界面的
Public Class LOGIN
Inherits System.Windows.Forms.Form

Public flag As Boolean = False

Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.Click
If Me.TBUsername.Text.Trim() = String.Empty Then
MessageBox.Show("姓名不能为空")
Me.TBUsername.Focus()

ElseIf Me.TBPwd.Text.Trim() = String.Empty Then
MessageBox.Show("密码不能为空")
Me.TBPwd.Focus()

Else
Dim sql As String = "SELECT * FROM USERINFO WHERE USERID = '" + Me.TBUsername.Text.Trim() + "' AND USERPWD = '" + Me.TBPwd.Text.Trim() + "'"
Dim dt As DataTable = GetDataTable(sql)

If dt.Rows.Count = 0 Then
MessageBox.Show("用户名不存在或密错误", "错误")
Me.TBPwd.Focus()
Else
UserRight = dt.Rows(0)("usertype")
UserID = Me.TBUsername.Text.Trim()
flag = True
Me.Close()
End If
End If
End Sub

Private Sub btcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click
Application.Exit()
End Sub

Private Sub LOGIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class

这是全局变量和公共函数的
Imports system.data.sqlClient
Imports System.IO

Module DataSql
Public UserFlag As Boolean
Public User As String
Public UserID As String
Public UserRight As Int16
Public Sqlcon As New SqlConnection("data source = PC-200911071615\SQLEXPRESS; Database = PIManage;User Id = admin; pwd = 888;")

Public Function GetDataTable(ByVal sql As String) As DataTable
Dim dt As New DataTable

Try
Dim SqlAda As New SqlDataAdapter(New SqlCommand(sql, SqlCon))
SqlAda.Fill(dt)
Catch ex As Exception
WriteErr(ex)
End Try

Return dt
End Function

Public Sub WriteErr(ByVal ex As Exception)

Dim path As String = Application.StartupPath + "\Err01.txt"
If Not File.Exists(path) Then
File.Create(path)
End If
Dim sw As StreamWriter = File.AppendText(path)
sw.Write(System.DateTime.Now.ToString() + vbCrLf)
sw.Write(ex.Message + vbCrLf)
sw.Write(ex.StackTrace + vbCrLf)
sw.Flush()
sw.Close()

End Sub

Function JudgeInt(ByVal str As String) As Boolean
Try
Int16.Parse(str)
Return True
Catch ex As Exception
Return False
End Try
End Function

Function JudgeKeyExist(ByVal tableName As String, ByVal key As String, ByVal keyValue As Int16) As Boolean
Dim sql As String = "select * from " + tableName + " where " + key + "=" + keyValue.ToString
Try

Dim dt As DataTable = GetDataTable(sql)
If dt.Rows.Count <> 0 Then
Return True
Else
Return False
End If
Catch ex As Exception
WriteErr(ex)
End Try
End Function

Function JudgeKeyExist(ByVal tableName As String, ByVal key As String, ByVal keyValue As String) As Boolean
Dim sql As String = "select * from " + tableName + " where " + key + "='" + keyValue + "'"
Try

Dim dt As DataTable = GetDataTable(sql)
If dt.Rows.Count <> 0 Then
Return True
Else
Return False
End If
Catch ex As Exception
WriteErr(ex)
End Try
End Function

Function JudgeKeyExist(ByVal tableName As String, ByVal key1 As String, ByVal keyValue1 As Int16, ByVal key2 As String, ByVal keyValue2 As Int16) As Boolean
Dim sql As String = "select * from " + tableName + " where " + key1 + "=" + keyValue1.ToString + " and " + key2 + "=" + keyValue2.ToString
Try

Dim dt As DataTable = GetDataTable(sql)
If dt.Rows.Count <> 0 Then
Return True
Else
Return False
End If
Catch ex As Exception
WriteErr(ex)
End Try
End Function

Function TreeNodeLevel(ByVal node As TreeNode) As Integer

Dim IDItem() As String
IDItem = node.FullPath.Split("\"c)
Return IDItem.Length

End Function
End Module
...全文
148 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 wavezhou 的回复:]
引用 7 楼 ailefei 的回复:
引用 5 楼 wavezhou 的回复:
Public Class LOGIN
    Inherits System.Windows.Forms.Form

    Public flag As Boolean = False

    Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.Click
        If Me.TBUsername.Text.Trim() = String.Empty Then
            MessageBox.Show("姓名不能为空")
            Me.TBUsername.Focus()

        ElseIf Me.TBPwd.Text.Trim() = String.Empty Then
            MessageBox.Show("密码不能为空")
            Me.TBPwd.Focus()

        Else
            Dim sql As String = "SELECT * FROM USERINFO WHERE USERID = '" + Me.TBUsername.Text.Trim() + "' AND USERPWD = '" + Me.TBPwd.Text.Trim() + "'"
            Dim dt As DataTable = GetDataTable(sql)

            If dt.Rows.Count = 0 Then
                MessageBox.Show("用户名不存在或密错误", "错误")
                Me.TBPwd.Focus()
            Else
                UserRight = dt.Rows(0)("usertype")
                UserID = Me.TBUsername.Text.Trim()
                flag = True


这加调用你要启动的画面啊
                Me.Close()
            End If
        End If
    End Sub

    Private Sub btcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click
        Application.Exit()
    End Sub

    Private Sub LOGIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class


加了后点击确定按钮 用户名密码被清空 再输入一次点击确定直接跳出了。主界面还是没出来。



Me.Close()
去掉看看

或者
Me.hide()

Me.Close()

[/Quote]

还是不行,你那有VS吗?能帮我调试下吗?
米か臹 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 ailefei 的回复:]
引用 5 楼 wavezhou 的回复:
Public Class LOGIN
    Inherits System.Windows.Forms.Form

    Public flag As Boolean = False

    Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.Click
        If Me.TBUsername.Text.Trim() = String.Empty Then
            MessageBox.Show("姓名不能为空")
            Me.TBUsername.Focus()

        ElseIf Me.TBPwd.Text.Trim() = String.Empty Then
            MessageBox.Show("密码不能为空")
            Me.TBPwd.Focus()

        Else
            Dim sql As String = "SELECT * FROM USERINFO WHERE USERID = '" + Me.TBUsername.Text.Trim() + "' AND USERPWD = '" + Me.TBPwd.Text.Trim() + "'"
            Dim dt As DataTable = GetDataTable(sql)

            If dt.Rows.Count = 0 Then
                MessageBox.Show("用户名不存在或密错误", "错误")
                Me.TBPwd.Focus()
            Else
                UserRight = dt.Rows(0)("usertype")
                UserID = Me.TBUsername.Text.Trim()
                flag = True


这加调用你要启动的画面啊
                Me.Close()
            End If
        End If
    End Sub

    Private Sub btcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click
        Application.Exit()
    End Sub

    Private Sub LOGIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class



加了后点击确定按钮 用户名密码被清空 再输入一次点击确定直接跳出了。主界面还是没出来。
[/Quote]


Me.Close()
去掉看看

或者
Me.hide()

Me.Close()
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
顶起求关注。
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 leitin 的回复:]
按代码看,主界面代码应该运行了
不然你的登陆窗口出不来

请说下单步调试是在哪一步停的,才能看啊
[/Quote]

停在主界面的 Login.ShowDialog() 这一句。
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wavezhou 的回复:]
Public Class LOGIN
    Inherits System.Windows.Forms.Form

    Public flag As Boolean = False

    Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.Click
        If Me.TBUsername.Text.Trim() = String.Empty Then
            MessageBox.Show("姓名不能为空")
            Me.TBUsername.Focus()

        ElseIf Me.TBPwd.Text.Trim() = String.Empty Then
            MessageBox.Show("密码不能为空")
            Me.TBPwd.Focus()

        Else
            Dim sql As String = "SELECT * FROM USERINFO WHERE USERID = '" + Me.TBUsername.Text.Trim() + "' AND USERPWD = '" + Me.TBPwd.Text.Trim() + "'"
            Dim dt As DataTable = GetDataTable(sql)

            If dt.Rows.Count = 0 Then
                MessageBox.Show("用户名不存在或密错误", "错误")
                Me.TBPwd.Focus()
            Else
                UserRight = dt.Rows(0)("usertype")
                UserID = Me.TBUsername.Text.Trim()
                flag = True


这加调用你要启动的画面啊
                Me.Close()
            End If
        End If
    End Sub

    Private Sub btcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click
        Application.Exit()
    End Sub

    Private Sub LOGIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
End Class

[/Quote]

加了后点击确定按钮 用户名密码被清空 再输入一次点击确定直接跳出了。主界面还是没出来。
leitin 2009-12-18
  • 打赏
  • 举报
回复
按代码看,主界面代码应该运行了
不然你的登陆窗口出不来

请说下单步调试是在哪一步停的,才能看啊
米か臹 2009-12-18
  • 打赏
  • 举报
回复
Public Class LOGIN
Inherits System.Windows.Forms.Form

Public flag As Boolean = False

Private Sub btok_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtOK.Click
If Me.TBUsername.Text.Trim() = String.Empty Then
MessageBox.Show("姓名不能为空")
Me.TBUsername.Focus()

ElseIf Me.TBPwd.Text.Trim() = String.Empty Then
MessageBox.Show("密码不能为空")
Me.TBPwd.Focus()

Else
Dim sql As String = "SELECT * FROM USERINFO WHERE USERID = '" + Me.TBUsername.Text.Trim() + "' AND USERPWD = '" + Me.TBPwd.Text.Trim() + "'"
Dim dt As DataTable = GetDataTable(sql)

If dt.Rows.Count = 0 Then
MessageBox.Show("用户名不存在或密错误", "错误")
Me.TBPwd.Focus()
Else
UserRight = dt.Rows(0)("usertype")
UserID = Me.TBUsername.Text.Trim()
flag = True


这加调用你要启动的画面啊
Me.Close()
End If
End If
End Sub

Private Sub btcancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btcancel.Click
Application.Exit()
End Sub

Private Sub LOGIN_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub
End Class
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wiki14 的回复:]
查看点击事件的代码,
重新启动,
[/Quote]

还是直接跳出了啊。
wiki14 2009-12-18
  • 打赏
  • 举报
回复
查看点击事件的代码,
重新启动,
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zengzhan 的回复:]
断点调试看看
[/Quote]
逐句调试过了,发现主界面的代码没有运行。
qqzeng-ip 2009-12-18
  • 打赏
  • 举报
回复
断点调试看看
wtnu200 2009-12-18
  • 打赏
  • 举报
回复
同意楼上的,
还有就是你已经在Login的取消按钮里加入 Application.Exit()
那在你的FrmMain_Load里就不用再去判断这个Login.ShowDialog()的结果了吧,因为只有确定,他才会继续执行下去。
所以有可能就是在
If Login.DialogResult = Windows.Forms.DialogResult.OK And Login.flag Then'该判读能否满足?
check = False
ElseIf Login.DialogResult = Windows.Forms.DialogResult.Cancel Then
Me.Close(),屏蔽后再测试!
check = False
End If
这里出错,你可以断点看看跳出前运行到那里,然后再分析就行。
呵,我电脑没vs,个人意见。

a854468521 2009-12-18
  • 打赏
  • 举报
回复
Private Sub FrmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim check As Boolean = True
Try
Do
Dim Login As New LOGIN
Login.ShowDialog()

If Login.DialogResult = Windows.Forms.DialogResult.OK And Login.flag Then'该判读能否满足?
check = False
ElseIf Login.DialogResult = Windows.Forms.DialogResult.Cancel Then
Me.Close(),屏蔽后再测试!
check = False
End If

Loop While check

If UserRight = 1 Then
Me.SystemUser.Visible = False
ElseIf UserRight = 2 Then
Me.SystemUser.Visible = False
Me.PIman.Visible = False
End If

Catch ex As Exception
WriteErr(ex)
End Try
End Sub
Private Sub user_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SystemUser.Click
Dim FrmUser As New FrmUser
FrmUser.MdiParent = Me
FrmUser.Show()
End Sub

Private Sub Changemypwd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ChangeMyPwd.Click
Dim ChangePwd As New ChangePwd
ChangePwd.ShowDialog()
End Sub

Private Sub Exitme_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitMe.Click
ExitMe.Visible = False
SystemUser.Visible = False
PIman.Visible = False
PIQuery.Visible = False
End Sub

Private Sub Relogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReLogin.Click
Dim check As Boolean = True
Try
Do
Dim Login As New LOGIN
Login.ShowDialog()

If Login.DialogResult = Forms.DialogResult.OK And Login.flag Then
check = False
ElseIf Login.DialogResult = Forms.DialogResult.Cancel Then
Me.Close()
check = False
End If

Loop While check

If UserRight = 0 Then
Me.SystemUser.Visible = True
Me.PIman.Visible = True
Me.PIQuery.Visible = True
ElseIf UserRight = 1 Then
Me.PIman.Visible = True
Me.PIQuery.Visible = True
ElseIf UserRight = 2 Then
Me.PIQuery.Visible = True
End If

Catch ex As Exception
WriteErr(ex)
End Try
End Sub
End Class
贝隆 2009-12-18
  • 打赏
  • 举报
回复
单步调试不就能发现错误何在了吗?
艾乐飞 2009-12-18
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 txd159 的回复:]
LOGIN窗体里判断登录合法后,显示FrmMain的代码是什么?
贴出来
[/Quote]
3个代码全贴出来了啊,貌似就是LOGIN确认以后没有返回主界面的代码。
txd159 2009-12-18
  • 打赏
  • 举报
回复
如果是调用 FrmMain.ShowDialog() 应该会有问题,可见窗体不能再用ShowDialog().
换Show()试试
txd159 2009-12-18
  • 打赏
  • 举报
回复
LOGIN窗体里判断登录合法后,显示FrmMain的代码是什么?
贴出来
 本课程的主题是: 透析Linux系统编程    不同于市面上的课程,只会把核心主题放到函数的讲解,本课程的核心主题是 Linux系统编程的经验总结 ;    当你在系统编程中,调用一个系统调用来解决问题时,是否考虑过 该系统调用是否会对系统性能带来影响?是否还有最优的方式?    当你在系统编程过程中,遇到问题,是否只是检查代码逻辑,而不会去深入底层去查找问题 ?    本课程将一一解决系统编程带给你的难点,疑点?    比如控制文件IO章节,给系统文件操作的默认行为,应用中如何修改这些行为,给文件IO操作的最优方式;   比如系统调用,给系统调用原理;系统调用的正确使用方式等   比如进程实现,结合底层,对比线程,深入理解两者;给进程使用经验总结;   比如线程同步,不仅引互斥锁 条件变量 自旋锁 读写锁使用方式,同时给各个机制的应用场景 ;   比如 进程间通信,引各个进程间通信的机制原理,给各个进程间通信的应用场景;   比如 信号,给信号在进程中信号处理处理函数的正确使用方式,给在多线程中信号处理的正确方式;   比如 共享库,给共享库的实现机制,给共享库的正确使用方式;   同时 会讲解 系统安全问题 ; 可执行程序的静态布局和动态布局 ;灵活使用内存映射和虚拟内存;系统事件跟踪;   给程序性能的调优思路;    丰富的项目实例讲解 ,提供宝贵的商业项目开发经验 ; 

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧