VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 968|回复: 8

ADO控件的一个郁闷问题,请教老鸟指点一下

[复制链接]

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-3-18 19:30:02 | 显示全部楼层 |阅读模式
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控件不报错?

我如何屏蔽掉这个提示 忘有经验的指点一下 谢谢
回复

使用道具 举报

1

主题

21

帖子

21.00

积分

新手上路

Rank: 1

积分
21.00
发表于 2020-6-24 18:00:01 | 显示全部楼层
你能不能把这个放到form active sub里面?
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-6-25 03:45:01 | 显示全部楼层
不是那个原因, 是 ADO控件初始化 早于 窗体的任何事件
回复

使用道具 举报

0

主题

4

帖子

4.00

积分

新手上路

Rank: 1

积分
4.00
发表于 2020-7-9 14:15:01 | 显示全部楼层
Form_Initialize

这个事件中写入代码
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-8-20 22:30:01 | 显示全部楼层
你们可能每遇到这个情况ADO控件已经帮定了数据库,

就是 我如何替换ADO帮定数据库的字符串,在 Form_Initialize 之前替换掉他,
就是说在ADO控件初始化的时候 我有没有办法控制他
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-20 23:30:01 | 显示全部楼层
不用Ado绑定不就行了吗?直接用代码写,方便、快捷。
回复

使用道具 举报

1

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-8-21 07:15:01 | 显示全部楼层
:'<
控件太多...懒得一个个换... 没有人知道办法吗?
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-21 08:45:02 | 显示全部楼层
曲线救国的方法:
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()”才进行数据库连接和设置。
********************************************************************
回复

使用道具 举报

0

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-21 09:00:01 | 显示全部楼层
我的代码格式变了(代码应该是有TAB空格的),自己理解一下吧!

“Adodc1.Refresh”的作用就是强行要求再次连接数据库。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表