ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 求大佬帮忙看下如何修改,一直报错

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-9 13:38 | 显示全部楼层 |阅读模式
本帖最后由 wang93915066 于 2024-7-10 09:49 编辑

let
    // 从Excel工作表加载数据
    Source = Excel.CurrentWorkbook(){[Name="查询日期"]}[Content],
    // 确保"Date"列的标题在Excel中是第一行,并且数据从第二行开始
    // 直接获取"Date"列的第一行和第二行的值
    ValueFromA1 = Text.From(Source{[Row=1]}{[Column=0]}), // 第一行的数据
    ValueFromA2 = Text.From(Source{[Row=2]}{[Column=0]}), // 第二行的数据

    // 创建数据库连接记录
    DatabaseInfo = {
        Server = "192.168.0.254",
        Database = "testDB",
        User = "sa",
        Password ="111111"
    },

    // 构建SQL查询
    query = "SELECT COPTG.TG006, SUM(TH037+TH038) AS Total " &
            "FROM COPTH LEFT JOIN COPTG ON TG001 = COPTH.TH001 AND TG002 = COPTH.TH002 " &
            "WHERE COPTG.TG023 = 'Y' AND TG003 BETWEEN '" & ValueFromA1 & "' AND '" & ValueFromA2 & "' " &
            "AND COPTG.TG004 = '1207' " &
            "GROUP BY COPTG.TG006",

    // 使用Sql.Database函数执行SQL查询
    Results = Sql.Database(DatabaseInfo, query)
in
    Results

test.zip

17 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2024-7-9 17:17 | 显示全部楼层
Source{[Row=1]}{[Column=0]} 你这从哪学来的写法,应该是Source{0}[Date],还有DatabaseInfo,record格式你放list里,AI写的么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-9 21:32 | 显示全部楼层
花生就雪碧 发表于 2024-7-9 17:17
Source{[Row=1]}{[Column=0]} 你这从哪学来的写法,应该是Source{0}[Date],还有DatabaseInfo,record格式你放 ...

是用的AI,原本是直接用SQL语句查询的,那个是可以出结果的,但是想在EXCEL的单元格填入日期,再刷新PQ这样更方便些,所以就想改下,奈何不会写。您可以帮忙修改下文件么,这个我是实在不会弄了,谢谢啊!

TA的精华主题

TA的得分主题

发表于 2024-7-9 21:46 | 显示全部楼层
先试试这样写,都是猜的:
ValueFromA1 = Text.From(Source[Date]{0}),
ValueFromA2 = Text.From(Source[Date]{1}),
然后,DatabaseInfo不要
Results = Sql.Database( "192.168.0.254","testDB",[Query=query])
用户名和密码会跳出来对话框。

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 07:35 | 显示全部楼层
飞天篮球猪 发表于 2024-7-9 21:46
先试试这样写,都是猜的:
ValueFromA1 = Text.From(Source[Date]{0}),
ValueFromA2 = Text.From(Source ...

可以了, 谢谢!



let
    // 从Excel工作表加载数据
    Source = Excel.CurrentWorkbook(){[Name="查询日期"]}[Content],
    // 确保"Date"列的标题在Excel中是第一行,并且数据从第二行开始
    // 直接获取"Date"列的第一行和第二行的值
    ValueFromA1 = Text.From(Source[Date]{0}),
    ValueFromA2 = Text.From(Source[Date]{1})
in
   
let
    Source = Sql.Database("192.168.0.254","testDB",[Query="SELECT COPTG.TG006, SUM(TH037+TH038) AS Total " &
            "FROM COPTH LEFT JOIN COPTG ON TG001 = COPTH.TH001 AND TG002 = COPTH.TH002 " &
            "WHERE COPTG.TG023 = 'Y' AND TG003 BETWEEN '" & ValueFromA1 & "' AND '" & ValueFromA2 & "' " &
            "AND COPTG.TG004 = '1207' " &
            "GROUP BY COPTG.TG006"])
in
    Source

TA的精华主题

TA的得分主题

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

可以去看看这个网站:https://blog.crossjoin.co.uk
搜索sql.database  Value.NativeQuery  queryfolding等关键词
Value.NativeQuery  可以传参,可以控制queryfolding
queryfolding用于返回数据库方言,提高执行效率。
应该会对你有帮助。我没有用sqlserver有些东西不是很清楚,但原理都是一样的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-10 11:16 | 显示全部楼层
谢谢您!
我试了下,可能是我这里的网络问题,网址无法访问呢。

TA的精华主题

TA的得分主题

发表于 2024-7-10 11:35 | 显示全部楼层
wang93915066 发表于 2024-7-10 11:16
谢谢您!
我试了下,可能是我这里的网络问题,网址无法访问呢。

可能是办公局域网的原因。用手机也可以看,或者回家看。小事自己解决。

TA的精华主题

TA的得分主题

发表于 2024-7-30 14:01 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-10-18 10:09 , Processed in 0.039126 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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