求助:
以下代码出现错误………………实在找不出原因…………错误就出现在图中的“AR8”处。这个是我自定义的类型,用在自定义的函数中。这里是form的代码
Private Sub Form_Load()    Call DBInit
        Dim AR8 As DevInfo
    
    DBFilePath = App.Path & "\Data\test2.mdb"
    CmdH = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFilePath
    If Dir(DBFilePath, vbNormal Or vbDirectory Or vbHidden Or vbReadOnly) = "" Then cat.Create CmdH
    
    AR8.Model = AR882
    AR8.ID = "01"
End Sub
这里是模块的代码
Public CmdH As String
Public Cmd1 As ADODB.Command       'cmmZhuCe为命令对象
Public Cn As ADODB.Connection
Public rs As ADODB.Recordset
Public cat As New ADOX.Catalog '不用cat用另外一个名字也可以
Public DBFilePath As StringPublic Type DevInfo
    Model As String
    ID As String
End TypePublic Function DBInit()    
End FunctionPublic Function AddToDBIR(ByVal T As String, ByVal Tmprt As String, ByVal EMS As String, ByRef Dev As DevInfo)
    Dim Str(10) As String
    Dim Cmd(10) As String
    Dim TB As TextBox
    
    Cmd(0) = "Insert into "
    Cmd(1) = Format(Now, "YYMMDD") & Dev.Model & " ("
    Cmd(2) = "Model & ID" & ",TIME,DATA1,DATA2) values ('"
    Cmd(3) = Dev.Model & "." & Dev.ID & "','" & T & "','" & Tmprt & "','" & EMS & "')"
    
    Call OpenConn(CmdH)
    Cn.Execute Cmd(0) & Cmd(1) & Cmd(2) & Cmd(3)
    Call CloseConn(CmdH)
    
End Function十分感谢!VB VB自定义类型参数类型不符

解决方案 »

  1.   

    在Command4中有定义AR8吗?如果是全局变量就定义在通用中,如果不是就再定义一个……
      

  2.   

    明白了…………这种定义只能给form_load用………………谢谢
      

  3.   

    汗,你这个"Dim AR8 As DevInfo"是定义在Form_Load中的过程内变量,当然不可能在别的过程中能使用。
    其实,这也可见贯彻命名规则的好处,比如模块级的加m前缀,全局级的变量用g前缀,这样即使程序代码量比较大,也不容易搞错作用范围。
      

  4.   

    将Dim AR8 As DevInfo 移到模块开头,作为模块变量进行定义