我建立了一個登陸界面,裡面有兩個文本框(checkuid,checkpwd),三個按鈕(logon,logout,lognew),ORACLE中建立了專門的一個超級用戶的信息表,裡面有(usname,uspwd),現在通過以下方式進行連接;
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim uid As String
Dim pwd As String
Dim con As String
Dim strtablename As String
Dim fld As ADODB.Field
Set conn = New ADODB.Connection
con = "Provider=MSDAORA.1;Password=system;User ID=system;Data Source=tii;Persist Security Info=True"
conn.ConnectionString = con
conn.CursorLocation = adUseClient
conn.Open
strtablename = "users"
If conn.State = adStateOpen Then
MsgBox 數據庫連接成功!", vbOKOnly, "提示"
Else
MsgBox "數據庫連接失敗,請檢查網絡設置!", vbOKOnly, "提示"
End If
到了這一步我就不知道該怎么做了,通過設置按鈕logon,在數據庫中進行檢索,如果發現賬號和密碼均對,則進入 ,如果出現錯誤做錯誤處理!
主要就是不知道怎么連接到表中的某一數據進行檢索,請大蝦們幫幫偶~~~不勝感激!!!
Dim conn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim uid As String
Dim pwd As String
Dim con As String
Dim strtablename As String
Dim fld As ADODB.Field
Set conn = New ADODB.Connection
con = "Provider=MSDAORA.1;Password=system;User ID=system;Data Source=tii;Persist Security Info=True"
conn.ConnectionString = con
conn.CursorLocation = adUseClient
conn.Open
strtablename = "users"
If conn.State = adStateOpen Then
MsgBox 數據庫連接成功!", vbOKOnly, "提示"
Else
MsgBox "數據庫連接失敗,請檢查網絡設置!", vbOKOnly, "提示"
End If
到了這一步我就不知道該怎么做了,通過設置按鈕logon,在數據庫中進行檢索,如果發現賬號和密碼均對,則進入 ,如果出現錯誤做錯誤處理!
主要就是不知道怎么連接到表中的某一數據進行檢索,請大蝦們幫幫偶~~~不勝感激!!!
set rs=conn.execute(sql)
if not rs.eof then
if rs!uspwd=checkpwd then
msgox "OK"
endif
endif
*****************************************************************************
欢迎使用CSDN论坛专用阅读器 : CSDN Reader(附全部源代码)
http://feiyun0112.cnblogs.com/
你的代碼還是有點小問題,我稍微處理了一下~~~
SQL = "select * from users where usname='" & checkuid.Text & "'"
Set rs = conn.Execute(SQL)
If Not rs.EOF Then
If rs!usname = checkuid.Text Then
End If
If rs!uspwd = checkpwd.Text Then
MsgBox "OK"
End If
Else
MsgBox ("錯誤!")
End If現在還在調試當中,因為還有一個表,是普通用戶表,還要對裡面的信息進行匹配~~~~繼續研究ing~~~~
如果在超級用戶的信息表中找不到相應數據,然後再到普通用戶信息表(stuinfo)中找,當用戶名和密碼都為(stuid)裡面的數據時,同樣可以進入!!
O(∩_∩)O~~~~~
Set rs = conn.Execute(SQL)
If Not rs.EOF Then
else
SQL = "select * from stuinfo where usname='" & checkuid.Text & "'"
Set rs = conn.Execute(SQL)
endif
中間那個rs!uspwd是什麽意思???就是那個!的作用????不是“非”吧
rs.Open strtablename, con
SQL = "select * from users where usname='" & checkuid & "'"
Set rs = conn.Execute(SQL)
If Not rs.EOF Then
If rs!usname = checkuid.Text Then
End If
If rs!uspwd = checkpwd.Text Then
MsgBox 超級用戶登陸成功!"
Me.Hide
infoview.Show
infoview.Command2.Enabled = True
infoview.Command3.Enabled = True
infoview.Command4.Enabled = True
infoview.cut.Enabled = True
Else
MsgBox "密碼錯誤,請重新輸入!"
checkpwd.SetFocus
checkpwd.Text = ""
End If
Else
SQL = "select * from stuinfo where stuid='" & checkuid.Text & "'"
Set rs = conn.Execute(SQL)
If rs!stuid = checkuid.Text Then
Else
MsgBox "用戶名錯誤,請重新輸入!"
checkuid.Text = ""
checkpwd.Text = ""
checkuid.SetFocus
End If
If rs!stuid = checkpwd.Text Then
MsgBox "普通用戶登陸成功!"
Me.Hide
infoview.Show
Else
MsgBox "密碼不正確,請重新輸入!"
checkpwd.Text = ""
checkpwd.SetFocus
End If
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
End If
運行的時候中間黃色那一段代碼老是要報錯 ,如果做錯誤處理的話,無論是登陸成功還是失敗 ,同樣也會報錯!報的是“可能是EOF或BOF的值為TRUE,或目前的資料錄已經被刪除,所要求的操作需要目前的資料錄!”
大蝦繼續出手~~~~~THANKS!!
不是“非”
是表示记录rs的uspwd字段
也可以写成 rs.fields("uspwd")
Set rs = conn.Execute(SQL)
If rs.RecordCount > 0 Then
If rs!uspwd = checkpwd.Text Then
MsgBox "超級用戶登陸成功!"
Me.Hide
infoview.Show
infoview.Command2.Enabled = True
infoview.Command3.Enabled = True
infoview.Command4.Enabled = True
infoview.cut.Enabled = True
Else
MsgBox "密碼錯誤,請重新輸入!"
checkpwd.SetFocus
checkpwd.Text = ""
End If
Else
SQL = "select * from stuinfo where stuid='" & checkuid.Text & "'"
Set rs2 = conn.Execute(SQL)
If rs2.RecordCount > 0 Then
Else
MsgBox "用戶名錯誤,請重新輸入!"
checkuid.Text = ""
checkpwd.Text = ""
checkuid.SetFocus
End If
If rs2!stuid = checkpwd.Text Then
MsgBox "普通用戶登陸成功!"
Me.Hide
infoview.Show
Else
MsgBox "密碼不正確,請重新輸入!"
checkpwd.Text = ""
checkpwd.SetFocus
End If
rs2.Close
Set rs2 = Nothing
End If
rs.Close
Set rs = Nothing conn.Close
Set conn = Nothing
要新加一个,否则在rs中又用rs就会出错
Set rs = conn.Execute(SQL)
If rs.RecordCount > 0 Then
If rs!uspwd = checkpwd.Text Then
MsgBox "超級用戶登陸成功!"
Me.Hide
infoview.Show
infoview.Command2.Enabled = True
infoview.Command3.Enabled = True
infoview.Command4.Enabled = True
infoview.cut.Enabled = True
Else
MsgBox "密碼錯誤,請重新輸入!"
checkpwd.SetFocus
checkpwd.Text = ""
End If
Else
SQL = "select * from stuinfo where stuid='" & checkuid.Text & "'"
Set rs2 = conn.Execute(SQL)
If rs2.RecordCount > 0 Then
If rs2!stuid = checkpwd.Text Then
MsgBox "普通用戶登陸成功!"
Me.Hide
infoview.Show
Else
MsgBox "密碼不正確,請重新輸入!"
checkpwd.Text = ""
checkpwd.SetFocus
End If
Else
MsgBox "用戶名錯誤,請重新輸入!"
checkuid.Text = ""
checkpwd.Text = ""
checkuid.SetFocus
End If
rs2.Close
Set rs2 = Nothing
End If
rs.Close
Set rs = Nothing conn.Close
Set conn = Nothing
Set rs = conn.Execute(SQL)
If rs.RecordCount > 0 Then
If rs!uspwd = checkpwd.Text Then
MsgBox "超級用戶登陸成功!"
Me.Hide
infoview.Show
infoview.Command2.Enabled = True
infoview.Command3.Enabled = True
infoview.Command4.Enabled = True
infoview.cut.Enabled = True
Else
MsgBox "密碼錯誤,請重新輸入!"
checkpwd.SetFocus
checkpwd.Text = ""
End If
Else
SQL = "select * from stuinfo where stuid='" & checkuid.Text & "'"
Set rs2 = conn.Execute(SQL)
If rs2.RecordCount > 0 Then
If rs2!stuid = checkpwd.Text Then
MsgBox "普通用戶登陸成功!"
Me.Hide
infoview.Show
Else
MsgBox "密碼不正確,請重新輸入!"
checkpwd.Text = ""
checkpwd.SetFocus
End If
Else
MsgBox "用戶名錯誤,請重新輸入!"
checkuid.Text = ""
checkpwd.Text = ""
checkuid.SetFocus
End If
rs2.Close
Set rs2 = Nothing
End If
rs.Close
Set rs = Nothing conn.Close
Set conn = Nothing
这么用会提示他報錯是報的EOF或BOF的值為TRUE,或資料錄的資料不存在 用If rs2.RecordCount > 0 Then 不会有
errDo:
……end sub
代碼如15樓的,但是要記住如果要調用on error goto errhandle語句的話 ,就一定要記得加上exit sub語句。就是jhone99在18樓的那種格式~~~
再次謝謝jhone99~~~~