Access交流中心

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

帮忙解读日历中的一段代码

殷小宝  发表于:2010-09-23 16:03:02  
复制

本代码取自煮江品茶中的日历中的一段代码,本人思索半天,不知其意。pfname、sfname、 cname、openArgs在这时代表什么具体内容?望大家帮忙解读

Private Sub 公历赋值()
Dim Pfname As String
Dim Sfname As String
Dim Cname As String
Dim Str As String
    If OpenArgs <> "" Then
        Str = OpenArgs
        Pfname = Mid(Str, 1, InStr(1, Str, ",") - 1)
        Str = Replace(Str, Pfname & ",", "")
        If InStr(1, Str, ",") = 0 Then
            Sfname = Pfname
            Cname = Str
            Forms(Sfname).Form.Controls(Cname).Value = Me.公历.Value
        Else
            Sfname = Mid(Str, 1, InStr(1, Str, ",") - 1)
            Str = Replace(Str, Sfname & ",", "")
            Cname = Str
            Forms(Pfname).Controls(Sfname).Form.Controls(Cname).Value = Me.公历.Value
        End If
        DoCmd.Close acForm, "日历"
    End If
End Sub

附原附件“日历“

 

Top
殷小宝  发表于:2010-09-23 16:03:58
煮江品茶 发表于:2010-09-26 16:20:37

从煮江品茶同志的以下代码:
Forms(Pfname).Controls(Sfname).Form.Controls(Cname).Value = Me.公历.Value
来看,Pfname是主窗体名称,Sfname是子窗体控件名称,Cname是子窗体上的控件名称。

OpenArgs是用docmd.openform打开某个窗体时,传递给被打开窗体的参数。在此例中主要是要传递打开命令所在的那个窗体对应的主窗体、子窗体,以及子窗体控件的名称,以便将被打开窗体中的值回传。



殷小宝  发表于:2010-09-30 22:13:09
谢谢煮江品茶老师,现在我懂了,OpenArgs <> "" 指的是主窗体、子窗本、控件之间加上“逗号”,变为了“主窗体,子窗体,控件”字符串,If InStr(1, Str, ",") = 0 T这句判断的是没有子窗体,也就是“主窗体,控件”子符串,当然这时的“子窗体”就是主窗体了。Str = Replace(Str, Sfname & ",", "")这句的意思是前面已经去掉了主窗体,再去掉子窗体+“,”,剩下的当然只是控件了。最后是用docmd对象的close方法关闭窗体“日历”。经煮江品茶老师一指点,本人豁然开朗。再次感谢煮江品茶老师。

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