ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

sql 插入与更新问题,后台数据表是EXCEL,求教!!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-4-10 07:22 | 显示全部楼层 |阅读模式
刚学SQL ,有些问题不太明白,后台数据表是excel ,连接数据库时,查询、插入与更新数据时,连接方法有什么不同?请高手指教。谢谢!

测试.zip

12.21 KB, 下载次数: 307

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-10 23:26 | 显示全部楼层
本帖最后由 fstxm 于 2016-4-11 04:26 编辑

新手学习,求各位高手指点。。。。。。。。。能帮忙看看这程序错在哪吗?谢谢!
Sub 更新()
Dim pth As String
    pth = ThisWorkbook.Path & "\"
    Set cnn1 = CreateObject("adodb.connection")
    cnn1.Open "provider=microsoft.jet.oledb.4.0;extended properties='excel 8.0;hdr=yes;imex=1';data source=" & ThisWorkbook.FullName
    updatesql = "update [excel 8.0;database=" & pth & "data.xls].[data$a1:d] a ,[sheet1$a1:d] b set a.班级=b.班级,a.性别=b.性别 where a.姓名=b.姓名"
    cnn1.Execute updatesql
    Set cnn = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2016-4-11 01:24 | 显示全部楼层
主要是连接字符串的差异。sql server貌似往往都需要用户名跟密码,Excel则用oledb来连接,具体请去论坛里搜索“连接字符串”。
另外就是,Excel用的是工作表,所以from后面不太一样,例如:
from [c:\xx.xls].[sheet1$A1:K100](有时候如果不使用文件路径,可能会出错)
最后,印象中Excel表的增删改,似乎是不能直接用ado来完成的(当然,ado读取数据是没问题的),而是需要用workbook来open数据表对应的worksheet,再写入。而大多数数据库,是可以通过ado连接后直接读写。

TA的精华主题

TA的得分主题

发表于 2016-4-11 10:07 | 显示全部楼层
roych 发表于 2016-4-11 01:24
主要是连接字符串的差异。sql server貌似往往都需要用户名跟密码,Excel则用oledb来连接,具体请去论坛里搜 ...

"最后,印象中Excel表的增删改,似乎是不能直接用ado来完成的(当然,ado读取数据是没问题的),而是需要用workbook来open数据表对应的worksheet,再写入。而大多数数据库,是可以通过ado连接后直接读写。"

这点认识是不对的,所谓增删改不能在Excel 上执行是指直接使用OLEDB Jet 的情况下而不是ADO 对象,换句话说就是你在数据选项卡下使用各种外链,在属性里输入的SQL 是只有读出是有效的,而insert into ,update ,delete 等语句无效,既然使用ADO 在VBA 里,自然是荤素不忌,都可以的。

EXCEL 不是数据库,使用SQL 也有一定的局限性,这是正确的。

TA的精华主题

TA的得分主题

发表于 2016-4-11 14:01 | 显示全部楼层
hehex 发表于 2016-4-11 10:07
"最后,印象中Excel表的增删改,似乎是不能直接用ado来完成的(当然,ado读取数据是没问题的),而是需要 ...

现在你的帖子主题说的后台表就是Excel啊,不是把它当数据库那是把它当什么?^_^

TA的精华主题

TA的得分主题

发表于 2016-4-11 14:14 | 显示全部楼层
roych 发表于 2016-4-11 14:01
现在你的帖子主题说的后台表就是Excel啊,不是把它当数据库那是把它当什么?^_^

我的意思是Excel 不能完全当数据库软件使用,用SQL 语言操作的时候需要规避一些类似数据类型之类的问题。
以前vba 区有过人写帖子喷SQL, 其实不是SQL 的错,是Excel 的数据格式要求不够严谨造成的。
使用ADO对象进行增删查改都是没问题的,即使是往Excel 表上写。那个只有Select 起作用的,是数据选项卡下的OLEDB 连接,不是ADO 调用的SQL。

TA的精华主题

TA的得分主题

发表于 2016-4-11 15:04 | 显示全部楼层
hehex 发表于 2016-4-11 14:14
我的意思是Excel 不能完全当数据库软件使用,用SQL 语言操作的时候需要规避一些类似数据类型之类的问题。 ...

Excel做数据库后台会引发很多问题的。
一方面是数据格式不太严谨,容易引发一些问题。
另一方面,Excel不会有索引之类,数据较多的时候,查询绝对是短板。

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-4-12 01:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢各位高手指点。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 01:35 , Processed in 0.049870 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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