Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

红尘通用系统提问

兔斯基  发表于:2012-05-10 09:53:26  
复制

套用红烟的通用系统,在一个输入窗体中,有一个“制单人”字段,怎样让这个字段的值默认为当前系统用户?

 

Top
煮江品茶 发表于:2012-05-10 10:01:42

在标准模块中设一个公用变量命名为userID,登录时给userID赋值用户ID。

在该字段所在窗体加载时,给制单人控件(最好是组合框控件,数据源设为用户表)赋值userID(假设是组合框控件)或者赋值为Dlookup("username","用户表","userID=" & userID)(假设为文本框)。



兔斯基 发表于:2012-05-10 10:19:34
红烟的系统用户表名为:USysUsers,字段有FUserID、FUserName等等

兔斯基 发表于:2012-05-10 10:20:37
怎样让“窗体1”中“制单人”组合框的值等于当前登录用户?

兔斯基 发表于:2012-05-10 10:21:45
老汉能不能帮忙下?!

兔斯基 发表于:2012-05-10 10:35:03
传例子上来,在“采购销售”中的“新增采购入库”窗体中,怎样实现:单击“添加”按钮,“制单人”默认为当前登录用户,并且变为灰色不可修改?!点击下载此附件

煮江品茶 发表于:2012-05-10 10:42:29

1、建一个标准模块,或者在现有模块中加一句:

dim userID as inetger

 

 

2、登录按钮的单击事件中在登录成功的判断后面写:

userID=FUserID

 

按道理说如果红尘同志已经写了的登录界面,你就找登录成功的判断语句中他将用户ID赋值给哪个公共变量了,就免去1的要求。

以下假设公共变量名为userID。

 

3、在填制人控件所在的窗体加载事件中写:

me.填制人控件名称.value=userID



兔斯基 发表于:2012-05-10 11:02:48
我看看

兔斯基 发表于:2012-05-10 11:05:52

登录界面里,“登录”按钮事件:

Private Sub cmdLogon_Click()
On Error GoTo Err_cmdLogon_Click

    Dim rst As New ADODB.Recordset  '登录验证用到的临时记录集
    Dim strSQL As String            '记录集数据来源SQL语句
    Dim strWhere As String          'SQL语句中的Where条件
    Dim Strformname As String       '用户身份验证后打开的窗体(一般为面板窗体)
   
    Strformname = "frmMain"
   
    If IsNull(Me.txtUser) Then
        MsgBox "请输入用户ID或用户名。", vbInformation
        Me.txtUser.SetFocus
       
    ElseIf IsNull(Me.txtPassword) Then
        MsgBox "请输入大小写形式正确的密码。", vbInformation
        Me.txtPassword.SetFocus
    Else
        strSQL = "SELECT * FROM USysUsers"
        '如果用户名输入框中输入的是数字,则认为是使用用户ID登录
        If IsNumeric(Me!txtUser) Then
            strWhere = "[FUserID]=" & CLng(Me!txtUser)
        Else
            strWhere = "[FUserName]='" & Me!txtUser & "'"
        End If
        strSQL = strSQL & " WHERE " & strWhere
        '打开一个以输入的用户名或用户ID作为查询条件的记录集
        rst.Open strSQL, CurrentProject.Connection, adOpenKeyset, adLockReadOnly
        '如果为空则说明用户不存在
        If rst.EOF Then
            MsgBox "该用户不存在。请重新输入正确的ID或者用户名。", vbCritical
            Me!txtUser.SetFocus
            Me!txtUser = Null
        Else
            '用户存在但该用户被禁止登录提示
            If Not Nz(rst!FEnabled, False) Then
                MsgBox "该用户被禁止登录,要启用此帐号请联系管理员。", vbCritical
            Else
                '如果用户存在且未被禁止登录,则进行密码验证(密码进行二进制比较,以区分大小写)
                If StrComp(rst!FPassword, RC4(Nz(Me!txtPassword)), vbBinaryCompare) <> 0 Then
                    Me!txtPassword.SetFocus
                    Me!txtPassword = Null
                    MsgBox "密码错误。请重新输入密码,注意使用正确的大小写形式。", vbCritical
                Else
                    Me.txtUser = Null
                    Me.txtPassword = Null
                    Me.txtUserId = rst!FUserId
                    Me.txtUserName = rst!FUserName
                    Me.txtUserGroup = Nz(rst!FUserGroup)
                    gblnQuitSystem = False
                    '将登录写入操作日志
                    PutOperateLog "用户登录", ""
                    Me.Visible = False
                    gblnQuitSystem = False
                    If FormIsLoaded("frmMain") Then DoCmd.Close acForm, "frmMain"
                    gblnQuitSystem = True
                    DoCmd.OpenForm "frmMain"
                End If
            End If
        End If
        rst.Close
    End If
   
   
