ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于前端数据覆盖到数据库的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-30 14:29 | 显示全部楼层 |阅读模式
本帖最后由 咩咩神 于 2018-8-30 14:39 编辑

实际想法 我把前端的数据做完了 需要把前端的指定工作表内容完全复制并覆盖到后端的excel相同名称的工作表,应该如何操作  已经卡了2天了
        macro1模块第一次使用时没问题,第二次使用需要手工打开"备份上传"工作簿再保存关闭,否则报错,而且会打开一个只读的"数据"工作簿
        ss模块因为我想把备份上传放在局域网的共享文件夹内,所以Jet.Oledb.4.0不支持xlsm(数据库格式是xlsm,里面涉及到打开工作表就清空空白行),用下面的方法又会报错 求教
  1. Sub Macro1()



  2. ''''macro1模块第一次使用时没问题,第二次使用需要手工打开"备份上传"工作簿再保存关闭,否则报错,而且会打开一个只读的"数据"工作簿
  3.     Dim cnn As Object, SQL$
  4.     Set cnn = CreateObject("ADODB.Connection")
  5.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties =Excel 8.0;Data Source =" & ThisWorkbook.Path & "\备份上传.xls"
  6.     SQL = "update [长大王订单池$] set 订单号=null,业务员=null,品名=null,客户名首字缩写=null"
  7.     cnn.Execute SQL
  8.     SQL = "insert into [长大王订单池$] select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[长大王订单池$]"
  9.     cnn.Execute SQL
  10.     MsgBox "数据已经添加到数据库!", vbInformation, "添加数据"
  11.     cnn.Close
  12.     Set cnn = Nothing
  13. End Sub
  14. Sub ss()
  15. '''ss模块因为我想把备份上传放在局域网的共享文件夹内,所以Jet.Oledb.4.0不支持xlsm(数据库格式是xlsm,里面涉及到打开工作表就清空空白行),用下面的方法又会报错 求教
  16.     Set conn = CreateObject("ADODB.Connection")
  17.     conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;extended properties=""excel 12.0;HDR=NO;IMEX=1"";Data Source=" & ThisWorkbook.Path & "\备份上传.xls"
  18.      SQL = "update [长大王订单池$] set 订单号=null,业务员=null,品名=null,客户名首字缩写=null"
  19.     conn.Execute SQL
  20.     SQL = "insert into [长大王订单池$] select * from [Excel 8.0;Database=" & mypath & "].[长大王订单池$"
  21.     conn.Execute SQL
  22.     MsgBox "数据已经添加到数据库!", vbInformation, "添加数据"
  23.     conn.Close
  24.     Set conn = Nothing
  25. End Sub
  26. ''''''实际想法 我把前端的数据做完了 需要把前端的指定工作表内容完全复制并覆盖到后端的excel相同名称的工作表,应该如何操作  已经卡了2天了
复制代码

数据与备份.rar

36.94 KB, 下载次数: 0

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-30 14:39 | 显示全部楼层
  1. Sub Macro1()



  2. ''''macro1模块第一次使用时没问题,第二次使用需要手工打开"备份上传"工作簿再保存关闭,否则报错,而且会打开一个只读的"数据"工作簿
  3.     Dim cnn As Object, SQL$
  4.     Set cnn = CreateObject("ADODB.Connection")
  5.     cnn.Open "Provider = Microsoft.Jet.Oledb.4.0;Extended Properties =Excel 8.0;Data Source =" & ThisWorkbook.Path & "\备份上传.xls"
  6.     SQL = "update [长大王订单池$] set 订单号=null,业务员=null,品名=null,客户名首字缩写=null"
  7.     cnn.Execute SQL
  8.     SQL = "insert into [长大王订单池$] select * from [Excel 8.0;Database=" & ThisWorkbook.FullName & "].[长大王订单池$]"
  9.     cnn.Execute SQL
  10.     MsgBox "数据已经添加到数据库!", vbInformation, "添加数据"
  11.     cnn.Close
  12.     Set cnn = Nothing
  13. End Sub
  14. Sub ss()
  15. '''ss模块因为我想把备份上传放在局域网的共享文件夹内,所以Jet.Oledb.4.0不支持xlsm(数据库格式是xlsm,里面涉及到打开工作表就清空空白行),用下面的方法又会报错 求教
  16.     Set conn = CreateObject("ADODB.Connection")
  17.     conn.Open "Provider = Microsoft.ACE.OLEDB.12.0;extended properties=""excel 12.0;HDR=NO;IMEX=1"";Data Source=" & ThisWorkbook.Path & "\备份上传.xls"
  18.      SQL = "update [长大王订单池$] set 订单号=null,业务员=null,品名=null,客户名首字缩写=null"
  19.     conn.Execute SQL
  20.     SQL = "insert into [长大王订单池$] select * from [Excel 8.0;Database=" & mypath & "].[长大王订单池$"
  21.     conn.Execute SQL
  22.     MsgBox "数据已经添加到数据库!", vbInformation, "添加数据"
  23.     conn.Close
  24.     Set conn = Nothing
  25. End Sub
  26. ''''''实际想法 我把前端的数据做完了 需要把前端的指定工作表内容完全复制并覆盖到后端的excel相同名称的工作表,应该如何操作  已经卡了2天了
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-30 15:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-30 16:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
来个老师帮忙指导一下吧  非常感谢

