要實作的功能:
文本框(text1和text2)里重復輸入員工編號
搜索員工表(tb_person),如果搜到以上編號,且status欄位不是“離職”,則員工認證成功,否則顯示“員工已離職”,或者“編號輸入錯誤”
表如下:
000001 John 67801512 男
000002 Jane 67801513 女
000003 Mary 55662222 女
000004 Tony 13526252632 男 離職
不管我輸入以上哪個編號,都是認證成功,但是000004明明已離職了呀
rs2.Open "select * from tb_person where no='" & Text1.Text & "' and no='" & Text2.Text & "'", cnn, adOpenKeyset, adLockOptimistic
If rs2.RecordCount < 1 Then
MsgBox "編號錯誤或不匹配"
Text2.Text = ""
Text1.Text = ""
Text1.SetFocus
Else
If rs2.RecordCount = 1 Then
If rs2.Fields("status").Value <> "離職" Then
MsgBox "員工驗證成功"
Frame1.Visible = True
Text1.Enabled = False
Text2.Enabled = False
Text3.SetFocus
Else
MsgBox "員工已離職,編號失效"
Text2.Text = ""
Text1.Text = ""
Text1.SetFocus
Exit Sub
End If
End If
End If
uj5u.com熱心網友回復:
If rs2.RecordCount = 1 Then
Debug.Print Len(rs2.Fields("status").Value) '檢查一下文本長度,估計有空格'
If Trim$(rs2.Fields("status").Value) <> "離職" Then '去空格再比較'
uj5u.com熱心網友回復:
if trim(text1.text)<>trim(text2.text) then
msgbox "兩次輸入編號不一致!",48,"提示"
exit sub
else
if rs2.state<>adstateclosed then rs2.close
rs2.open " select * from tb_person where [no]='"& trim(text1.text) &"' and status<>'離職'",adopenkeyset,adlockreadonly
if rs2.recordcount=0 then
rs2.close
msgbox "輸入的編號不存在或已經離職!",48,"提示"
exit sub
else
...
end if
end if
uj5u.com熱心網友回復:
這就是典型的資料庫設計不合理啊.你打開資料庫的職員表就可以看到一堆"離職"或"在職",
比較好的做法是status設為數值型, 然后再單獨建一個Staff_Status表來對應status值的具體內容. 將來即使要增加或修改員工狀態, 也只需要修改Staff_Status表的一條記錄而已
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/109574.html
