做一个学籍成绩管理软件,以下是登录部分的代码,
程序可以运行,但输入任意用户名,确定后即报错,Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Public OK As Boolean
Dim miCount As IntegerPrivate Sub Form_Load() Dim sBuffer As String
Dim lSize As Long sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
txtUser.Text = ""
Else
txtUser.Text = vbNullString
End If
OK = False
miCount = 0
End SubPrivate Sub cmdCancel_Click()
OK = False
Me.Hide
End SubPrivate Sub cmdOK_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
'以下是检查用户名密码
UserName = ""
If Trim(txtUser.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUser.SetFocus
Else
txtSQL = "select * from user_Info where user_ID = '" & txtUser.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = True Then 《=出错的语句!!!!!! MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUser.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUser.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub运行到 If mrc.EOF = True Then 的时候报错“对象变量或with块变量未设置”,
程序所需数据结构已经生成,并已设置了初始用户名密码,
但问题还是没有解决,望高手指点!!!
程序可以运行,但输入任意用户名,确定后即报错,Option Explicit
Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpbuffer As String, nSize As Long) As Long
Public OK As Boolean
Dim miCount As IntegerPrivate Sub Form_Load() Dim sBuffer As String
Dim lSize As Long sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize)
If lSize > 0 Then
txtUser.Text = ""
Else
txtUser.Text = vbNullString
End If
OK = False
miCount = 0
End SubPrivate Sub cmdCancel_Click()
OK = False
Me.Hide
End SubPrivate Sub cmdOK_Click()
Dim txtSQL As String
Dim mrc As ADODB.Recordset
Dim MsgText As String
'以下是检查用户名密码
UserName = ""
If Trim(txtUser.Text = "") Then
MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUser.SetFocus
Else
txtSQL = "select * from user_Info where user_ID = '" & txtUser.Text & "'"
Set mrc = ExecuteSQL(txtSQL, MsgText) If mrc.EOF = True Then 《=出错的语句!!!!!! MsgBox "没有这个用户,请重新输入用户名!", vbOKOnly + vbExclamation, "警告"
txtUser.SetFocus
Else
If Trim(mrc.Fields(1)) = Trim(txtPassword.Text) Then
OK = True
mrc.Close
Me.Hide
UserName = Trim(txtUser.Text)
Else
MsgBox "输入密码不正确,请重新输入!", vbOKOnly + vbExclamation, "警告"
txtPassword.SetFocus
txtPassword.Text = ""
End If
End If
End If
miCount = miCount + 1
If miCount = 3 Then
Me.Hide
End If
Exit Sub
End Sub运行到 If mrc.EOF = True Then 的时候报错“对象变量或with块变量未设置”,
程序所需数据结构已经生成,并已设置了初始用户名密码,
但问题还是没有解决,望高手指点!!!
解决方案 »
- 几行代码从asp如何移植到vb.net
- VB的打开文件对话框的一个小问题。
- 怎么用WINSOCK拦接封包?高人指点下啊~~~~~~~~~~`
- 怎样让MDI子窗体永显示在最底层,其它子窗体时打开时显示在该窗体的上层,即使用鼠标点击它也让它显示在最底层.
- vb调用数据库!
- 如何解决:生成的.exe 文件,在另一台计算机上运行提示 MSCcomm.ocx引用的是MSCcomm是过期版本,请用与应用程序同一版本的MSCcomm?
- 一个好地方!~
- 师兄们大家好 我想请教一下
- 求救=高分
- 一个比较高深的难题!!!!
- 最后100分拉!!!便宜让你拣那!!!!!!!!!!!大放血!!!!!!!
- VB调用VC++编写的DLL文件,报"实时错误‘49’DLL调用约定错误,请问是什么原因呀,谢谢
语句错误或者是
ExecuteSQL(txtSQL, MsgText)
函数有问题,用我的函数
http://community.csdn.net/Expert/topic/3194/3194714.xml?temp=1.125735E-02
函数的问题
该模块如下:Option Explicit
Public fMainForm As frmMain
Public UserName As StringSub Main()
Dim fLogin As New frmLogin
fLogin.Show vbModal
If Not fLogin.OK Then
'Login Failed so exit app
End
End If
Unload fLogin Set fMainForm = New frmMain
fMainForm.Show
End SubPublic Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "FileDSN=studentinfo.dsn;UID=sam;PWD=sam"
End FunctionPublic Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'executes SQL and returns Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open ConnectString
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
'rst.MoveLast 'get RecordCount
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误: " & _
Err.Description
Resume ExecuteSQL_Exit
End FunctionPublic Function Testtxt(txt As String) As Boolean
If Trim(txt) = "" Then
Testtxt = False
Else
Testtxt = True
End If
End Function请帮帮忙啊
Public Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "FileDSN=studentinfo.dsn;UID=sam;PWD=sam"
End Function直接:
Public Function ExecuteSQL(ByVal SQL _
As String, MsgString As String) _
As ADODB.Recordset
'executes SQL and returns Recordset
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sTokens() As String
On Error GoTo ExecuteSQL_Error
sTokens = Split(SQL)
Set cnn = New ADODB.Connection
cnn.Open "studentinfo","sam","sam"
If InStr("INSERT,DELETE,UPDATE", _
UCase$(sTokens(0))) Then
cnn.Execute SQL
MsgString = sTokens(0) & _
" query successful"
Else
Set rst = New ADODB.Recordset
rst.Open Trim$(SQL), cnn, _
adOpenKeyset, _
adLockOptimistic
'rst.MoveLast 'get RecordCount
Set ExecuteSQL = rst
MsgString = "查询到" & rst.RecordCount & _
" 条记录 "
End If
ExecuteSQL_Exit:
Set rst = Nothing
Set cnn = Nothing
Exit Function
ExecuteSQL_Error:
MsgString = "查询错误: " & _
Err.Description
Resume ExecuteSQL_Exit
End Function
运行VB,选择“工程\引用”命令,引用“Microsoft AetiveX Date 2.x Library”
Dim rst As ADODB.Recordset
不要放在函数中,放在模块中:
Public cnn As ADODB.Connection
Public rst As ADODB.Recordset
Public cnn As ADODB.Connection