VBA Excel里 用ADOjs访问数据库ACCESS数据库的问题

如何将excel中的数据用vba代码存入access文件中?_百度知道
如何将excel中的数据用vba代码存入access文件中?
excel中的日期 供应商 货物名称 单价 数量 金额9月10日 联想公司 笔记本 0
将表中的内容存储到D:\备份.mdb中,如果mdb中有其他记录 ,将记录存入以前的记录后面。每天都要将当天采购的记录录入并保存到mdb文件 中。谢谢
我有更好的答案
Connection &#39.Recordsetrs, 6);DY_DATA;定义数据库链接字符串cn.Open strCn '与数据库建立连接, adLockOptimistick = Cells(4, 8) + 8For i = 9 To kIf Cells(i, 7) = && ThenElse
rs(1) = Cells(i, 2)
rs(2) = Cells(i.Select Exit Sub ElseDim i As Integer, j As Integer, k As Integer, sht As Worksheet 'i,如果成功,返回连接对象cnSet rs = New ADODB,保存连接数据库信息;定义记录集对象.4.Path & &\ & mdbFile &#39, vbInformationCells(4.0,j;字符串变量Dim mdbFile As StringOn Error GoTo add_errmdbFile = ActiveW请先选择需要维护价格的系统.J数据记录添加成功!&;请先添加ADO引用Dim rs As New ADODB.Recordset '定义数据链接对象 .mdb&strCn = &Provider=Microsoft, cn.SelectActiveWorkbook.RefreshAlladd_exit, adOpenKeyset,保存数据表Dim strCn As String, strSQL As String &#39!&quot.Open &dbl直营客户正常供价表&;Data Source=&quot, 6).OLEDB;, vbInformation Cells(4,k为整数变量;sht 为excel工作表对象变量,指向某一工作表Dim cn As New ADODB以下是我用了实现从Excel导数据进ACCESS的代码,你参考一下,应该就可以做出来了:(Excel和Access两个文件放一个文件夹下)Public Sub 客户正常供价批量维护() If Cells(4, 6) = && Then MsgBox &quot:
Exit SubEnd Ifadd_err, 7)
rs(3) = Cells(i, 8)
Cells(i, 7) = &&
Cells(i, 8) = &&
End IfNextMsgBox &quot
vba中excel的单元格用cells(1,1),cells(1,2),cells(2,1),cells(2,2),cells(i,j)表示,在vba中access对应的单元格如何表示这些?
采纳率:16%
用导入好啦,用vba写代码吧。
为您推荐:
其他类似问题
您可能关注的内容
excel的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Excel VBA与数据库(Access)整合笔记_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Excel VBA与数据库(Access)整合笔记
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩224页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢通过设置Connection对象属性连接Access数据库的方法 - Office办公助手
最专业的Office办公软件学习和原创Office教程网站!
通过设置Connection对象属性连接Access数据库的方法
发布时间:09-03 来源:Office办公助手()
在通过VBA程序访问Access数据库时,首先需要连接数据库。在VBA中,使用ADO对象模型可以连接到各种不同类型的数据库,这都是通过设置Connection对象的相应属性完成的。Connection对象表示打开的连接到数据库的链接。无论对数据库进行何种操作,首先需要完成的都是生成该对象以连接到数据库。本文介绍通过设置Connection对象属性来连接Access数据库的方法。
1、新建Excel工作簿,打开Visual Basic编辑器,在工程资源管理器中添加一个模块,在&代码&窗口中输入程序代码,如图1所示。具体的程序代码如下所示:
Sub ConnectToAccess()
Dim conn As New ADODB.Connection
conn.Provider=&Microsoft.Jet.OLEDB.4.0& '指定Connection对象提供者的名称
conn.ConnectionString=&data source=&&_ThisWorkbook.Path&&\dbSource.mdb& '指定Connection对象的连接字符串
conn.Mode=adModeReadWrite '指定数据库读写模式
conn.Open '打开到指定数据库的链接
Debug.Print conn.ConnectionString '输出连接字符串
Debug.Print conn.ConnectionTimeout '输出连接超时时间
Debug.Print conn.Mode '输出数据库读写模式
Debug.Print conn.Provider '输出提供者名称
Debug.Print conn.Version '输出ADO版本号
Debug.Print conn.State '输出连接当前开启状态
图1 插入模块并输入程序
2、按F5键运行&ConnectToAccess&过程,此时在&立即窗口&中将会获取程序运行结果,如图2所示。
图2 &立即窗口&输出结果
这里要注意的是,在&ConnectionToAccess&过程中指定ConnectionString属性时,只给出了data source相关内容,但是在输出该属性时,却获取了很多内容,其中就包含Provider属性的相关信息。
上一篇: 下一篇:
专题教程推荐
(window.slotbydup=window.slotbydup || []).push({
id: '3577897',
container: s,
size: '300,450',
display: 'inlay-fix'
热门资源下载Access俱乐部
?&&&&?&&&&?&&&&?&&&&
您的位置:  > >
多个连接connection使用ADO写入再读取数据延迟的一种解决办法
来源:&&点击数:365&&评论数:3 &|&&|&
时 间: 13:06:03
作 者:&&&ID:64085&&城市:南通
摘 要:多个连接connection使用ADO分别写入再读取,存在数据缓存的问题,这里是一种解决办法
之前我们公司的资料是用excel做的,随着资料的增加,运行越来越慢,而且同事用的时候,数据录入比较随意,造成很多错误。
9月底,百度了一些资料,决定用access来解决,在淘宝买了本书开始学习access
10月国庆假过后,开始看书,翻了一遍,再看看access自带的帮助文件,发现我白买了,那个书写的真基础,书名是相世强著。
然后继续百度,找到了access软件网,进而发现了MV软件平台。
因此顺利完成了整个系统的设计.数据可以进行有效性的验证,而且非常方便,比excel填表格快速,还方便多人共享
昨日一个同事抱怨,做完系统的资料,还要把数据导出到我们另外一个打印系统
因此决定在我的系统内解决数据同步的问题,ado连接到SqlServer
结果发现,系统自动获得的连接是后台数据库的,rst在update后
再打开前台数据库的连接去读取保存的查询获得rst2
再把rst2 循环赋值给SqlServer的SQLrst
& & Dim r As ADODB.Field
& & For Each r In rst2.Fields
& & & & sql_rst(r.Name) = r.Value
& & Next r
然后在SqlServer中看,发现数据是update之前的
在本网站也找了文章,说就是有这个延迟
[用ADO写入数据时,确实存在延迟问题]
照着这篇文章用sleep,可以解决
可是我就想知道有没有其他解决办法
然后百度各种资料,在微软网站发现一篇文章
[How To Synchronize Writes and Reads with the Jet OLE DB Provider and ADO]
解决方法就有了,和大家分享下:
Dim JRO As New JRO.JetEngine'先添加这个引用
Dim cnn As ADODB.Connection
Set cnn = GetADOConnection()'平台是用这个获得后台数据库连接
Dim cnn2 As ADODB.Connection
Set cnn2 = CurrentProject.Connection'这个活动前端的连接
Dim rst As New ADODB.Recordset
dim strSQL
strSQL="你的sql语句,修改增加等"
dim strSQL2
strSQL2="你的sql语句2,查询"
Set rst = ado.OpenRecordset(strSQL, adLockOptimistic, cnn)
cnn.BeginTrans
'rst.update addnew等操作
JRO.RefreshCache cnn2'刷新
set rst=ado.OpenRecordset(strSQL2, adLockOptimistic, cnn2)'获得新的rst,内容已经更新了
Access软件网官方交流QQ群 (群号:)
      
&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】&&&&【&&】
Access网店
价格:¥0 元
价格:¥0 元
价格:¥1 元
(12-26 13:03)
(12-26 11:59)
(12-25 17:37)
(12-25 15:39)
(12-24 09:32)
(12-23 23:19)
(12-22 16:38)
(12-22 15:12)
(12-22 13:27)
(12-22 12:46)
Access软件网 版权所有 CopyRight
提供支持 本站特聘法律顾问: 李慧 律师当前位置:
使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题
使用ADO的OpenSchema或ADOX无法读取所有Access数据库里所有查询名称列表的问题
<dd data-toggle='tooltip' data-placement='top' data-original-title='添加时间:
16:31:00 &&'>
<dd data-toggle='tooltip' data-placement='top' data-original-title='作者: zstmtony &&'> zstmtony
<span class='label label-warning' data-toggle='tooltip' data-placement='top' data-original-title=' 阅读:429'> 429
一个Access中国的版主在使用ADO的OpenSchema或ADOX 读取Access数据库里所有查询的清单时
发现结果总是少了一个查询,Access查询列表中有5个,但用VBA 或VB代码读出来只有4个,少了一个
ADO读取Access数据库所有查询名的代码如下
Private Sub OpenDBSchema(FileName As String)
Dim conn As New ADODB.Connection
Dim mProvider As String
Dim fso As New FileSystemObject
If Not fso.FileExists(FileName) Then Set grid1.DataSource = Nothing
Select Case LCase(fso.GetExtensionName(FileName))
Case "mdb"
mProvider = "Microsoft.Jet.OLEDB.4.0"
Case "accdb"
mProvider = "Microsoft.ACE.OLEDB.12.0"
End Select
conn.ConnectionString = "Provider=" & mProvider & ";Data Source=" & FileName & ";Persist Security Info=F"
Set grid1.DataSource = conn.OpenSchema(adSchemaTables)
grid1.AllowUserResizing = flexResizeBoth
出现 的错误如下(ADO VBA代码取得的结果与Access数据库查询实际对比)
经过不断尝试与分析,终于发现,原来这个少掉的Access查询,使用了一个Access模块中的自定义函数
这样导致 无法识别到这个查询
将查询中用到的自定义函数删除后,则成功获取了
吐槽】064-姚文涛-10年()&&14:30:49
我得翻翻,好久之前的事情了,一直没结果,代码不知道放哪去了
等等,我现写一下看看
【话唠】ZPY2()&&14:40:06
set xCat = Server.CreateObject("ADOX.Catalog")
if xCat Is Nothing or IsEmpty(xCat) or not UseADOX Then
'ADOX is not available, so we'll get tables list using schemas
set xCat = JetConnection_.OpenSchema(adSchemaTables, Array(Empty, Empty, Empty, Empty))
Do While Not xCat.EOF
tableType = xCat("TABLE_TYPE").Value
If tableType = "SYSTEM TABLE" or tableType = "TABLE" or tableType = "ACCESS TABLE" or tableType = "LINK" _
or tableType = "PASS-THROUGH" Then
set tbl = new DBATable
.Name = xCat("TABLE_NAME").Value
.DateCreated = xCat("DATE_CREATED").Value
.DateModified = xCat("DATE_MODIFIED").Value
.Description = xCat("DESCRIPTION").Value
.TableType = xCat("TABLE_TYPE").Value
Set .Parent = Me
Set Tables_.Item(tbl.Name
xCat.MoveNext
call xCat.Close()
【吐槽】064-姚文涛-10年()&&14:41:31
这个结果输出时对的
【吐槽】064-姚文涛-10年()&&14:43:22
有些时候没问题,有些时候又有问题,当初那个问题数据库我找不到了
【话唠】席主习_smileyoufu()&&14:44:38
你列出有问题的例子来
【管理员】tmtony小辣椒()&&14:44:56
用ADOX&也会这样?
【话唠】ZPY2()&&14:47:01
【吐槽】064-姚文涛-10年()&&14:47:56
我翻翻看看,难道是我当初导出到datagridview之后眼睛看花了
【话唠】席主习_smileyoufu()&&14:50:23
几十年的东西,别轻易说有问题
【吐槽】064-姚文涛-10年()&&15:20:01
少了一个z开头的查询
【吐槽】064-姚文涛-10年()&&15:25:15
这是另一个,也少一个查询
【吐槽】064-姚文涛-10年()&&15:26:28
我这是Ado.net
的测试结果,Ado似乎也一样,总是会莫名其妙少几个查询
【话唠】席主习_smileyoufu()&&15:42:01
这是.net&不会用
【管理员】tmtony小辣椒()&&15:43:28
@064-姚文涛-10年&建议弄个vb6+ado+mdb数据库&上来,大家来测试一下
【吐槽】064-姚文涛-10年()&&15:43:46
【话唠】ZPY2()&&16:04:21
【吐槽】064-姚文涛-10年()&&16:04:39
【管理员】tmtony小辣椒()&&16:04:45
@ZPY2&截图不清
【吐槽】064-姚文涛-10年()&&16:05:01
上传了VB6的工程文件
里面有个数据库
【话唠】ZPY2()&&16:05:11
查询和表,参数不一样
【吐槽】064-姚文涛-10年()&&16:05:11
读取之后少个查询
【话唠】ZPY2()&&16:07:30
view&oledbschemaguid.tables&&这个参数
【吐槽】064-姚文涛-10年()&&16:07:43
就是这个OleDbSchemaGuid.Tables,控制是否是查询还是表,是后面那个object里的值控制的
【管理员】tmtony小辣椒()&&16:08:16
@064-姚文涛-10年&&少了哪个查询名?
【吐槽】064-姚文涛-10年()&&16:09:12
【话唠】ZPY2()&&16:11:47
我是ado的,
【吐槽】064-姚文涛-10年()&&16:11:49
我上传VB6工程,用的ADO
一样的问题
【吐槽】064-姚文涛-10年()&&16:14:08
我上次还发现一个有好多查询都找不到的,不过我实在是翻不到那个数据库了
【活跃】新手()&&16:21:38
你的查询表在access里面可以打开吗?
我在你的access里面打不开你查询不到的那个表
【管理员】tmtony小辣椒()&&16:27:35
@064-姚文涛-10年&原因找到了
【吐槽】064-姚文涛-10年()&&16:27:56
【管理员】tmtony小辣椒()&&16:28:09
因为你这个查询使用了access模块的自定义函数,所以取不到
把这个函数中用的自定义函数取消,就可能了
【话唠】ZPY2()&&16:28:49
【吐槽】064-姚文涛-10年()&&16:29:11
哦,终于知道原因了,迷惑了我好久
那我又想要那个自定义函数的查询,咋办啊
【话唠】ZPY2()&&16:29:33
自定义函数&只能在&access&vba执行,
【管理员】tmtony小辣椒()&&16:30:02
这个你可在Access使用时动态&设置qdf.sql
但这个查询在VB调用肯定用不了这个函数的
【话唠】ZPY2()&&16:31:43
【吐槽】064-姚文涛-10年()&&16:33:04
如果是动态设置Sql,是不是要将自定义函数的这个模块保存在VB6工程项目里?
【管理员】tmtony小辣椒()&&16:34:07
Access的查询是无法读取VB的自定义函数的:)
这个是不太好解决,DAO则可以
你只有在VB中了到查询内容,再用VB再处理了
分享到各大社区

我要回帖

更多关于 python 访问数据库 的文章

 

随机推荐