ADO控件的一个郁闷问题,请教老鸟指点一下
ADO控件的连接字符串 是窗体启动后附的For Each ctl In frm.Controls
If TypeOf ctl Is Adodc Then
ctl.ConnectionString = MstrConn
ctl.Tag = MsName$ & "|" & MiIndex%
'存储控件数组信息
If MsFiter$ <> "" Then ctl.RecordSource = ctl.RecordSource & " where " & MsFiter$
ctl.Refresh
End If
Next
代码一直没有问题现在 郁闷在 ADO控件加载的比窗体加载的早,启动时 会提示 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
然后调用我的代码赋值字符串 然后正常显示
可以看出ADO控件在窗体启动事件前就已经加载了, 咋办呢,
ConnectionString 赋值.... 我总不能连接个空库让ADO控件不报错?
我如何屏蔽掉这个提示 忘有经验的指点一下 谢谢 --------------------编程问答-------------------- 你能不能把这个放到form active sub里面? --------------------编程问答-------------------- 不是那个原因, 是 ADO控件初始化 早于 窗体的任何事件 --------------------编程问答-------------------- Form_Initialize
这个事件中写入代码 --------------------编程问答-------------------- 你们可能每遇到这个情况ADO控件已经帮定了数据库,
就是 我如何替换ADO帮定数据库的字符串,在 Form_Initialize 之前替换掉他,
就是说在ADO控件初始化的时候 我有没有办法控制他 --------------------编程问答-------------------- 不用Ado绑定不就行了吗?直接用代码写,方便、快捷。 --------------------编程问答-------------------- :'<
控件太多...懒得一个个换... 没有人知道办法吗? --------------------编程问答-------------------- 曲线救国的方法:
1)画面把ADO的“ConnectionString”和“RecordSource”全部删除--修改为用代码连接;
2)维持控件和ADO的绑定不变;
3)加入类似以下的代码(其中的“XXX001”是你的数据库连接串):
Option Explicit
Private m_strAdoConn As String
Private m_blnInitOK As Boolean
'' Form_Load()
Private Sub Form_Load()
m_blnInitOK = False
m_strAdoConn = "XXX001"
End Sub
'' Form_Activate()
Private Sub Form_Activate()
If m_blnInitOK Then Exit Sub '' Do not call it again
m_blnInitOK = True
Adodc1.ConnectionString = m_strAdoConn
Adodc1.RecordSource = "T_USER"
Adodc1.Refresh
End Sub
********************************************************************
以上代码,本人刚在计算机上调试通过,如果你需要的话可以留个邮件,发给你看看。
其实原理很简单:就是在“Form_Activate()”才进行数据库连接和设置。
******************************************************************** --------------------编程问答-------------------- CSDN把我的代码格式变了(代码应该是有TAB空格的,但被CSDN强行去掉了),自己理解一下吧!
“Adodc1.Refresh”的作用就是强行要求再次连接数据库。
补充:VB , 数据库(包含打印,安装,报表)