VBA 把Excel表当做一个大数据库来操作

VBA 把Excel表当做一个大数据库来操作

python 复制代码
Sub SqlQueryBJD(strBillNo As String)

Dim strSql As String
Dim arrCol() As String
Dim strLineWhere
Dim arrWhere() As String
Dim strWhereVal As String

Dim strResultShowRng As String
Dim strWhereRng As String
Dim strShowResultRowRng As String
Dim strShowResultRowMsg As String

Dim strSqlSb As String
Dim wsDbQ As Worksheet
Dim sqlSb As New StringBulider

On Error GoTo er:

'日期,单号,直接费用,管理费,税率,税金,合计,报价单抬头,工程名称,提交单位,客户名称,地址,电话,施工面积,备注,项目类别,项目名称,数量,单位,材料单价,材料合价,人工单价,人工合价,工艺说明,材料成本,材料加价,材料利润,人工成本,人工加价,人工利润,单项利润人工单价    人工合价    工艺说明    材料成本    材料加价    材料利润    人工成本    人工加价    人工利润    单项利润

sqlSb.Append ("select rowNo,项目类别,项目名称,数量,单位,材料单价,材料合价,工艺说明")
sqlSb.Append (" from (")

sqlSb.Append ("select rowNo,项目类别&0 as 项目类别,项目名称,'t1' as 数量,'' as 单位,'' as 材料单价,'' as 材料合价,'' as 工艺说明 from [报价单记录$B1:AG]")
sqlSb.Append (" where 项目名称<>'' And cdbl(iif(数量 is null,0,数量))=0 ")
sqlSb.Append (" and 单号='" & strBillNo & "'")

sqlSb.Append ("union all select rowNo,项目类别&1,项目名称,数量,单位,材料单价,材料合价,工艺说明 from [报价单记录$B1:AG]")
sqlSb.Append (" where 项目名称<>'' And cdbl(iif(数量 is null,0,数量))>0")
sqlSb.Append (" and 单号='" & strBillNo & "'")

sqlSb.Append ("union all select max(rowNo),项目类别&2,'小计' as 项目名称,'t2' as 数量,'' as 单位,sum(iif(材料合价 is null,0,材料合价)) as 材料单价,'' as 材料合价,'' as 工艺说明 from [报价单记录$B1:AG]")
sqlSb.Append (" where 项目名称<>'' And cdbl(iif(数量 is null,0,数量))>0")
sqlSb.Append (" and 单号='" & strBillNo & "'")
sqlSb.Append (" group by 项目类别")

sqlSb.Append (" ) as tbz")

sqlSb.Append (" order by rowNo,项目类别")

strSql = sqlSb.ToString()

strResultShowRng = "A1:P?"
strWhereRng = "Format(日期,'yyyy-MM-dd')>=:B2:D|Format(日期,'yyyy-MM-dd')<=:C2:D|单号 like:B3:S|工程名称 like:E2:S|客户名称 like:E3:S|地址 like:G2:S|电话 like:G3:S"
strShowResultRowRng = ""
strShowResultRowMsg = ""
 

 
    Set wsDbQ = Worksheets("tempBjqdData")
     
'    arrCol = Split(strWhereRng, "|")
'
'
'    For Each strLineWhere In arrCol
'      arrWhere = Split(strLineWhere, ":")
'      strWhereVal = wsDbQ.Range(arrWhere(1)).Value
'
'      If Trim(strWhereVal) <> "" Then
'        strSqlSb = strSqlSb & " and " & arrWhere(0) & GetSqlVal(arrWhere(0), strWhereVal, arrWhere(2))
'      End If
'    Next strLineWhere
    
    Call SqlADODBQuery("tempBjqdData", strResultShowRng, strSql, strShowResultRowRng, strShowResultRowMsg)
    

 Exit Sub
er:
 MsgBox err.Description
 
End Sub
相关推荐
程序员卷卷狗23 分钟前
MySQL 高可用方案:主从 + MHA + ProxySQL + PXC 的实战应用与架构思考
数据库·mysql·架构
千千寰宇1 小时前
[数据库/数据结构] LSM-Tree :结构化的日志合并树——NewSQL数据库的基石
数据库
韩立学长2 小时前
基于Springboot的研学旅游服务系统5u416w14(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
isNotNullX2 小时前
怎么理解ETL增量抽取?
数据库·数据仓库·etl·企业数字化
谅望者2 小时前
数据分析笔记14:Python文件操作
大数据·数据库·笔记·python·数据挖掘·数据分析
l1t2 小时前
调用python函数的不同方法效率对比测试
开发语言·数据库·python·sql·duckdb
honortech2 小时前
MySQL 8 连接报错:Public Key Retrieval is not allowed
数据库·mysql
q***82912 小时前
MySQL--》如何通过选择合适的存储引擎提高查询效率?
数据库·mysql·adb
q***96582 小时前
MySql-9.1.0安装详细教程(保姆级)
数据库·mysql
2501_941111402 小时前
使用Scrapy框架构建分布式爬虫
jvm·数据库·python