Office中国论坛/Access中国论坛

标题: 在主窗体中,打开第二个和第三个窗体时,可以是数据表模式的吗 [打印本页]

作者: wangf    时间: 2007-1-10 23:06
标题: 在主窗体中,打开第二个和第三个窗体时,可以是数据表模式的吗


在主窗体中,打开第二个和第三个窗体时,可以是数据表模式的吗??

怎么修改??

请大家帮个忙!谢谢谢谢!!!!

[attach]22563[/attach]

作者: wangf    时间: 2007-1-10 23:08
大家帮帮忙吧,我做好久都不行,原先的窗体都是数据表模式的,怎么一用按键就不行了???
作者: 一点通    时间: 2007-1-10 23:49
增加红色部份代码

   Dim stDocName As String
    Dim stLinkCriteria As String

    stDocName = "窗体名称"
    DoCmd.OpenForm stDocName, acFormDS, , stLinkCriteria

作者: wangf    时间: 2007-1-11 00:21
SORRY!,好像不行,是不是我加错地方了,

对不起,我是比较笨的那种,能不能帮我改一下,如果有时间再告诉我,哪里错的,原因何在??

谢谢!!!


作者: 一点通    时间: 2007-1-11 00:37
将示例简化,只保留问题部份,重传!
作者: wangf    时间: 2007-1-11 16:26
Function OpenForm(FormID As Integer)
On Error GoTo Err_OpenForm
Dim i As Integer    '定义用于循环的整型变量
Dim STemp As String  '定义字符型变量
Dim Rs1 As ADODB.Recordset '定义数据集变量
Dim Rs2 As ADODB.Recordset '定义数据集变量
'为定义的数据集变量分配空间
Set Rs1 = New ADODB.Recordset
Set Rs2 = New ADODB.Recordset
'打开“系统权限”数据表
STemp = "Select * From 系统权限"
Rs1.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'打开“系统窗体”数据表
STemp = "Select * From 系统窗体"
Rs2.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'定义用于保存用户是否有权限打开该窗体的布尔变量
Dim blnOpen As Boolean
'定义保存“窗体名称”的字符型变量
Dim FormName As String
    '为blnOpen布尔变量赋初值
    blnOpen = False
    '判断“系统权限”数据是否为空
    If Rs1.RecordCount < 1 Then
        blnOpen = False
    Else
        Rs1.MoveFirst
        '判断当前“登录用户”是否有权限打开FormID对应的窗体
        For i = 1 To Rs1.RecordCount
            If Rs1("用户ID") = UserID And Rs1("窗体ID") = FormID _
                    And Rs1("权限") = True Then
                '如果用户有权限,同把blnOpen变量值设置为“真”
                blnOpen = True
            Else
                Rs1.MoveNext
            End If
        Next i
    End If
    '在“系统窗体”数据表中搜索待打开窗体的“名称”
    Rs2.MoveFirst
    For i = 1 To Rs2.RecordCount
        If Rs2("窗体ID") = FormID Then
            '把窗体名称赋予FormName变量
            FormName = Rs2("窗体名称")
        Else
            Rs2.MoveNext
        End If
    Next i
    '判断用户是否有权限打开窗体,blnOpen为“真”有权限
    If blnOpen = False Then
        '如果用户没有权限,则弹出“无权使用”窗口
        MsgBox "您没有权限使用" & "“" & FormName & "”窗体", vbCritical, "无权使用"
    Else
        '使用DoCmd对象OpenForm的方法打开FormName窗体
        DoCmd.OpenForm FormName, acNormal, , , , acWindowNormal

    End If
    '释放记录集空间
    Set Rs1 = Nothing
    Set Rs2 = Nothing
    Exit Function
Err_OpenForm:
    '释放记录集空间
    Set Rs1 = Nothing
    Set Rs2 = Nothing
    '弹出“窗体打开错误”信息窗口
    MsgBox Err.Description, vbOKOnly, "窗体打开错误"
End Function


要求打开窗体可以是数据表模式,


[此贴子已经被作者于2007-1-11 8:30:36编辑过]


作者: wangf    时间: 2007-1-11 19:52
一点通版主,我把acFormDS,加入了红色部份是吧,可是提示不对啊
作者: 一点通    时间: 2007-1-11 20:06
Function OpenForm(FormID As Integer)
On Error GoTo Err_OpenForm
Dim stLinkCriteria As String
Dim i As Integer    '定义用于循环的整型变量
Dim STemp As String  '定义字符型变量
Dim Rs1 As ADODB.Recordset '定义数据集变量
Dim Rs2 As ADODB.Recordset '定义数据集变量
'为定义的数据集变量分配空间
Set Rs1 = New ADODB.Recordset
Set Rs2 = New ADODB.Recordset
'打开“系统权限”数据表
STemp = "Select * From 系统权限"
Rs1.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'打开“系统窗体”数据表
STemp = "Select * From 系统窗体"
Rs2.Open STemp, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
'定义用于保存用户是否有权限打开该窗体的布尔变量
Dim blnOpen As Boolean
'定义保存“窗体名称”的字符型变量
Dim FormName As String
    '为blnOpen布尔变量赋初值
    blnOpen = False
    '判断“系统权限”数据是否为空
    If Rs1.RecordCount < 1 Then
        blnOpen = False
    Else
        Rs1.MoveFirst
        '判断当前“登录用户”是否有权限打开FormID对应的窗体
        For i = 1 To Rs1.RecordCount
            If Rs1("用户ID") = UserID And Rs1("窗体ID") = FormID _
                    And Rs1("权限") = True Then
                '如果用户有权限,同把blnOpen变量值设置为“真”
                blnOpen = True
            Else
                Rs1.MoveNext
            End If
        Next i
    End If
    '在“系统窗体”数据表中搜索待打开窗体的“名称”
    Rs2.MoveFirst
    For i = 1 To Rs2.RecordCount
        If Rs2("窗体ID") = FormID Then
            '把窗体名称赋予FormName变量
            FormName = Rs2("窗体名称")
        Else
            Rs2.MoveNext
        End If
    Next i
    '判断用户是否有权限打开窗体,blnOpen为“真”有权限
    If blnOpen = False Then
        '如果用户没有权限,则弹出“无权使用”窗口
        MsgBox "您没有权限使用" & "“" & FormName & "”窗体", vbCritical, "无权使用"
    Else
        '使用DoCmd对象OpenForm的方法打开FormName窗体
        DoCmd.OpenForm FormName, acFormDS, , stLinkCriteria
    End If
    '释放记录集空间
    Set Rs1 = Nothing
    Set Rs2 = Nothing
    Exit Function
Err_OpenForm:
    '释放记录集空间
    Set Rs1 = Nothing
    Set Rs2 = Nothing
    '弹出“窗体打开错误”信息窗口
    MsgBox Err.Description, vbOKOnly, "窗体打开错误"
End Function

作者: wangf    时间: 2007-1-12 00:05
提示编绎错误,

变量未定义!
作者: wangf    时间: 2007-1-12 00:09
顺道问一句:“Dim stLinkCriteria As String”



作用是什么??可以解释一下吗?

改是改了,可是,每个打开的窗体都是数据模式了,

我大部分窗体都不是数据模式呀!

[此贴子已经被作者于2007-1-11 16:21:42编辑过]


作者: wangf    时间: 2007-1-12 00:14
顺道问一句:“Dim stLinkCriteria As String”

作用是什么??可以解释一下吗?





欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3