1樓:匿名使用者
貼出的**問題挺多的(包括用錯屬性和**邏輯及其先後秩序不正確等)。使用ado檢索資料表確實比較麻煩,其實核對使用者名稱和密碼使用dlookup函式會簡便得多。
根據帖出的**原意和思路,建議修改、調整如下:
對不起之前的**有筆誤,現予以更正,執行如有問題請追問
private sub login_click()
'先宣告ado物件等變數
dim conn as new adodb.connection
dim rs as adodb.recordset
dim username as string
dim userpass as string
dim recordlogindata as boolean '此變數用於判斷是否記錄登入資訊
set conn = currentproject.connection
set rs = new adodb.recordset
'先判斷兩個文字框是否為空
if isnull(me.txt_使用者名稱.value) then
msgbox "使用者名稱不能為空,請重新輸入!", vbokonly + vbinformation, "提示資訊"
me.txt_使用者名稱.setfocus
exit sub
elseif isnull(me.txt_密碼.value) then
msgbox "密碼不能為空,請重新輸入!", vbokonly + vbinformation, "提示資訊"
me.txt_密碼.setfocus
exit sub
end if
'開啟「管理使用者」資料表
rs.open "管理使用者", conn '管理使用者是一個管理員的使用者名稱和密碼的資料表
'text屬性只有在文字框獲得焦點的情況下才可使用,
'大多數情況下引用文字框內容應該使用value屬性而不是text屬性
username = txt_使用者名稱 '注意不要使用text屬性,否則會出錯(這裡使用預設屬性value)
userpass = txt_密碼 '注意同上
'迴圈判斷使用者名稱和密碼是否對得上,注意要逐條記錄比對
'原帖**沒有考慮這個問題,它只有在管理使用者表剛好只有一條記錄時才能正確執行
if rs.recordset.recordcount>0 then
do until rs.eof
if rs!使用者名稱=username and rs!密碼=userpass then
recordlogindata =true ' 使用者名稱和密碼均正確,則標識可以記錄登入資訊
exit do '此時已經沒必要繼續下去,跳出迴圈以節省系統開銷
rs.movenext '***之前漏掉了*****
loop
else
msgbox "管理使用者表沒有任何使用者資料!", vbokonly + vbinformation, "提示資訊"
exit sub
end if
'將登入資訊寫入「管理員登入記錄」資料表
rs.close
if recordlogindata =true then
rs.open "管理員登入記錄", conn, adopendynamic, adlockoptimistic
rs.addnew
rs!使用者名稱 = username
rs!登入時間 = now()
'現在登出時間還不確定,暫時無需記錄它
rs.update
rs.close
docmd.close
docmd.openform "機料管理系統"
else
msgbox "管理使用者或密碼錯誤!", vbokonly + vbinformation, "提示資訊"
me.txt_密碼.setfocus
exit sub
end if
end sub
2樓:喻舟
先檢查有沒有打錯字母 或者少打符號吧 上學時學的現在完全不懂了_(:3」ㄥ)_ 抱歉
vb提示使用者定義型別未定義是怎麼回事?
3樓:地表最帥
這種情況一般是你除錯程式裡出現的在系統裡不能識別物件或者字串!
正確的定義:
私人小text1_mouseup(整數「按鈕,按住shift鍵為整數,x單,y單)。
定義:私人:小text1_mouseup(按鈕作為lnteger,shift鍵整數, x為單為single,y)
整數打成為合數的分解公式。
(i和l是不一樣的字母,大寫未能反映的視覺效果)。
沒有lnteger的型別錯了!
vba陣列賦值,VBA陣列的定義與賦值
1 開啟一個excel的檔案,在 中輸入簡單的 比如學生身高 如下圖所示。2 接著,在 中輸入一維陣列的說明文字,滑鼠左鍵單擊 開發工具 選單標籤,在vba控制元件下拉選單中,並選擇按鈕控制元件,如下圖所示。3 然後,在 中繪製出按鈕控制元件,並修改控制元件名稱,比如使用一維陣列的名稱,如下圖所示。...
vba如何將陣列帶入自定義的函式
窗體放一個label和一個command,如下 private sub command1 click dim i,a 19 max,min,sum,a1,a2,a3,a4,a5 as integer label1.caption randomize label1.caption 20名學生成績 vb...
C 類的定義簡單的程式求改錯
instrument is playing piano is playing sax is playing flute is playing press any key to continue include include using namespace std class instrument ...