網路城邦
上一篇 回創作列表 下一篇   字體:
這條蟲不好抓
2014/05/15 14:48:14瀏覽363|回應3|推薦8

一般登錄界面,可以分為下面幾種: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(字串): 将字串首尾两端的空格移除,作用等于RTRIMLTRIM两个函数共同的结果。

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.[姓名文本框名称] & "'")
 
以上[ ]中的名称都改为你自己的实际名称,祝你成功!

 

以上,是同一編程代碼的不同補救方式。第一個問題的同好用的是仲老師的課本。

這些同好提出的方式我都試了,但沒有用,所以,還在慢慢想該怎麼辦呢。

 

( 知識學習科學百科 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=bonjour2007002&aid=13354574

 回應文章

MayMay
等級:8
留言加入好友
2014/05/17 12:48

年龄文本框,设置其数据来源:
=dlookup("[年龄字段名称]","[表名]","姓名='" & me.[姓名文本框名称] & "'")
 以上[ ]中的名称都改为你自己的实际名称,祝你成功!

 依照上面的寫法,沒有辦法達成,要改成:

=DlookUp("[年齡字段名稱]","[表名]","姓名='"&[Forms]![窗體名]![姓名文本框名]&"'")

1. 即 Me 要改寫成 Forms!窗體名!

2. Forms!窗體名! 或者[Forms]![窗體名]!都可以,

3.但 年齡字段名稱,表名,姓名文本框名 都必須要加上[].


MayMay
等級:8
留言加入好友
2014/05/15 18:08

今天是我的幸運日 -- 我做成功了。由於排掉單引號的出錯的可能,我就專心在代碼上。

我試試只選擇一個字段(仲老師選兩個字段),運行結果 -- OK。

沒有壓力之餘,我乾脆把運行時報錯的工具也全試試用法。

之後再將仲老師教導的代碼重新寫一遍,運行結果 -- OK。

這次這條蟲怎麼抓的,我都不知道。

 


MayMay
等級:8
留言加入好友
2014/05/15 16:36

關於英文單引號的抓錯:

1. 以前我也曾在這台電腦上遇到這個問題.後來我試試這台電腦的其他語言,發現韓文的英文版可以解決這個問題.但今天試了半天,不行!

2. 我就用工程管理器顯示的英文單引號(看起來很像中文的樣子,而且和英文雙引號非常不同,方向還相反)試試看編寫"註釋語句",如果可以編譯,表示系統認為是英文單引號.結果 -- OK!

因此我得到的結論是:

1. 單引號沒有問題.

2. 還要找出其他問題.