能不能先建立一个Data Environment以及几个command
但是不在属性里设置ConnectionString及command的SQL语句
而是在程序里面定义(初始化)连接字符串?怎么做?
我试过,好像不在属性里初始化command的SQL语句的话,程序里rsCommand1出不来。我主要目的是不想在属性里设置连接字符串,这样的话数据库路径就定死了
我想用app.Path\test.mdb这样,让程序放在任意路径下均能运行
各路大侠帮帮忙!
但是不在属性里设置ConnectionString及command的SQL语句
而是在程序里面定义(初始化)连接字符串?怎么做?
我试过,好像不在属性里初始化command的SQL语句的话,程序里rsCommand1出不来。我主要目的是不想在属性里设置连接字符串,这样的话数据库路径就定死了
我想用app.Path\test.mdb这样,让程序放在任意路径下均能运行
各路大侠帮帮忙!
cnet是deconnectionTs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\book.mdb;Persist Security Info=False"de.cnet.ConnectionString = Ts
de.cnet.Open Ts
If de.rscmdcqts.State <> adStateClosed Then
de.rscmdcqts.Close
End If
de.rscmdcqts.Open "select tsbh,lbdm,tszbh,jsrq from jsb,lbb where jsrq<=# " & N & " # and lbdm='" & Trim(Combo1.Text) & "'", de.cnet, adOpenStatic, adLockOptimisticSet dpr超期图书.DataSource = de
dpr超期图书.DataMember = "cmdcqts"
dpr超期图书.Show
在程序中给Command赋SQL语句事实是我如果不先给Connection1赋连接字符串(即先与数据库连接好),
那么输入DataEnvironment.后不会自动出现rsCommand1,而只是有几个绿色的Command
我不想用绝对路径,因为用户安装不一定安装在我制作时指定的路径下我想在代码中用app.Path定路径但在代码中设定DE.Connection1.ConnectionString=""的话,
DE.Command1的CommandText(即rsCommand1的SQL语句就没法定义了)
Private Sub DataEnvironment_Initialize() '关键是这里!!!!!!!!!在代码中它重新生成!
Connection1.ConnectionString = ConnectString
Connection2.ConnectionString = ConnectMDBString
End Sub
Public Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=XXXXXX;Initial Catalog=JiLiangSuo;Data Source=sql01"
End Function
你不要把DE的代码写死了,像我那样,将它指向你程序中的连接字符串,上面的只是示例,你程序中完成可以将连接信息写进INI文件,然后根据INI文件生成连接字符串.
再完全一些,你可以做个窗口,让用户填写数据库路径,然后你生成INI文件.这样你程序中的取出INI文件中的字符串后,生成ConnectString.
你的整个程序如果控制成让用户选择数据库路径的话,那这个问题就好解决了.
在程序的设计阶段你可以按绝对路径做.然后在DE的Initialize事件中让它更改原来的连接字符串.
Private Sub DataEnvironment_Initialize() '关键是这里!!!!!!!!!在代码中它重新生成!
Connection1.ConnectionString = ConnectString
Connection2.ConnectionString = ConnectMDBString
End Sub而这个connectString是你的程序中生成,跟DE已经没有关系了.
csdn有位兄弟就是因为这个问题没有解决,现在准备转行去搞销售了唉。。可惜
如果不需要调用存储过程,就改用ado吧想怎么改都行。
将它看作是ADO中的command一样看待啊。
我现在公司没有VB,回家试验!
Private Sub Command1_Click()
Set MSHFlexGrid1.DataSource = DE.Commands("command1").Execute
‘command1的结果集是一个表。
End Sub将数据环境连接字符串修改成错误时:
Private Sub Command1_Click()
DE.Connection1.ConnectionString = ConnectString
DE.Connection1.CursorLocation = adUseClient
DE.Commands("command1").CommandType = adCmdText
DE.Commands("command1").CommandText = "select * from 工作证书表"
’将查询改为SQL语句
Set MSHFlexGrid1.DataSource = DE.Commands("command1").Execute
End Sub
模块中的代码:
Public Function ConnectString() _
As String
'returns a DB ConnectString
ConnectString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;password=XXXX;Initial Catalog=JiLiangSuo;Data Source=sql01"
End Function测试正常!
这句话给了我很大的启发但是好像还是不行,不知为什么,我现在思路太混乱了,我再试试看,
估计按照wumylove1234(决心不做IT界大板锹) 的方法肯定是对的,一定是能够实现的
只是估计我代码里还有几句话写的不对,我再找找原因看
比如讲C:\test.mdb,而用户安装时如果指定程序装在D:\下,那么一运行不就会出错么?(我的数据库和程序文件放在同一目录下的,所以想用App.Path & \test.mdb动态定数据库路径)
比如讲C:\test.mdb,而用户安装时如果指定程序装在D:\下,那么一运行不就会出错么?(我的数据库和程序文件放在同一目录下的,所以想用App.Path & \test.mdb动态定数据库路径)
兄弟,我讲了好多次了啊.
Private Sub DataEnvironment_Initialize() '关键是这里!!!!!!!!!在代码中它重新生成!
Connection1.ConnectionString = ConnectString
Connection2.ConnectionString = ConnectMDBString
End Sub你可以数据环境初始化代码里更改连接字符串的啊,而不用管它在设计阶段是如何连接的啊.
上连的connectstring我是放在标准模块中的公用函数.
[email protected]
http://expert.csdn.net/Expert/topic/2770/2770960.xml?temp=.9293787
http://expert.csdn.net/Expert/topic/2920/2920573.xml?temp=.3051721
收了人家的分,又解决不了问题。惭愧啊。
http://expert.csdn.net/Expert/topic/2920/2920571.xml?temp=.8903162
重装系统;
换张VB6的盘;
装SP6
.......
尤其感谢wumylove1234(决心不做IT界大板锹),真的很感谢你,为你的热心所感动.......由于挺急的,我中午就改用另一种方法了,现在也不想再修改了
我估计你的方法是正确的
在DataEnvironment_Initialize()里添加初始化代码我想是可以的以后有时间我再试验,成功的话,时间允许我再改
如果还有问题我发代码给你,您的油箱我记下了。我接触这个时间不长,加上比较愚钝,所以高手们的有些高见我还看不太懂,还要努力向大家学习阿:-)谢谢,结贴