问题描述
代码如下大家帮忙看一下,谢啦!!!PrivateSubForm_Load()DimrstAsADODB.RecordsetDimSQLAsStringDimmsgAsStringDimrightsAsString'查找权限SQL="selectUPowerfromUIwhereUID='"&Text1&"'"Setrst=SelectSQL(SQL,msg)Ifrst.RecordCount>0Thenrights=Trim(rst.Fields(0))rst.CloseElseMsgBox("没有用户信息!")ExitSubEndIf'设置权限IfInStr(rights,"职能设置")Then职能设置.Enabled=TrueMe.Toolbar1.Buttons(1).Enabled=TrueMe.Toolbar1.Buttons(3).Enabled=TrueElse职能设置.Enabled=FalseMe.Toolbar1.Buttons(3).Enabled=FalseMe.Toolbar1.Buttons(1).Enabled=FalseEndIfIfInStr(rights,"员工信息管理")Then员工信息管理.Enabled=TrueMe.Toolbar1.Buttons(5).Enabled=TrueMe.Toolbar1.Buttons(7).Enabled=TrueElse员工信息管理.Enabled=FalseMe.Toolbar1.Buttons(5).Enabled=FalseMe.Toolbar1.Buttons(7).Enabled=FalseEndIfIfInStr(rights,"工资管理")Then工资管理.Enabled=TrueMe.Toolbar1.Buttons(9).Enabled=TrueMe.Toolbar1.Buttons(11).Enabled=TrueElse工资管理.Enabled=FalseMe.Toolbar1.Buttons(9).Enabled=FalseMe.Toolbar1.Buttons(11).Enabled=FalseEndIfIfInStr(rights,"员工考勤管理")Then员工考勤管理.Enabled=TrueMe.Toolbar1.Buttons(13).Enabled=TrueElse员工考勤管理.Enabled=FalseMe.Toolbar1.Buttons(13).Enabled=FalseEndIfIfInStr(rights,"工作考核管理")Then工作考核管理.Enabled=TrueMe.Toolbar1.Buttons(15).Enabled=TrueElse工作考核管理.Enabled=FalseMe.Toolbar1.Buttons(15).Enabled=FalseEndIf用户管理.Enabled=InStr(rights,"用户管理")EndSub类模块中的代码;PublicFunctionGetConnStr()AsString'得到数据库连接字符串,用户可以在此处设置连接字符串'UserID是数据库用户ID,PassWord是登录密码GetConnStr="Provider=SQLOLEDB.1;PersistSecurityInfo=True;UserID=sa;PassWord=111;InitialCatalog=人事管理系统;DataSource=LBWIN7"EndFunctionPublicFunctionOpenConn(ByRefConnAsADODB.Connection)AsBoolean'打开数据库连接,链接成功返回true,出错返回falseSetConn=NewADODB.ConnectionOnErrorGoToErrorHandle'出错处理Conn.OpenGetConnStr'打开数据库连接OpenConn=TrueExitFunctionErrorHandle:'如果出错,则进行错误处理MsgBox"连接数据库失败!请重新连接!"OpenConn=FalseExitFunctionEndFunctionPublicFunctionSelectSQL(ByValSQLAsString,ByRefmsgAsString)AsADODB.Recordset'执行SQL语句,返回ADODB.RecordsetDimConnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToErrorHandle'出错处理'判断SQL语句sTokens=Split(SQL)'调用Split函数拆分SQL语句IfInStr("SELECT",UCase((sTokens(0))))Then'如果是Select语句'打开数据库连接IfOpenConn(Conn)Then'如果打开连接成功,就进行查询操作Setrst=NewADODB.Recordsetrst.CursorLocation=adUseClient'执行查询操作rst.OpenTrim$(SQL),Conn,adOpenDynamic,adLockBatchOptimisticSetSelectSQL=rst'返回函数值msg="查询到"&rst.RecordCount&"条记录!"EndIfElsemsg="SQL语句有误:"&SQLEndIfFinally_Exit:'程序结束的时候进行对象销毁工作Setrst=NothingSetConn=NothingExitFunctionErrorHandle:'如果SQL语句执行出错,则提示出错信息并转到Finally_ExitmsgString="查询错误:"&Err.DescriptionResumeFinally_ExitEndFunctionPublicFunctionBatchSelectSQL(ByValSQLAsString,ByRefmsgAsString)AsADODB.Recordset'执行SQL语句,返回批处理的ADODB.RecordsetDimConnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToErrorHandle'出错处理'判断SQL语句sTokens=Split(SQL)'调用Split函数拆分SQL语句IfInStr("SELECT",UCase((sTokens(0))))Then'如果是Select语句'打开数据库连接IfOpenConn(Conn)Then'如果打开连接成功,就进行批查询操作Setrst=NewADODB.Recordsetrst.CursorLocation=adUseClient'执行批查询操作rst.OpenTrim$(SQL),Conn,adOpenDynamic,adLockBatchOptimisticSetSelectSQL=rst'返回函数值msg="查询到"&rst.RecordCount&"条记录!"EndIfElsemsg="SQL语句有误:"&SQLEndIfFinally_Exit:'程序结束的时候进行对象销毁工作Setrst=NothingSetConn=NothingExitFunctionErrorHandle:'如果SQL语句执行出错,则提示出错信息并转到Finally_ExitmsgString="批查询错误:"&Err.DescriptionResumeFinally_ExitEndFunction
解决方案
解决方案二:
PublicFunctionSelectSQL(ByValSQLAsString,ByRefmsgAsString)AsADODB.Recordset'执行SQL语句,返回ADODB.RecordsetDimConnAsADODB.ConnectionDimrstAsADODB.RecordsetDimsTokens()AsStringOnErrorGoToErrorHandle'出错处理'判断SQL语句sTokens=Split(SQL)'调用Split函数拆分SQL语句IfInStr("SELECT",UCase((sTokens(0))))Then'如果是Select语句'打开数据库连接IfOpenConn(Conn)Then'如果打开连接成功,就进行查询操作Setrst=NewADODB.Recordsetrst.CursorLocation=adUseClient'执行查询操作rst.OpenTrim$(SQL),Conn,adOpenDynamic,adLockBatchOptimisticSetSelectSQL=rst'返回函数值msg="查询到"&rst.RecordCount&"条记录!"EndIfElsemsg="SQL语句有误:"&SQLEndIfFinally_Exit:'程序结束的时候进行对象销毁工作Setrst=NothingSetConn=NothingExitFunctionErrorHandle:'如果SQL语句执行出错,则提示出错信息并转到Finally_ExitmsgString="查询错误:"&Err.DescriptionResumeFinally_ExitEndFunction这个函数内部出错,导致返回了空的结果集。检查连接字符串、SQL。或者删除掉OnErrorGoToErrorHandle,看看报什么错。
解决方案三:
GetConnStr="Provider=SQLOLEDB.1;PersistSecurityInfo=True;UserID=sa;PassWord=111;InitialCatalog=人事管理系统;DataSource=LBWIN7"看提示是数据库未连接.查有个正文分号问题,改成英文的即可GetConnStr="Provider=SQLOLEDB.1;PersistSecurityInfo=True;UserID=sa;PassWord=111;InitialCatalog=人事管理系统;DataSource=LBWIN7"