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
相关推荐
2501_9142459339 分钟前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
maqr_1102 小时前
MySQL数据库迁移到云端如何保障安全_数据加密与SSL连接配置
jvm·数据库·python
u0109147602 小时前
MySQL如何限制触发器递归调用的深度_防止触发器死循环方法
jvm·数据库·python
weixin_381288182 小时前
MySQL中如何使用HEX函数转换十六进制_MySQL进制转换函数
jvm·数据库·python
Deitymoon2 小时前
嵌入式数据库——SQLite基础
数据库·sqlite
YMatrix 官方技术社区2 小时前
美国·硅谷|YMatrix 即将亮相 Postgres Conference 2026,前瞻 AI 时代的数据基座
数据库·数据仓库·postgresql·时序数据库·ymatrix
bKYP953cL2 小时前
构建自己的AI编程助手:基于RAG的上下文感知实现方案
数据库·人工智能·ai编程
Bert.Cai2 小时前
MySQL DML简介
数据库·mysql
maqr_1103 小时前
HTML怎么生成订单预览_HTML只读订单信息结构【操作】
jvm·数据库·python
2301_803875613 小时前
如何通过phpMyAdmin给WordPress所有用户发送全站通知_系统表插入
jvm·数据库·python