Access交流中心

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

【求助】自定义Public过程,总是无法通过编译,望指点

陈伟  发表于:2011-06-21 17:37:16  
复制

'以下是我经常会用到的一段代码,可以成功应用于各个窗体中。

'其功能是通过点击按钮,以查看某个字段所对应的详情页面。

 

'查看客户公司详情
Private Sub cmdOpenfrmClientCompany_Click()
    Dim strWhereSQL As String
    If Not IsNull(Me.[客户公司ID]) Then
        strWhereSQL = "[客户公司ID]=" & Me.[客户公司ID]
    Else
        strWhereSQL = ""
    End If
    DoCmd.OpenForm "frm客户公司", acNormal, "", strWhereSQL, , acNormal
End Sub

 

'由于在很多地方都会用到,所以我就想把它作为一个Public的过程

'从而可以在需要的场合通过传递参数调用即可。具体代码如下:

 

'查看详情——必选参数:[目标窗体名称],[来源链接字段],[目标链接字段]
Public Sub gOpenTargetForm(strTargetFormName As String, strOriginalConnectedCtrl As String, strTargetConnectedCtrl As String)
    Dim strWhere As String
    If Not IsNull(Screen.ActiveForm.strOriginalConnectedCtrl) Then
        strWhere = strTargetConnectedCtrl & "=" & Screen.ActiveForm.strOriginalConnectedCtrl
    Else
        strWhere = ""
    End If
    DoCmd.OpenForm strTargetFormName, acNormal, "", strWhere, , acNormal
End Sub

 

'在窗体中调用上述过程,代码如下:

Private Sub cmdOpenfrmClientCompany_Click()
    gOpenTargetForm ("frm客户公司","[客户公司ID]","[客户公司ID]")
End Sub

'但总是无法通过编译,错误提示是以下简单的、莫名其妙的两行:

编译错误

缺少:=

 

点击错误界面的帮助,出现如下提示:

期待:<various>

语法中的期待部分没有找到。

 

折腾了一下午,只好向各位前辈求救了。

 

 

Top
煮江品茶 发表于:2011-06-21 17:52:08
Public Sub MyFilter(frm as form,ctrl as control,fldname as string)
'示例:Myfilter me.子窗体.form,me.客户ID,"客户ID"
dim strwh as string
strwh="True"
if isnull(ctrl.value)=false then
     strwh=strwh & " and cstr(" & fldname & ")='" & cstr(ctrl.value) & "'"
end sub
frm.filter=strwh
frm.filteron=true
end sub

陈伟 发表于:2011-06-21 18:06:56

这么快就回复了!感动!!

从中看到一点线索,不过我还得下来慢慢研究一下。

非常感谢!



西出阳关无故人 发表于:2011-06-21 20:12:22

gOpenTargetForm ("frm客户公司","[客户公司ID]","[客户公司ID]")
其中的第三个参数应该是变量吧?如果是变量,就不应该这么写,应该写成:

gOpenTargetForm ("frm客户公司","[客户公司ID]",me.客户公司ID)



西出阳关无故人 发表于:2011-06-21 20:14:15
上述应该是第二个参数

西出阳关无故人 发表于:2011-06-21 20:44:20

还有,调用语句应该是:

gOpenTargetForm 参数1,参数2,参数3

不要括号



陈伟 发表于:2011-06-21 23:22:07

搞定了!非常感谢各位的帮助!!我从这个案例中更深刻地理解了数据类型^_^ 

以下是实现的代码,供参考:

 

 

'查看详情——必选参数:"目标窗体名称","[来源链接字段名]","[目标链接字段名]"
Public Sub gOpenDetailForm(strTargetForm As String, strlSourceConnectedCtrl As String, strTargetConnectedCtrl As String)
    Dim strWhere As String
    If Not IsNull(Screen.ActiveForm.Controls(strlSourceConnectedCtrl)) Then
        strWhere = strTargetConnectedCtrl & "=" & Screen.ActiveForm.Controls(strlSourceConnectedCtrl)
    Else
        strWhere = ""
    End If
    DoCmd.OpenForm strTargetForm, acNormal, "", strWhere, , acNormal
End Sub

 

'查看详情的调用
Private Sub cmdOpenfrmLogistics_Click()
    gOpenDetailForm "frm物流公司", "[物流公司]", "[物流公司ID]"
End Sub



总记录:6篇  页次:1/1 9 1 :