Exit_cmdLogon_Click:
    Set rst = Nothing
    Exit Sub
   
Err_cmdLogon_Click:
    MsgBox Me.Name & " cmdLogon_Click" & vbCr & Err.Description, vbCritical
    '写入错误日志
    PutErrorLog acForm, Me.Name, "cmdLogon_Click"
    Resume Exit_cmdLogon_Click
   
End Sub



煮茶论道 发表于:2012-05-10 13:54:13

在采购入库新增窗体加载事件下写

 Me.制单人.Value = !frmLogon!txtUserName
  Me.制单人.Enabled = False

 



煮茶论道 发表于:2012-05-10 14:00:25

哦,错了,六楼真解。你的附件出错



兔斯基 发表于:2012-05-10 14:41:38

附件出错?

 



兔斯基 发表于:2012-05-10 15:56:30
还是不得解

兔斯基 发表于:2012-05-10 16:53:20
附件重新上传点击下载此附件

煮茶论道 发表于:2012-05-10 20:07:54
浪淘沙 发表于:2012-05-10 21:51:46

理解一下什么是全局变量,在登录时被赋值UserName,以后在程序运行期间是一直可以被调用的。任何控件和程序都可以调用,这就是系统可以记录用户操作的原理。



红尘如烟 发表于:2012-05-10 22:09:03

如果你是用的用户ID,则直接将“制单人”组合框的“默认值”属性设为:=[Forms]![FrmLogon]![txtUserId]

如果用的是用户名,则将“制单人”组合框的“默认值”属性设为:      =[Forms]![FrmLogon]![txtUserName]

 



兔斯基 发表于:2012-05-11 00:54:46
原作者就是原作者,一针见血!

兔斯基 发表于:2012-05-11 01:13:42

SELECT 入库表.日期, 入库表.供应商名称, 入库表.入库类别, 入库表.制单人, 入库表.月末结帐, 入库表.仓库名称, 入库表.入库单号
FROM 入库表
WHERE (((入库表.日期) Between (IIf(IsNull(Forms!入库详单管理!开始日期),#1/1/2000#,Forms!入库详单管理!开始日期)) And (IIf(IsNull(Forms!入库详单管理!截止日期),#12/1/2099#,Forms!入库详单管理!截止日期))) And ((入库表.供应商名称) Like IIf(IsNull(Forms!入库详单管理!供应商名称),'*','*' & Forms!入库详单管理!供应商名称 & '*')) And ((入库表.入库类别) Like IIf(IsNull(Forms!入库详单管理!入库类别),'*','*' & Forms!入库详单管理!入库类别 & '*')) And ((入库表.制单人) Like IIf(IsNull(Forms!入库详单管理!制单人),'*','*' & Forms!入库详单管理!制单人 & '*')) And ((入库表.月末结帐) Like IIf(IsNull(Forms!入库详单管理!月末结帐),'*','*' & Forms!入库详单管理!月末结帐 & '*')) And ((入库表.仓库名称) Like IIf(IsNull(Forms!入库详单管理!仓库名称),'*','*' & Forms!入库详单管理!仓库名称 & '*')) And ((入库表.入库单号) Like IIf(IsNull(Forms!入库详单管理!入库单号),'*','*' & Forms!入库详单管理!入库单号 & '*')));

上面这段查询语句用来,根据“制单人”来查询,查询不到(“入库表”中的“制单人”为文本框,“入库详单管理”窗体上的制单人是组合框,行来源USysUsers表),不知为何?!



殷小宝 发表于:2012-05-11 10:22:57
“入库表”中的“制单人”为文本框,“入库详单管理”窗体上的制单人是组合框,行来源USysUsers表,制单人是组合框,它的绑定值是什么?是制单人ID还是制单人名称?可能就是错在这里?二者不一致。

煮江品茶 发表于:2012-05-11 14:33:16
不能叫做一针见血,应该是扎了几针算是流出了点血。不容易呀。

总记录:24篇  页次:1/2 9 1 2 8 :