ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 爱歌学习

使用 ADO-SQL 处理 EXCEL 文件的程序架构(实例注释)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-4 17:40 | 显示全部楼层
本帖已被收录到知识树中,索引项:ADO技术

实例14:不打开文件而引用单列、单行、某个单元格、横向单元格的和、纵向单元格的和:

'引用一列,如A
Sub onecolumn()
    Dim Sql$
    Set Conn = CreateObject("Adodb.Connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & ThisWorkbook.Path & "\1.xls"
    Sql = "select f1 from [sheet1$]"
    Cells.Clear
    [a1].CopyFromRecordset Conn.Execute(Sql)
    Conn.Close
    Set Conn = Nothing
End Sub

'引用一行,如第1行
Sub onerow()
    Dim Sql$
    Set Conn = CreateObject("Adodb.Connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & ThisWorkbook.Path & "\1.xls"
    Sql = "select * from [sheet1$a1:iv1]"
    Cells.Clear
    [a1].CopyFromRecordset Conn.Execute(Sql)
    Conn.Close
    Set Conn = Nothing
End Sub

'引用一个单元格,如 k1 单元格
Sub onecell()
    Dim Sql$
    Set Conn = CreateObject("Adodb.Connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & ThisWorkbook.Path & "\1.xls"
    Sql = "select * from [sheet1$k1:k1]"
    Cells.Clear
    [a1].CopyFromRecordset Conn.Execute(Sql)
    Conn.Close
    Set Conn = Nothing
End Sub


'计算 A1+B1
Sub A1_Plus_b1()
    Dim Sql$
    Set Conn = CreateObject("Adodb.Connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & ThisWorkbook.Path & "\1.xls"
    Sql = "select f1+f2 from [sheet1$a1:b1]"
    Cells.Clear
    [a1].CopyFromRecordset Conn.Execute(Sql)
    Conn.Close
    Set Conn = Nothing
End Sub

'计算 A1+A2
Sub sumcolumn()
    Dim Sql$
    Set Conn = CreateObject("Adodb.Connection")
    Conn.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=no';data source=" & ThisWorkbook.Path & "\1.xls"
    Sql = "select sum(f1) from [sheet1$a1:a2]"
    Cells.Clear
    [a1].CopyFromRecordset Conn.Execute(Sql)
    Conn.Close
    Set Conn = Nothing
End Sub

CzVYNsA7.rar (12.07 KB, 下载次数: 313)
[此贴子已经被作者于2007-3-9 13:10:10编辑过]

pdJJ7JLa.rar

13.81 KB, 下载次数: 276

使用 ADO-SQL 处理 EXCEL 文件的程序架构(实例注释)

05tkI3a3.rar

14.47 KB, 下载次数: 240

TA的精华主题

TA的得分主题

发表于 2006-8-4 17:46 | 显示全部楼层
学习ing.....[em23][em23][em25][em25][em26][em26]

TA的精华主题

TA的得分主题

发表于 2006-8-6 22:41 | 显示全部楼层

先谢过楼主.提问:

textbox1至textbox30共30个分另对应表1和表2两个mdb表的字段,现要在表1中模糊查询30个textbox其中不为空(条件数量不确定,即不为空的BOX数量不确定)的记录并全部写入表2中,怎样写代码?

db2.Execute "insert into findyh select * from yh where [yhfj] like " & Chr(39) & "*" & TextBox9.Text & "*'"

只是指定一个条件.

[此贴子已经被作者于2006-8-7 8:50:05编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-7 08:52 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-8-7 09:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
好文!

TA的精华主题

TA的得分主题

发表于 2006-8-7 10:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

要得。俺也好好学习。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-10 21:10 | 显示全部楼层
QUOTE:
以下是引用oriole在2006-8-6 22:41:57的发言:

先谢过楼主.提问:

textbox1至textbox30共30个分另对应表1和表2两个mdb表的字段,现要在表1中模糊查询30个textbox其中不为空(条件数量不确定,即不为空的BOX数量不确定)的记录并全部写入表2中,怎样写代码?

db2.Execute "insert into findyh select * from yh where [yhfj] like " & Chr(39) & "*" & TextBox9.Text & "*'"

只是指定一个条件.


看了你这里的附件http://club.excelhome.net/dispbbs.asp?boardid=2&replyid=475185&id=180691&page=1&skin=0&Star=1,因为每一个字段名不同且命名没有什么规律,应该只能一个一个判断吧....

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-8-15 17:32 | 显示全部楼层

看了你这里的语句http://club.excelhome.net/viewthread.php?tid=182784&px=0

想到一个办法来“模糊查询30个textbox其中不为空(条件数量不确定,即不为空的BOX数量不确定)的记录并全部写入表2中”:

Private Sub cmdFind_Click() '查找并写入
    Dim Sql$, i%
    Set DB2 = OpenDatabase(ThisWorkbook.Path & "\pallet.mdb")
    Set RS2 = DB2.OpenRecordset("findyh", dbOpenDynaset)
    DB2.Execute "delete from findyh"
    Sql = "insert into findyh select * from yh where "
    For i = 1 To 28
        If Controls("textbox" & i) <> "" Then
            Sql = Sql & RS2.Fields(i).Name & " like '*" & Controls("textbox" & i).Text & "*' and "
        End If
    Next
    Sql = Left(Sql, Len(Sql) - 4)
    DB2.Execute Sql
    RS2.Close: DB2.Close
    Set RS2 = Nothing: Set DB2 = Nothing
    Unload Me
    UserForm1.Show
End Sub

事先在填写文本框时对应为:

    For i = 1 To 28
        Me.Controls("textbox" & i).Text = IIf(IsNull(RS1.Fields(i)), "", RS1.Fields(i))
    Next

aTLUPDfe.rar (120.99 KB, 下载次数: 234)
[此贴子已经被作者于2006-8-15 18:16:21编辑过]

TA的精华主题

TA的得分主题

发表于 2006-8-15 21:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
真是想啥就来啥,想睡觉就来枕头,想了解ADO就来了爱歌学习的文章,真是太好了,谢谢你,辛苦了。

TA的精华主题

TA的得分主题

发表于 2006-8-15 21:06 | 显示全部楼层

很有意义,留着研究ADO的时候做参考!谢谢分享:)

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 02:30 , Processed in 0.039663 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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