一般登錄界面,可以分為下面幾種:1.系統管理員設定密碼,使用者用這個密碼登錄;2.使用者登錄之後可以自行改設一個連系統管理員都不知道的密碼;3.系統管理員可以設定使用者的權限。
當年我們公司使用管理軟體,尤其是財務軟體的時候,我就非常難適應系統管理員設置一切的操作方, -- 那時候通常公司的財務主管是財會軟體系統的系統管理員,他們設定的密碼連公司的總經理都不見得知道,這樣的操作方式顯然和實際公司的運作不一致,所以幾乎所有的老闆都會排斥.我回想我更年輕時公司電腦室的經理曾經私下跟我發牢騷,說受夠了財務長,要不是良心不允許,他真的想在程式上做些手腳,讓集團知道他的貢獻比財務長高 -- 不管是不是因為這位同事的關係,還是管理觀念,我一直不太信任系統管理員在沒有監督的情況下封閉的使用公司的管理軟體。一個公司的財會機構,財務,會計,出納都必須分工,互相制衡,如此才能有效避免人為的疏忽以及舞弊,摸得到看得見的手工帳尚且如此,更何況什麽都查不到的電腦軟體?
當年我的做法很簡單,請財務部主管,電腦室主管還有我的秘書一起合作。財務部主管按照財務機制設定使用者的權限,交給電腦室主管設定,而系統管理員的密碼由我的秘書設定。
現在我在設計管理系統,自然也會想到使用者的顧忌與效果,當然也很好奇當年使用的軟體是怎麼設計這些功能的。上面說的三個方式,都非常困難,也是目前我卡住的地方,第2,第3就先別說了,先講第一個。
孫老師的指導方法很簡單,用宏工具可以設定一個內置密碼的登錄界面。如果要改密碼,必須先登錄之後在宏設計裡面改。這個我已經完成了。(當然,書上也寫錯一些地方,有些是老師不小心寫錯的,有的是印刷廠排版排錯的,總共四個地方有“蟲”,之所以將這個分類命名為“從抓一條蟲開始”,就是記錄這個過程,給自己鼓勵。)
仲老師的指導方式,看似簡單,但一直沒有達到效果。以下是我在網上搜索的結果,看來,不是只有我有這個問題。同好們好像都完成了,而我還是沒有解決。多項排錯之後,我目前考慮是,在工程管理器寫VBA代碼的時候,顯示不出英文的單引號,我還在想怎麼測試這個問題呢。
來,給各位格友看看我的問題:
关于access2010创建账户密码登陆框
2012-04-04 10:56匿名 | 分类:数据库DB | 浏览1545次
按照access2007教程做了个有密码的登陆框但是无法运行弹出错误调试什么的
以下是教程代码:
If IsNull(Me.管理用户) Then
MsgBox "请输入管理用户的帐号!", vbQuestion
Exit Sub
End If
If IsNull(Me.登录密码) Then
MsgBox "请输入管理用户的登录密码!", vbQuestion
Exit Sub
End If
If adlogin = True Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "职员考勤主界面"
Else
MsgBox " 管理用户帐号或密码错误,请重新输入! ", vbCritical
Exit Sub
End If
Public Function adlogin() As Boolean
Dim str As Database
Dim rs
Set str = CurrentDb
Set rs = str.OpenRecordset("select 管理用户,登录密码 from 管理员信息 where 管理用户= '" & Me.管理用户 & "' and 登录密码='" & Me.登录密码 & "'")
If Not rs.EOF Then
If rs.Fields("登录密码") = Me.登录密码 Then adlogin = True
End If
End Function
If MsgBox(" 您是否确定退出本系统? 按 [ 是 ] 确定 按 [ 否 ] 取消 ", vbQuestion + vbYesNo) = vbYes Then
DoCmd.Quit acQuitSaveAll
End If
--------------------------------------分割线------------------------------
错误行:
Set rs = str.OpenRecordset("select 管理用户,登录密码 from 管理员信息 where 管理用户= '" & Me.管理用户 & "' and 登录密码='" & Me.登录密码 & "'")
重复做了3变还是有错误 不知道是怎么回事
分享到:
2012-04-10 10:17提问者采纳
你是不是做得太麻烦了;ACCESS还不好解决,你直接给窗体指定 用户表做数据源
Private Sub 登陆_Click()
If Trim(用户名) = Me.用户名 And Trim(密码) = Me.密码 Then
DoCmd.Close
DoCmd.OpenForm ("职员考勤主界面")
Else: MSGBOX("错误提示")
Me.SetFocus
Me.用户名= ""
Me.密码 = ""
End If
End Sub
你别把自己搞糊涂了,没有哪个动作去调用函数查数据源,都没查到数据源怎么判断,很简单的问题别想太复杂了,如果你觉得不该用窗体数据源,那你就定义一个连接吧,呼叫连接一样的效果,消息对话框随你怎么写.还有,你存在一个根本性的错误:你定义的不是窗体数据源,怎么用窗体去筛选,那就判断数据连接是否查询到了记录就行了,而不是判断窗体控件是否为NULL.有两个办法,1.判断查询有没有记录来决定登陆事件2.给控件指定到数据源,判断控件是否为空查询.改一下思路,很简单的
评论(2) | 1
各种 trim 函数的语法如下:
LTRIM(字串):将字串左边的空格移除。
RTRIM(字串): 将字串右边的空格移除。
TRIM(字串): 将字串首尾两端的空格移除,作用等于RTRIM和LTRIM两个函数共同的结果。
ALLTRIM(字串):将字串左右边两边的空格移除。
例1:
TRIM(' Sample ');
结果:
'Sample'
例2:
LTRIM(' Sample ');
结果:
'Sample '
例3:
? RTRIM(' Sample ');
结果:
' Sample'
ALLTRIM(" Sample ")
结果:
"Sample"
CurrentDb.OpenRecordset是什么意思
2010-08-09 14:09 提问者悬赏:20分 | opwquiwq | 分类:VB | 浏览3754次
分享到:
2010-08-18 02:30网友采纳
CurrentDb是你的数据库对象
OpenRecordset是打开结果集的意思。打个比方,Set RS=CurrentDB.OpenRecordset("麻烦服务器帮我查下AAAA数据表里2003年以前的所有记录") 'SQL语句翻译:"Select * From AAAA Where dDate<'2003-1-1'"
服务器查询后,也许查到了20条记录,把结果返回、装在了RS里,RS里存的就是结果集数据,RS就是结果集类型(Recordset)。
其他1条回答
2010-08-09 14:23远风的梦想家 | 十二级
一般用法是set rs = cureentdb.openrecordset(....)是用来打开一个记录集的
简单的VB代码.....
2011-06-29 20:43wr394708958 | 分类:VB | 浏览248次
Dim str As Database
Dim rs
Set str = CurrentDb
Set rs = str.OpenRecordset("select 管理用户,登录密码 from 管理员信息 where 管理用户= '" & Me.管理用户 & "' and 登录密码='" & Me.登录密码 & "'") 【显示这句错误438,对象不支持改属性和方法】
If Not rs.EOF Then
If rs.Fields("登录密码") = Me.登录密码 Then adlogin = True
End If
End Function
分享到:
2011-06-29 22:17提问者采纳
Function opentable(byval txtPath as string) '【功能:建立数据库连接;状态:完成】
Set conn = New ADODB.Connection
conn.CursorLocation = adUseClient
conn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" & txtPath & ";"
Set res = New ADODB.Recordset
End Function
Function closetable() '【功能:关闭数据库连接;状态:完成】
conn.Close
End Function
set res=new adodb.recordset
res.Open "select 管理用户,登录密码 from 管理员信息 where 管理用户= '" & Me.管理用户 & "' and 登录密码='" & Me.登录密码 & "'"
If Not res.EOF Then
If rs.Fields("登录密码") = Me.登录密码 Then adlogin = True
End If
追问
终于能编译过去了。。太谢谢了。。可是它提示用户和密码不对,请你再帮我看看,我没有什么基础。。....
上面那段代码我不需要再自己改动什么地方了吗?
回答
上面那段不需要再改动。
哪里提示用户和密码不对?如果可行的话,你把工程文件全部打包发给我(379650356@qq.com)
出于保密需求的话,你至少把这一段发完整……好吗?
提问者评价
谢了,我已经解决了~
评论 | 0 0
sunruisunrui | 来自团队 永霸天下 | 十级 采纳率40%
擅长: VB 数据库DB C#/.NET Windows 欧美明星
Access的问题,请大家帮我
2012-04-16 15:58rensiming1 | 分类:数据库DB | 浏览86次
Option Compare Database
Private Sub 登陆_Click()
If IsNull(Me.请输入用户名) Then
MsgBox "请输入用户名", vbQuestion
Exit Sub
End If
If IsNull(Me.输入用户密码) Then
MsgBox "请输入密码", vbQuestion
Exit Sub
End If
If adlogin = True Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "管理窗体"
Else
MsgBox "管理员或密码错误,请重新输入!", vbCritical
Exit Sub
End If
End Sub
Public Function adlogin() As Boolean
Dim str As Database
Dim rs As Recordset
Set str = CurrentDb
Set rs = str.OpenRecordset("select 管理员姓名,管理员密码 from 管理员 where 管理员姓名='" & Me.请输入用户名 & "" And 管理员密码 = "" & Me.输入用户密码 & "'")
If Not rs.EOF Then
If rs.Fields("管理员密码") = Me.输入用户密码 Then adlogin = True
End If
End Function
这个在运行时显示“运行时错误‘13’类型不匹配”
分享到:
2012-04-19 12:06提问者采纳
& "" And 管理员密码 = "" & 错误,要改成:& "' And 管理员密码 = '" &,即表达式计算后其值是字符串的要用 ' 而非 " 。头尾用对了(where 管理员姓名='" 及Me.输入用户密码 & "'"用对了)
,中间用错了!另外如果密码是数字,则后面的两个 ' 要去掉!
提问者评价
谢谢你,在你的帮助下,我成功了
| 1 0
qyx7137 | 四级 采纳率66%
擅长: 系统软件 数据库DB 财务税务 保险 股票
按默认排序 | 按时间排序
【求助】哪位大虾帮忙分析一下每行VB代码,高分求救。。。。万分感谢。。
2012-04-20 16:01 金玉小凡 | 分类:VB | 浏览89次
Option Explicit
Private Sub CboUserName_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
End Sub
Private Sub CmdOK_Click()
If IsNull(Me.cboUserName) Then
MsgBox "请输入您的用户名!", vbQuestion
Exit Sub
End If
If Login = True Then
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "公司进销存管理系统"
Else
MsgBox "用户名或密码不正确!", vbCritical
Exit Sub
End If
End Sub
Public Function Login() As Boolean
Dim curdb As Database
Dim curRS As Recordset
Set curdb = CurrentDb
Set curRS = curdb.OpenRecordset("SELECT 密码 FROM 员工信息表 WHERE 姓名 ='" & Me.cboUserName & "'")
If Not curRS.EOF Then
If curRS.Fields("密码") = Me.TxtPwd Then Login = True
End If
End Function
下载知道APP
10分钟有问必答!
建议:可使用微信的“扫一扫”功能扫描下载
分享到:
2012-04-20 18:13 提问者采纳
Public Function Login() As Boolean
Dim curdb As Database '声明数据库
Dim curRS As Recordset '声明记录集
Set curdb = CurrentDb '当前数据库
Set curRS = curdb.OpenRecordset("SELECT 密码 FROM 员工信息表 WHERE 姓名 ='" & Me.cboUserName & "'") '打开记录集(),返回"姓名"="XX用户名"的记录中的密码字段值
'如果记录集中有记录,而且"密码"字段值=TxtPwd文本框中的值,则返回TRUE. 否则返回False
If Not curRS.EOF Then
If curRS.Fields("密码") = Me.TxtPwd Then Login = True
End If
End Function
Private Sub CmdOK_Click()
'必须在ComboBox中的选择一个用户名
If IsNull(Me.cboUserName) Then
MsgBox "请输入您的用户名!", vbQuestion
Exit Sub
End If
'调用Login,验证密码,
If Login = True Then '若返回True, 用DoCmd关闭本窗体,并打开窗体"管理系统"
DoCmd.Close acForm, Me.Name
DoCmd.OpenForm "公司进销存管理系统"
Else '若返回False,警告用户,不打开"管理系统"
MsgBox "用户名或密码不正确!", vbCritical
Exit Sub
End If
End Sub
追问
Option Explicit
Private Sub CboUserName_NotInList(NewData As String, Response As Integer)
Response = acDataErrContinue
End Sub
这是上面这段代码前的代码,是什么意思。
回答
事件: CboUserName_NotInList(NewData As String, Response As Integer)
当用户在组合框的文本框部分输入了不属于组合框列表中的值时,NotInList事件发生。
Response = acDataErrContinue '表示不显示警告信息,也不增加新值到列表框中。(详细细节请参见微软的帮助:http://support.microsoft.com/kb/197526 (使用 NotInList 事件来向组合框中添加记录))
提问者评价
谢谢
评论 | 给力0不给力0
If rs.Fields("管理员密码") = Me.输入用户密码 Then adlogin = True
应该是这句话。把程序给我我帮你看吧
| 0 0
等待您来回答
怎样在access窗体加载时就使一个文本框取得焦点?
2012-08-14 16:56fyx1204 | 分类:数据库DB | 浏览279次
分享到:
2012-08-14 18:51提问者采纳
在加载事件中输入文本框获得焦点,如下:
Private Sub Form_Load()
Me.文本框名.SetFocus
End Sub
在Access数据库窗体中怎么实现一个文本框中输入内容,在另一个文本框中显示根本刚才输入的内容,显示出结
2013-05-30 15:23 提问者悬赏:30分 | 魑魅魍魉魂魄瑰 | 分类:数据库DB | 浏览352次
有个表 姓名 年龄
我有2个文本框“姓名”“年龄”
我想输入姓名后,年龄那个文本框直接出结果。
不太会弄,请指教一下。谢谢了!
分享到:
2013-05-30 15:54网友采纳
年龄文本框,设置其数据来源:
=dlookup("[年龄字段名称]","[表名]","姓名='" & me.[姓名文本框名称] & "'")
以上[ ]中的名称都改为你自己的实际名称,祝你成功!
以上,是同一編程代碼的不同補救方式。第一個問題的同好用的是仲老師的課本。
這些同好提出的方式我都試了,但沒有用,所以,還在慢慢想該怎麼辦呢。