在access中
有两个窗体FormNameA和FormNameB'定的全局变量
Public strParameter2 As String 发送参数的FormNameA窗体代码如下:
Function ParameterSend2()
    strParameter2 = Me.userName.Value
    DoCmd.OpenForm "FormNameB"
End Function 接收参数的FormNameB窗体需要在“打开”事件中编程
Private Sub Form_Open(Cancel As Integer)
        Me.ControlName.Value = strParameter2
End Sub
为什么在FormNameB中没有得到FormNameA中的userName值啊
请各位帮我解决一下

解决方案 »

  1.   

    加输出,看函数ParameterSend2是否执行到
      

  2.   

    要把定的全局变量
    Public strParameter2 As String 
    放在一个模块里,不能放在窗体里
      

  3.   

    楼主的两个窗体在同一个工程下面,其实一个窗体也就是一个类。所以你可以用Form_Initialize()将窗体成员初始化。然后传进令一个窗体Form1Public sOutputString As StringPrivate Sub Form_Initialize()
         sOutputString = "a"   '或者通过自定义函数赋值
    End SubForm1Private Sub Command1_Click()
    '    Dim a As Form1
    '    Set a = New Form1
    '    MsgBox a.sOutputString
        MsgBox Form1.sOutputString
    End Sub
      

  4.   

    你在Command1_click()事件里,不需要把上面Form_Initialize()事件CALL一下吗?
    我刚才试过了
    如果不在Command1_click()事件里,call Form_Initialize的话就取不到值
      

  5.   

    不需要,Form_Initialize()是窗体对象的初始化函数,当窗体被初始化的时候运行。楼主可以调试如下函数,
    Private Sub Command1_Click()
        Dim a As Form1
        Set a = New Form1    '声明一个窗体变量a,类型为form1,此时实例化窗体a,就会调用窗体的初始化函数
        MsgBox a.sOutputString
    End Sub
      

  6.   

    我的代码是
    产品入库明细  中的代码public a as string
    public b as string
    public c as string
    Private Sub 某单位产品入库明细_Click()
        Call ParameterSend2
    End SubFunction ParameterSend2()
        DoCmd.OpenForm "某单位产品入库明细"
        a = Me.起始日期.Value
        b = Me.终止日期.Value
        c = Me.产品名称.Value
        'DoCmd.Close
        DoCmd.OpenForm "某单位产品入库明细"
    End Function某单位产品入库明细    中的代码Private Sub Form_Open(Cancel As Integer)    
        Dim d As Form_产品入库查询
         Set d = New Form_产品入库查询
         Me.起始日期.Value = d.a
         Me.终止日期.Value = d.b
         Me.产品名称.Value = d.c
    这是我的代码,你们看下,请各位大哥解决下?
      

  7.   


    如果你的赋值窗体的名字是产品入库明细,那么直接用就好,如果重新声明定义,就是一个新窗体了,所以并不需要声明窗体d。之前贴出来的只是示例,建议楼主多了解一些面向对象的概念。Private Sub Form_Open(Cancel As Integer)    
        'Dim d As Form_产品入库查询
         'Set d = New Form_产品入库查询
         Me.起始日期.Value = 产品入库明细.a
         Me.终止日期.Value = 产品入库明细.b
         Me.产品名称.Value = 产品入库明细.c
      

  8.   

    窗体的名字并不是表的名字,表的名字可以是table1,但是窗体实例的名字可能是Form_Table1,此时需要用到的应该是窗体的名字,而若用DoCmd.OpenForm,这时用的就是表的名字。另外Form_Open只会在表第一次被打开的时候运行,如果你的表已经打开,那么DoCmd.OpenForm是不会运行
    Form_Open的