Office中国论坛/Access中国论坛

标题: 关于对象的一些问题 [打印本页]

作者: williamwangc    时间: 2013-3-1 16:36
标题: 关于对象的一些问题
本帖最后由 williamwangc 于 2013-3-1 16:43 编辑

Sub NewRecordMark(frm As Form)    Dim intnewrec As Integer    intnewrec = frm.NewRecord    If intnewrec = True Then    MsgBox "You're in a new record." _        & "@Do you want to add new data?" _        & "@If not, move to an existing record."    End IfEnd Sub
在以上的实例中我有两个问题。
1、在实例中,form作为参数应该用什么写法来表示?
如:forms("xxx")还是直接xxx
2、这样的对象不存在我应该用哪个关键字作为判断字符?
如:If forms("xxx") Not Exist














作者: williamwangc    时间: 2013-3-1 16:42
抑或是IS NOTING? IS NULL?
作者: roych    时间: 2013-3-2 13:08
1、如果是在窗体上调用公共模块的话,直接在Load事件(或者其它窗体事件中)
Call NewRecordMark(Me)
如果是Forms对象(虽然你这段代码中没有Forms),后面对应的是窗体名称,除非不是作为一个元素来引用。
2、不存在的话,建议用窗体名称来判断。Not Exist或者Nothing我都没用过。IsNull应该是不行的,这个一般是判断字符串的。
作者: todaynew    时间: 2013-3-3 21:18
本帖最后由 todaynew 于 2013-3-3 21:21 编辑

1、如果带入的窗体参数是当前窗体,可以直接用me或me.Form;如果带入的窗体是当前窗体的子窗体,可以用me.子窗体控件名.form;如果带入的窗体是另外一个窗体,则可用forms("xxx")。

2、判断带入的窗体是否打开(从函数看,需要对某个打开的窗体进行设置,所以不是判断存在而是判断是否打开),我一般写一个自定义函数来解决:
function FormOpen(formname as string) as boolean
   dim frm as form
   FormOpen=false
   for each frm in forms
       if frm.name=formname then
          FormOpen=true
          exit for
       end if
   next frm
end function

如果要判断系统中是否存在一个窗体需要用AllForms对象来遍历,AllForms包含所有窗体(包括打开和未打开的)。Forms仅包含所有已经打开的窗体。
作者: williamwangc    时间: 2013-3-9 10:59
感谢版主




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