关键问题是路径要灵活,你可以用app.path & "\dadabase\db1.mdb"
这样就相对灵活了。你也可以把路径设为变量strPath,用文件保存起来,下一次程序运行,就从指定文件里读取路径,如果数据库路径改了,也没关系,用个对话框,在程序运行中手动定位,然后把改动过的数据库路径保存到文件中,这样最保险!
这样就相对灵活了。你也可以把路径设为变量strPath,用文件保存起来,下一次程序运行,就从指定文件里读取路径,如果数据库路径改了,也没关系,用个对话框,在程序运行中手动定位,然后把改动过的数据库路径保存到文件中,这样最保险!
或干脆在发布时清空ADODC设置。
目前我是这样做的, 但如果程序要修改(这一定经常要做的), 又要重新调回来, 很麻烦。而且万一在做成exe文件以前清空它,在别的机器上运行时,又要出错了。To : starbattler(小石头)
在别的机器上我会在系统配置中添加上数据库在路径,而且我的程序在运行会读取这个路径,这不成问题,问题出在,在我给ADODC重新设置时,它就提示找不到路径了,需要按[确定]才可以正确运行。
建议你使用代码为ADODC的ConnectionString属性赋值,并同时清空ADODC控件的属性窗口中的ConnectionString属性。代码设置如下:
With Adodc1
.ConnectionString="......"
.CommandType=......
.RecordSource="......"
.Refresh
End With
cnn2.ConnectionString = "DSN=Pubs;UID=sa;PWD=pwd;"
cnn2.Open
Public System As New ADODB.Connection '系统设置库Private Sub Main()
'得到程序路径
Dim StrAppath As String '应用程序的路径
StrAppath = App.Path
With System
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Persist Security Info=False;" _
& "Data Source=" & StrAppath & "\data\System.mdb;" _
& "Jet OLEDB:Database Password=1111"
'.Mode = adModeShareExclusive
'.IsolationLevel = adXactIsolated
.Open
End With
打开以后在程序中引用Systerm就可以了。
如果用到Ado控件,窗体加载时事先定义一个RecordSet.
Set ado.Recordset =Recordset
Sub Main()
RDataPath = App.Path & "\database\HXDatabase.mdb"
LDataBasePath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RDataPath & ";Persist Security Info=False"
connectadodb(publicdb,ldatabasepath)
End Sub
Public Sub ConnectADODB(AdoConn As ADODB.Connection, DbPathStr As String)
On Error GoTo ConnError
Set AdoConn = New ADODB.Connection
AdoConn.ConnectionString = DbPathStr
AdoConn.ConnectionTimeout = 15
AdoConn.CursorLocation = adUseClient
AdoConn.Open
Exit Sub
ConnError:
MsgBox "应用程序无法与数据库建立连接!", vbCritical, "系统错误"
End
End Sub
关键问题是路径要灵活,你可以用app.path & "\dadabase\db1.mdb"
这样就相对灵活了。你也可以把路径设为变量strPath,用文件保存起来,下一次程序运行,就从指定文件里读取路径,如果数据库路径改了,也没关系,用个对话框,在程序运行中手动定位,然后把改动过的数据库路径保存到文件中,这样最保险!
回复人: cs_netwalker(静观) (2001-9-19 0:23:03) 得0分
ADODC重新设置新的路径后,刷新ADODC。
或干脆在发布时清空ADODC设置。
回复人: vicsue(victor) (2001-9-19 13:08:17) 得0分
To : cs_netwalker(静观)
目前我是这样做的, 但如果程序要修改(这一定经常要做的), 又要重新调回来, 很麻烦。而且万一在做成exe文件以前清空它,在别的机器上运行时,又要出错了。To : starbattler(小石头)
在别的机器上我会在系统配置中添加上数据库在路径,而且我的程序在运行会读取这个路径,这不成问题,问题出在,在我给ADODC重新设置时,它就提示找不到路径了,需要按[确定]才可以正确运行。
回复人: hydnoahark(诺亚方舟) (2001-9-19 14:20:24) 得0分
将connectionstring保存在ini文件中,在其他机器上使用的时候,直接修改ini文件就不需要修改代码。
回复人: vicsue(victor) (2001-9-19 22:40:10) 得0分
Up
回复人: starbattler(小石头) (2001-9-21 10:45:37) 得0分
把你的adodc控件的属性页上的设置都设空,不要在设计是就写上去!所有的连接设置都放到代码里去完成。因为在加载窗体时(代码运行前),程序会自动把你所绑定的控件连向数据库!因为你的控件里的connectionstring指向你自己机器上的数据库位置,所以会报错。
回复人: itmouse(Anti猫) (2001-9-21 13:26:30) 得0分
你可以使用上面starbattler(小石头)的方法用文件保存,或用hydnoahark(诺亚方舟)的方法保存的ini文件中,都能成功的。
建议你使用代码为ADODC的ConnectionString属性赋值,并同时清空ADODC控件的属性窗口中的ConnectionString属性。代码设置如下:
With Adodc1
.ConnectionString="......"
.CommandType=......
.RecordSource="......"
.Refresh
End With
回复人: Jneu(沧海桑田) (2001-9-21 13:30:20) 得0分
Set cnn2 = New ADODB.Connection
cnn2.ConnectionString = "DSN=Pubs;UID=sa;PWD=pwd;"
cnn2.Open
回复人: Sean_Jhh(开心可可) (2001-9-21 15:58:09) 得0分
利用模块,定义公共类,设立SUB MAIN在其中打开数据库。
Public System As New ADODB.Connection '系统设置库Private Sub Main()
'得到程序路径
Dim StrAppath As String '应用程序的路径
StrAppath = App.Path
With System
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Persist Security Info=False;" _
& "Data Source=" & StrAppath & "\data\System.mdb;" _
& "Jet OLEDB:Database Password=1111"
'.Mode = adModeShareExclusive
'.IsolationLevel = adXactIsolated
.Open
End With
打开以后在程序中引用Systerm就可以了。
如果用到Ado控件,窗体加载时事先定义一个RecordSet.
Set ado.Recordset =Recordset
回复人: vicsue(victor) (2001-9-21 20:54:13) 得0分
可是我的ADODC捆挷了一个Grid, 而Grid需要在设计阶段设置, 所以要在设计时给ADODC设置好ConnectionString等等. 当然这些东西在运行阶段可以代码改变(如楼上所说的, 我现在就这么做的), 但代码还没有执行,它就提示"路径没有找到了".
回复人: jxboy(异想天开) (2001-9-21 21:07:04) 得0分
设个断点看看是在哪行出的错呀
回复人: wilddragon(帅帅) (2001-9-21 22:14:29) 得0分
等待中...
回复人: wilddragon(帅帅) (2001-9-21 22:30:41) 得0分
等待中...
回复人: wilddragon(帅帅) (2001-9-21 22:38:53) 得0分
关注
回复人: TonyJoule(寒星) (2001-9-21 22:55:44) 得0分
可以将一些必要信息写在诸如:注册表或INI文件中,可以修改,这样就应该不会出现找不到指定数据源的问题了。
回复人: wilddragon(帅帅) (2001-9-21 23:55:38) 得0分
等待中...
回复人: wilddragon(帅帅) (2001-9-22 2:35:48) 得0分
关注
回复人: wxl781227(王新良) (2001-9-23 0:44:32) 得0分
public publicdb as connection
Sub Main()
RDataPath = App.Path & "\database\HXDatabase.mdb"
LDataBasePath = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & RDataPath & ";Persist Security Info=False"
connectadodb(publicdb,ldatabasepath)
End SubPublic Sub ConnectADODB(AdoConn As ADODB.Connection, DbPathStr As String)
On Error GoTo ConnError
Set AdoConn = New ADODB.Connection
AdoConn.ConnectionString = DbPathStr
AdoConn.ConnectionTimeout = 15
AdoConn.CursorLocation = adUseClient
AdoConn.Open
Exit Sub
ConnError:
MsgBox "应用程序无法与数据库建立连接!", vbCritical, "系统错误"
End
End Sub
记得把设计时的ADODC的ConnectionString删掉。