标准模块内:
Const connstr As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\sale.mdb"
 Sub PubConnSub(conn, rs, strSQL, a, b)
 conn.Open connstr
 rs.Open strSQL, conn, a, b
End Sub
窗体Form1内:
Private Sub Form_Load()
  Dim conn1 As ADODB.Connection
  Dim rs1 As ADODB.Recordset
  Set conn1 = New ADODB.Connection
  Set rs1 = New ADODB.Recordset
  Dim strSQL1 As String
  strSQL1 = "select * from allStorage"
  Call PubConnSub(conn1, rs1, strSQL1, 3, 3)
  MsgBox ("ok")
End Sub
编译错误,要求常数表达式请指教

解决方案 »

  1.   

    Const connstr As String = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\sale.mdb"
    _______________________________________________________
    由于App.Path 不是常亮,因此整个表达式不是常量定义
      

  2.   

    由于Connstr涉及应用路径,因此不能定义为常量,可以将其定义为全局变量。
    在启动时将该变量初始化就行。代码修改为:标准模块内:
    Public connstr As String Sub PubConnSub(conn, rs, strSQL, a, b)
     conn.Open connstr
     rs.Open strSQL, conn, a, b
    End Sub窗体Form1内:
    Private Sub Form_Load()
      Dim conn1 As ADODB.Connection
      Dim rs1 As ADODB.Recordset
      Set conn1 = New ADODB.Connection
      Set rs1 = New ADODB.Recordset  '初始化连接字符串connstr
      connstr="provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\sale.mdb"    Dim strSQL1 As String
      strSQL1 = "select * from allStorage"
      Call PubConnSub(conn1, rs1, strSQL1, 3, 3)
      MsgBox ("ok")
    End Sub
      

  3.   

    thank you with keen insterest for your quick answer