我在程序中用了adodc控件连接数据库,但是我发现它的connectionstring里的数据库文件路径静态的绝对路径,比如:
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\backup\PMS程序\pms.mdb;Persist Security Info=False
我想把Data Source写成用app.path表示形式的,不知应该怎么写。有这个必要吗?见http://expert.csdn.net/Expert/topic/1509/1509605.xml?temp=.4688684
我是该贴的最后一个回复,libopanda

解决方案 »

  1.   

    Dim strConnection As String
    Dim strDBFile     As String
    strDBFile = "pms.mdb"
    strConnection = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & App.Path & "\" & strDBFile & _
        "Persist Security Info=False"
    这样只要保证 MDB 文件和应用程序在同一个目录就行了
      

  2.   

    可以的。不过你要将数据文件与工程文件在同一目录中。connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & App.Path & "\data\月欠税情况.mdb;" _
                       & "Persist Security Info=False"如果app.path代表c:\myprg目录的话,那么数据文件就要在c:\myprg\data目录下。
      

  3.   

    谢谢上面的两位,其实我的问题不是怎么样写
    connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & App.Path & "\data\月欠税情况.mdb;" _
                       & "Persist Security Info=False",
    关键是把这些话写在Form_load里,而在ADODC控件里不注明它的connectstring属性,程序运行就会有adodc控件没有连接对象什么的警告。
    请看了http://expert.csdn.net/Expert/topic/1509/1509605.xml?temp=.4688684
    后再答复,谢谢了,各位
      

  4.   

    是否可以这样:
    定义apppath代表应用程序路径,在vb环境下apppath="D:\backup",当编译时再将apppath=App.Path。
    connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & apppath & "\data\月欠税情况.mdb;" _
                       & "Persist Security Info=False",
      

  5.   

    zsgzsgzsg(zsg),好象你的答案也不切中我的问题,不过还是要感谢
      

  6.   

    其实你的问题好解决,用ADO对象来做,不用控件。从这里就可以看出用控件的缺点:不灵活。
      

  7.   

    Public conn As ADODB.Connection
    Sub Main()Set conn = New ADODB.Connection
    If Right(App.Path, 1) = "\" Then
                    apppath = App.Path
            Else
                    apppath = App.Path & "\"
    End If
    DbFileName = apppath & "article.mdb"
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
                    DbFileName & ";Persist Security Info=False;"
                    
                    'On Error Resume Next
                    'With conn
                    '        .CursorLocation = adUseClient
                            
                    '        .Open ConnectString, DB_USERID, DB_PWS
                   ' End With
                    
    '显示欢迎接界面
    Set frm = New frmSplash
    frm.Show
    DoEventsfrmMain.adodc1.connectionstring=ConnectString
    frmMain.Show
    Unload frm
    End Sub
      

  8.   

    判断程式是独立执行还是在VB环境下执行
    定义apppath代表应用程序路径,在vb环境下apppath="D:\backup",当编译时再将apppath=App.Path。
    connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & apppath & "\data\月欠税情况.mdb;" _
                       & "Persist Security Info=False",
      

  9.   

    判断程式是独立执行还是在VB环境下执行'声明
    Private Declare Function GetModuleFileName Lib "kernel32" Alias _
            "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As _
            String, ByVal nSize As Long) As Long判断
    Dim S As String, Length
     Length = 256
     S = String(Length, 0)
     Call GetModuleFileName(0, S, Length)
     S = Left(S, InStr(S, Chr(0)) - 1)
     if UCase(Right(S, 7)) = "VB6.EXE" then
        apppath="D:\backup"
    else
        apppath=App.Path
    end if
    connectstring = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                       & "Data Source=" & apppath & "\data\月欠税情况.mdb;" _
                       & "Persist Security Info=False",
      

  10.   

    我还是不理解zsgzsgzsg(zsg) 的APPPATH的作用,我仍然不能改变ADO连接数据库时的默认路径(在ADO生成连接字符串中)。看来我只能用ADO对象了
      

  11.   

    用GetModuleFileName判断程序是独立执行还是在vb环境下,在vb环境下apppath="D:\backup",当独立执行时apppath=App.Path。