TA的精华主题

TA的得分主题

发表于 2018-8-30 16:24 | 显示全部楼层
本帖最后由 魂断蓝桥 于 2018-8-30 16:26 编辑
咩咩神 发表于 2018-8-30 16:04
来个老师帮忙指导一下吧  非常感谢

覆盖是什么意思?

如果你指删除再新增,ado对excel 做不到删除数据,只能是更新。

局域网共享excel 就是个坑,尽量别用。用access就好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-30 16:58 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
魂断蓝桥 发表于 2018-8-30 16:24
覆盖是什么意思?

如果你指删除再新增,ado对excel 做不到删除数据,只能是更新。

老师  是的 我想要达到删除完了再新增  
用ACCSEE 我只会用插入  不会删除了再新增

TA的精华主题

TA的得分主题

发表于 2018-8-31 08:44 | 显示全部楼层
咩咩神 发表于 2018-8-30 16:58
老师  是的 我想要达到删除完了再新增  
用ACCSEE 我只会用插入  不会删除了再新增

开启事物
DELETE FROM 表名称
执行sql语句
INSERT INTO 表名称 (字段名称) VALUES(值1,值2)
执行sql语句
提交事务

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-31 09:01 | 显示全部楼层
魂断蓝桥 发表于 2018-8-31 08:44
开启事物
DELETE FROM 表名称
执行sql语句

老师 我看论坛里好多都说处理事务 我在百度上搜索也没有很明白的解释
事务是个什么概念呢?
INSERT INTO 表名称 (字段名称) VALUES(值1,值2)
以上的插入命令必须要有字段名和值吗
可以缺省字段名和值 直接insert into 表名称 插入整张表吗?

TA的精华主题

TA的得分主题

发表于 2018-8-31 09:28 | 显示全部楼层
本帖最后由 魂断蓝桥 于 2018-8-31 09:32 编辑
咩咩神 发表于 2018-8-31 09:01
老师 我看论坛里好多都说处理事务 我在百度上搜索也没有很明白的解释
事务是个什么概念呢?
INSERT INT ...

⑴ 原子性(Atomicity)
⑵ 一致性(Consistency)
⑶ 隔离性(Isolation)
⑷ 持久性(Durability)

  事务最主要的功能就是要不全部插入成功,要不全部不成功,例子,你去银行汇款的时候,对数据库来说是两个语句,一个是需要把你的钱减少一部分,另一个人增加一部分,如果没有事物的话,你的钱是减少后,但突然断电了,或者系统死机了,另一个人的钱并没有增加上,这样肯定不行的,所以就有了事务的概念。

至于缺省的话,也是可以不写字段名的,但一般不建议这样做,写全比较好。(因为有主键的关系,一般都是自增长),你插入一列数据有可能不是全部字段都有值,因为数据库有个缺省值的概念。
举个例子,数据库字段中有一个字段是最后日期,含义是最后新增的或修改后的日期,这个有默认值,取系统的时间,这个字段是不需要你手动输入的,如果你不写字段就需要自己写值,更麻烦的。


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-1 17:20 | 显示全部楼层
魂断蓝桥 发表于 2018-8-31 09:28
⑴ 原子性(Atomicity)
⑵ 一致性(Consistency)
⑶ 隔离性(Isolation)

老师 事务的概念我懂了 ado开启事务与关闭事务的语句是什么呢?我应该朝哪个方向可以学习呢?
希望老师不吝赐教
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 10:16 , Processed in 0.027029 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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