已有23人关注
用vb 连接access数据库时,多个adodc控件的用法
发表在VB答疑区 2011-03-14
是否精华
版块置顶:
在同一窗体中,如何做到连接一次数据库,可以让本窗体的多个adodc控件共用此连接?比如,打开窗体1时用VB与db数据库建立一次连接,然后窗体1的adodc1、adodc2、adodc3、adodc4……,直接连接表1、表2、表3,表4……,而不是每个adodc都要与db数据库建立一次连接。也就是想将打开窗体时建立的那个连接设为公共连接。如何实现?

进一步,如果将以上的数据库连接在多个窗体中共用又如何实现?

本人初学VB,希望答案为代码+一些解释,能让我看懂,或提供一些相关网页链接也行,谢谢大家。
分享到:
精彩评论 5
vb_music
学分:0 LV1
2011-03-14
沙发
你好:
    你这样连接好像乱套了,如果ADODC2与ADODC1链接的不是一个数据库或数据表而在一个窗体上,你怎么能让他们链接的是相同的内容呢。你最好还是一点点系统的学习吧。
    可以在公共模块中添加数据库连接串,然后在使用的时候进行调用数据库连接字符串。对于数据库连接的知识在许多基础类别的图书中都有详细的介绍,买一本详细的学习一下。
    你的问题好像不太合乎逻辑思维,功能基本不能实现,也没有必要实现,没啥意义。
lzl3283037
学分:0 LV1
TA的每日心情
开心
2022-01-20 20:20:56
2011-03-15
板凳
vb_music 你好,我的代码如下:
Private Sub Form_Load()
Dim xa As Long, xb(4) As Long
For xa = 0 To 4
Select Case xa
Case 0
    Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
    Adodc1(xa).RecordSource = "select * from 商品名称 "
    Adodc1(xa).Refresh
  If Adodc1(xa).Recordset.RecordCount > 0 Then
    Adodc1(xa).Recordset.MoveFirst
   For xb(xa) = 1 To Adodc1(xa).Recordset.RecordCount
    Combo_lr(xa).AddItem Adodc1(xa).Recordset.Fields("商品名称型号").Value
    Adodc1(xa).Recordset.MoveNext
   Next xb(xa)
  End If
 Case 1
    Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
    Adodc1(xa).RecordSource = "select * from 一级分类 "
    Adodc1(xa).Refresh
  If Adodc1(xa).Recordset.RecordCount > 0 Then
    Adodc1(xa).Recordset.MoveFirst
   For xb(xa) = 1 To Adodc1(xa).Recordset.RecordCount
    Combo_lr(xa).AddItem Adodc1(xa).Recordset.Fields("一级分类名称").Value
    Adodc1(xa).Recordset.MoveNext
   Next xb(xa)
  End If
 Case 2
    Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
    Adodc1(xa).RecordSource = "select * from 二级分类 "
    Adodc1(xa).Refresh
  If Adodc1(xa).Recordset.RecordCount > 0 Then
    Adodc1(xa).Recordset.MoveFirst
   For xb(xa) = 1 To Adodc1(xa).Recordset.RecordCount
    Combo_lr(xa).AddItem Adodc1(xa).Recordset.Fields("二级分类名称").Value
    Adodc1(xa).Recordset.MoveNext
   Next xb(xa)
  End If
 Case 3
    Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
    Adodc1(xa).RecordSource = "select * from 三级分类 "
    Adodc1(xa).Refresh
  If Adodc1(xa).Recordset.RecordCount > 0 Then
    Adodc1(xa).Recordset.MoveFirst
   For xb(xa) = 1 To Adodc1(xa).Recordset.RecordCount
    Combo_lr(xa).AddItem Adodc1(xa).Recordset.Fields("三级分类名称").Value
    Adodc1(xa).Recordset.MoveNext
   Next xb(xa)
  End If
 Case 4
    Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
    Adodc1(xa).RecordSource = "select * from 四级分类 "
    Adodc1(xa).Refresh
  If Adodc1(xa).Recordset.RecordCount > 0 Then
    Adodc1(xa).Recordset.MoveFirst
   For xb(xa) = 1 To Adodc1(xa).Recordset.RecordCount
    Combo_lr(xa).AddItem Adodc1(xa).Recordset.Fields("四级分类名称").Value
    Adodc1(xa).Recordset.MoveNext
   Next xb(xa)
  End If
......略

case 0-4是通过5个adodc控件,调用商品管理.mdb数据库中的5个表,对应到窗体中的五个下拉列表框combobox。我的想法是每用一次adodc就得调用一次“商品管理.mdb”数据库,如何才能将这5次调用整合成一次调用,即将5 行一样的代码:
Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"

缩写成一行通用代码,供5 个adodc共同使用。
学分: LV1
2011-03-15
地板
Adodc1(xa)这样写控件的名称是不可以的
lzl3283037
学分:0 LV1
TA的每日心情
开心
2022-01-20 20:20:56
2011-03-16
4L
叶子,Adodc1(xa)这样写,对应于Combo_lr(xa)控件,也就Adodc、Combobox两类控件共用一个数组变量,运行结果是正确的,只是我想简化一下代码,将以下代码写成一行,而不是五行。
Adodc1(xa).ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\商品管理.mdb;Persist Security Info=False"
学分: LV1
2011-03-18
5L
如果所有的case语句都有这句代码,就将这句代码放在Select Case语句之上
首页上一页 1 下一页尾页 5 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照