ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于SQL在工作簿-工作表之间的查询、排序、转置(盖楼中....)

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-5-23 00:55 | 显示全部楼层
本帖最后由 opiona 于 2013-5-24 11:02 编辑

SQL求助-关于EXCEL版本.rar (31.68 KB, 下载次数: 40)
SQL中:FROM [Excel 8.0;Database=" & ThisWorkbook.Path & "\数据表12.xlsx].[Sheet1$]"   '//Excel2007的提示错误

  1. Sub OPIONA()
  2. StrSQL = "INSERT INTO [数据表A] SELECT * FROM [Excel 8.0;Database=" & ThisWorkbook.Path & "\数据表12.xlsx].[Sheet1$]"   '//Excel2007的错误
  3. 'StrSQL = "INSERT INTO [数据表A] SELECT * FROM [Excel 8.0;Database=" & ThisWorkbook.Path & "\数据表12.xls].[Sheet1$]"  '//Excel2003的这个可以通过
  4. '//不知道问题出在那里!大概问题是:[Excel 8.0;   但是不知道如何修改
  5. MsgBox AddDelMove(StrSQL)
  6. End Sub


  7. '*****************************************************************************************
  8. '函数名:    AddDelMove
  9. '函数功能:  执行SQL语句,一般为添加、修改删除语句
  10. '返回值:    返回一个布尔值,是否成功完成
  11. '参数1:     StrSQL   字符类型   SQL查询语句
  12. '使用方法:  Bool_1= AddDelMove(StrSQL,true)
  13. '*****************************************************************************************
  14. Public Function AddDelMove(StrSQL) As Boolean    '//执行SQL语句,一般为添加、修改删除语句
  15. 'On Error Resume Next    ' 改变错误处理的方式。
  16. Err.Clear
  17.     If StrSQL = "" Then AddDelMove = False: Exit Function
  18.         Set CN = CreateObject("Adodb.Connection") '//新建一个ADO连接
  19.         Set RS = CreateObject("adodb.recordset")
  20.         CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & "\Database.mdb;"
  21.         CN.Execute (StrSQL)
  22.         If Err.Number <> 0 Then AddDelMove = False Else AddDelMove = True
  23.         CN.Close  '//关闭ADO连接
  24.     Set RS = Nothing
  25.     Set CN = Nothing  '//释放内存
  26. End Function
  27. '*****************************************************************************************
复制代码

TA的精华主题

TA的得分主题

发表于 2013-5-24 12:11 | 显示全部楼层
短信收到
可以使用连接2007文件那样连接2003文件:
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myOldExcelFile.xls;
Extended Properties="Excel 8.0;HDR=YES";
但反过来不行
请参阅下面链接:
http://www.connectionstrings.com/excel

TA的精华主题

TA的得分主题

发表于 2013-5-24 12:17 | 显示全部楼层
  1. Sub OPIONA()
  2. StrSQL = "INSERT INTO [数据表A] SELECT * FROM [Excel 12.0;Database=" & ThisWorkbook.Path & "\数据表12.xlsx].[Sheet1$]"   '//Excel2007的错误
  3. 'StrSQL = "INSERT INTO [数据表A] SELECT * FROM [Excel 8.0;Database=" & ThisWorkbook.Path & "\数据表12.xls].[Sheet1$]"  '//Excel2003的这个可以通过
  4. '//不知道问题出在那里!大概问题是:[Excel 8.0;   但是不知道如何修改
  5. MsgBox AddDelMove(StrSQL)
  6. End Sub
  7. '*****************************************************************************************
  8. '函数名:    AddDelMove
  9. '函数功能:  执行SQL语句,一般为添加、修改删除语句
  10. '返回值:    返回一个布尔值,是否成功完成
  11. '参数1:     StrSQL   字符类型   SQL查询语句
  12. '使用方法:  Bool_1= AddDelMove(StrSQL,true)
  13. '*****************************************************************************************
  14. Public Function AddDelMove(StrSQL) As Boolean    '//执行SQL语句,一般为添加、修改删除语句
  15. 'On Error Resume Next    ' 改变错误处理的方式。
  16. Err.Clear
  17.     If StrSQL = "" Then AddDelMove = False: Exit Function
  18.         Set CN = CreateObject("Adodb.Connection") '//新建一个ADO连接
  19.         Set RS = CreateObject("adodb.recordset")
  20.         CN.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\Database.mdb;"
  21.         CN.Execute (StrSQL)
  22.         If Err.Number <> 0 Then AddDelMove = False Else AddDelMove = True
  23.         CN.Close  '//关闭ADO连接
  24.     Set RS = Nothing
  25.     Set CN = Nothing  '//释放内存
  26. End Function
  27. '*****************************************************************************************
复制代码

TA的精华主题

TA的得分主题

发表于 2013-6-11 13:21 | 显示全部楼层
详细研读,学习思路

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-6-19 13:18 | 显示全部楼层

呼唤版主:SQL查询2列字符串的相似度和最大相似度

234.rar (16.38 KB, 下载次数: 29)
想实现类似词典查询,或者搜索引擎的相似度功能,
求A、B列字符串的相似度和最大相似度:
如: ABCD  和 ABD 相似度是75%
        ABCD  和 ADC 相似度是50%

在网上看到:DIFFERENCE函数,
但是显示:函数未定义,
在vba+Excel中有其他办法么,
或者VBA+access的解决办法
或者其他语言+其他数据库的解决方式

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-7-6 13:31 | 显示全部楼层
  _conn = "Provider=Microsoft.Ace.OleDb.12.0;" & "Data Source=" & Excel工作簿路径和名称 & ";" & "Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"
            
_command.CommandText = "SELECT * INTO [MS Access;Database=" & Application.StartupPath & "\Access数据库名.mdb].[手机号码数据] FROM [Sheet表明$]"

使用上面可以成功导入Excel2007数据到Access,
问题是:如果Access带有密码,应该如何改写?

TA的精华主题

TA的得分主题

发表于 2013-7-6 13:51 | 显示全部楼层
短信收到,请参考:

[;pwd=密码;database=" & 路径 & "\数据库名.mdb].数据表"

TA的精华主题

TA的得分主题

发表于 2014-2-8 15:32 | 显示全部楼层
太精彩了,做个标记收藏一下

TA的精华主题

TA的得分主题

发表于 2014-4-24 08:55 | 显示全部楼层
opiona 发表于 2011-11-14 23:12
第一个答案找到了: 等待大侠对第二问题的解答,或者是没有办法如此排序??

老师,如何数据表中的C、D、E、F也有数据 ,在查询表里也在查询出来,要如何修改代码?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-14 14:17 | 显示全部楼层
分别查询,用 UNION ALL组合一下
例如:
SELECT 姓名,年龄 FROM [数据表A] where len(姓名)>0  UNION ALL SELECT 姓名,年龄 FROM [数据表b] where len(姓名)>0   UNION ALL SELECT 姓名,年龄 FROM [数据表C] where 年龄>23
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-5 23:32 , Processed in 0.039798 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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