乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > <em>excel</em> 用<em>ADO</em>链接到<e

<em>excel</em> 用<em>ADO</em>链接到<e

作者:乔山办公网日期:

返回目录:excel表格制作


常用符号大体如下:
&(连接号):为连接符,将控件内容和字符串连接起来。
''(单引号):文本标示符,被包含在一对单引号之内的字符串即为文本型数据。
##(井e799bee5baa6e997aee7ad94e58685e5aeb9331号):日期标示符,类似于文本标示符,被包含在井号内的即为日期型数据。
!(叹号):表示隶属关系,前者为父级,后则为子级,一般出现在记录集或者窗体控件中。
.(点号):同样为隶属关系,大多用于查询或者表中。
[](中括号):一般用于控件,中括号内即为窗体控件名称。
()(小括号):小括号内一般为对象集合的元素,小括号内可以是集合元素的索引值,也可以是元素的名称。
数值型数据则不需要任何标示符。

其实这样解释算不上严谨的,不过大体可以解决了楼主的一些疑惑了。下面以一些例子来说明一下:
a、假定窗体中这两个控件的值:User_Name为whoami13,User_Password=ABC,那么:
temp = "select * From 用户 where 名称=' " & Me![User_Name] & " 'and 密码= ' " & Me![User_Password] & " ' "
相当于:
temp = "select * From 用户 where 名称=' whomai13 'and 密码= ' ABC ' "

b、假定窗体中这两个控件的值:Date为2012-7-5,Money=15,那么:
temp = "select * From 用户 where 名称=# " & Me![Date] & " # and 密码= " & Me![Money]
相当于:
temp = "select * From 用户 where 名称=#2012-7-5# and 密码= 15"
需要注意的是,数据类型必须是相同的,否则无法执行ADO代码。

为什么不直接用ACCESS做
给你个参考:

Sub abc()
Set x = CreateObject("adodb.connection")
x.Open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & ThisWorkbook.FullName
On Error Resume Next '如果数据库存在则跳过
Set y = CreateObject("adox.catalog") 'ADO没有提供创建Access数据库的功能,用adox
y.create ("provider=microsoft.jet.oledb.4.0;data source=d:\备份数据库.mdb") '创建access数据库

Sql = "select * into sheet3 in 'd:\备份数据库.mdb' from [sheet3$]" '写入数据库,创建表名sheet3表,把sheet3内容导入到数据库
Set yy = x.Execute(Sql)
End Sub

rst.Open Sql, cn.ConnectionString

 我的数据库语言不是很好,但看了你的代码,也觉得很乱,你的代码至少有好几种方法可以修改,上面是最简单的一种,实际上你的数据库在acapp.OpenCurrentDatabase的时候已经打开了,接下来根本7a64e58685e5aeb9362就不需要再次使用cn进行连接。

所以第二种改法是:

acApp.OpenCurrentDatabase (dbPath)
'Dim cn As ADODB.Connection   '不需要再次连接
'Set cn = acApp.CurrentProject.Connection   '不需要再次连接
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, acApp.ADOConnectString   '我只需要在这里调用连接的数据就可以了,而这个连接数据存储在acApp.ADOConnectString里面。
rst.MoveFirst

 

下面是RecordSet的OPEN的用法:

Open 方法 (ADO Recordset)
打开游标。
语法
recordset.Open Source, ActiveConnection, CursorType, LockType, Options
参数
Source 可选。Variant,计算有效的 Command 对象、SQL 语句、表名、存储过程调用、URL 或包含持久存储 Recordset 的文件名或 Stream 对象。
ActiveConnection 可选。Variant,计算有效的 Connection 对象变量名,或包含 ConnectionString 参数的 String。
CursorType 可选。CursorTypeEnum 值,确定在打开 Recordset 时提供者应使用的游标类型。默认值为 adOpenForwardOnly。
LockType 可选。LockTypeEnum 值,确定在打开 Recordset 时提供者应使用的锁定(并发)类型。默认值为 adLockReadOnly。
Options 可选。Long 值,指示提供者计算 Source 参数的方式(如果该参数表示除 Command 对象之外的某些内容),或者指示 Recordset 应该从以前保存过的文件中恢复。可以是一个或多个 CommandTypeEnum 或 ExecuteOptionEnum 值,这些值可以用位 AND 操作符组合。
注意   如果从包含持久 Recordset 的 Stream 中打开 Recordset,那么使用 adAsyncFetchNonBlocking 的 ExecuteOptionEnum 值将不起作用;提取操作将同步进行并发生阻塞。adExecuteNoRecords 或 adExecuteStream 的 ExecuteOpenEnum 值不应与 Open 一起使用。

因为ADO语言,直接提供了连接数据库的方法,所以我们可以直接这样来连接数据库:(算作本题的第三种改法吧)

Dim cn As New ADODB.Connection    '直接创建对数据库连接的实例对象cn
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath  '连接数据库
Dim rst As New ADODB.Recordset
Dim Sql As String
Sql = "Select * From 0012X32"
rst.Open Sql, cn
rst.MoveFirst
rst.Move (1)
MsgBox rst.Fields(1).Value

相关阅读

  • <em>excel</em> 用<em>ADO</em>链接到<e

  • 乔山办公网excel表格制作
  • 常用符号大体如下:&(连接号):为连接符,将控件内容和字符串连接起来。(单引号):文本标示符,被包含在一对单引号之内的字符串即为文本型数据。##(井e799bee5baa6e997aee7ad94e
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网