ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]用VBA编写SQL查询问题

[复制链接]

TA的精华主题

TA的得分主题

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

你好!

我图片中只是没有列全所有的产品的品号!(因该是要列全的)

其实需求是很简单的.

我就是要按给定的品号的顺序求出,本月销售(退货)的发生数和累计数.

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-2 23:10 | 显示全部楼层
以下是引用[I]爱歌学习[/I]在2006-4-2 21:28:37的发言:
又看了一下,如果不改变顺序的话,那其实就是一个单纯的复制问题,而且你的累计销售、累计退货不是失去了意义?
?你说的我不是很明白!
[此贴子已经被作者于2006-4-2 23:11:19编辑过]

TA的精华主题

TA的得分主题

发表于 2006-4-2 23:58 | 显示全部楼层
明白了,这样? 71GgDorE.rar (16.74 KB, 下载次数: 19)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-3 19:05 | 显示全部楼层

我试了一下好象不行

Sub SeachData() 'sql查询实例
Dim x As Object, mydate As Variant
mydate = Range("j2").Value

Set x = CreateObject("ADODB.Connection")
x.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=YES;';Data Source=" & ThisWorkbook.FullName

For i = 5 To Range("a65536").End(xlUp).Row
Sql = "select Sum(数量) from [明细$] where 品号='" & Sheets("品种表").Cells(i, 1).Value & "'and 日期<=#" & mydate & "#"

Next i

Set y = x.Execute(Sql)

Sheets("品种表").Range("L2").CopyFromRecordset y

x.Close
Set y = Nothing

End Sub

我用这样的代码可以么?

想在 Sql = "select Sum(数量) from [明细$] where 品号='" & Sheets("品种表").Cells(i, 1).Value & "'and 日期<=#" & mydate & "#"
这句上做文章不知道可以不可以!?

TA的精华主题

TA的得分主题

发表于 2006-4-3 19:11 | 显示全部楼层
哦,哪里不行?我的例子里不就是按照指定的顺序汇总吗?

TA的精华主题

TA的得分主题

发表于 2006-4-3 19:14 | 显示全部楼层
恐怕那一句做不了文章,用ADO,最好在筛选出来后再做文章才快,如果你的 sql 语句条件太多,是非常慢的。我的改进就是筛选出来后再用两个循环依次与要求的顺序对比,这样很快就能在辅助区域排好顺序,然后再复制回去就行了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-3 19:43 | 显示全部楼层
以下是引用[I]爱歌学习[/I]在2006-4-3 19:11:18的发言:[BR]哦,哪里不行?我的例子里不就是按照指定的顺序汇总吗?
问题: 1.执行后,销售累计数量列,不正确,变成品号. 2.若日期变成了2006-2-28,执行后,将不正确了.

TA的精华主题

TA的得分主题

发表于 2006-4-3 21:03 | 显示全部楼层
刚跑去捉 bug了,看看还有什么问题: Jbb1C5Xu.rar (16.46 KB, 下载次数: 19)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-4-3 21:32 | 显示全部楼层

Range(Cells(5, 12), Cells(65536, 15))
为什么你喜欢用这样的表示!

而不用Range("L5:O65536")?

请问有什么不同?会增加运算速度?!

我刚才测试了.本月销售有点问题.对不上.把时间该成2-28了部分品种会没有本月发生数!

TA的精华主题

TA的得分主题

发表于 2006-4-3 22:47 | 显示全部楼层
可是你的原数据里本来就没有2月份的啊,我再看看.... 那种表示方法据说最快,呵呵,似乎有道理......
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-20 17:24 , Processed in 0.036660 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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