结合excel vba的两个sql查询

结合excel vba的两个sql查询,sql,vba,excel,Sql,Vba,Excel,我在ExcelVBA中编写了一个代码,用于从SQL server中提取数据。“tbl.id”在两个表中有一个关系。在我的第三列中,我得到了“现金下降”,在第四列中,我需要另一个表中“tbl.id”的总标记。我在代码中尝试了这个总和/组,但我运气不佳。如果您查看一下我的excel vba代码,可能会了解更多: Sub GetingItFromSnd() Dim DBFullName, TableName As String Dim TargetRange As Range Dim Conn

我在ExcelVBA中编写了一个代码,用于从SQL server中提取数据。“tbl.id”在两个表中有一个关系。在我的第三列中,我得到了“现金下降”,在第四列中,我需要另一个表中“tbl.id”的总标记。我在代码中尝试了这个总和/组,但我运气不佳。如果您查看一下我的excel vba代码,可能会了解更多:

    Sub GetingItFromSnd()
Dim DBFullName, TableName As String
Dim TargetRange As Range
Dim Conn As ADODB.Connection, intColIndex As Integer
Dim cel As Range
Dim TD As Long
Dim qdate1 As Double
Dim qdate2 As Double
Dim LastRow As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
qdate1 = Range("trddate1").Value
qdate2 = Range("trddate2").Value
Sheets("TblData").Range("A2:J20000").ClearContents
Sheets("TblData").Select
Columns("A:J").AutoFilter
Range("A2").Select
Selection.Activate
Set TargetRange = Range("A2")
Set Conn = New ADODB.Connection
 Conn.Open "driver={SQL Server};" & _
"server=XXsql;database=Csn;"
    Set RecSet = New Recordset
RecSet.Open "SELECT   sht_f.tbl_id, sht_f.s_openclose, sht_f.s_cashdrop,  " & _
"sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop, SUM(hist_markers_per_tbl.TotalMarkers) ,  " & _
"replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(sht_f.tbl_id,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9',''), " & _
"sht_f.pt_name, sht_f.s_cashdrop/2.1, " & _
"(sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop)/2.1 FROM sht_f sht_f, Csn.dbo.hist_markers_per_tbl hist_markers_per_tbl " & _
"WHERE hist_markers_per_tbl.game_date>='" & qdate1 & "' AND hist_markers_per_tbl.game_date<='" & qdate2 & "' sht_f.game_date>='" & qdate1 & "' " & _
"And sht_f.game_date<='" & qdate2 & "' And sht_f.pt_id<>'" & 99 & "'GROUP BY hist_markers_per_tbl.tbl_id ORDER BY sht_f.pt_name", Conn, , , adCmdText
    TargetRange.CopyFromRecordset RecSet
RecSet.Close
Set RecSet = Nothing
Conn.Close
Set Conn = Nothing
LastRow = Sheets("TblData").Range("A" & Sheets("TblData").Rows.Count).End(xlUp).Row
Columns("A:J").AutoFilter
Sheets("WPU").Select
End Sub
Sub-GetingItFromSnd()
Dim DBFullName,TableName为字符串
变暗目标范围作为范围
Dim Conn作为ADODB.Connection,intColIndex作为Integer
暗淡的cel As范围
变暗TD为长
将qdate1调暗为双精度
将qdate2调暗为双精度
最后一排一样长
Application.ScreenUpdating=False
Application.DisplayAlerts=False
出错时继续下一步
qdate1=范围(“trddate1”)。值
qdate2=范围(“trddate2”)。值
表格(“TblData”)。范围(“A2:J20000”)。清晰目录
工作表(“TblData”)。选择
列(“A:J”)。自动筛选
范围(“A2”)。选择
选择。激活
设置目标范围=范围(“A2”)
Set Conn=新的ADODB.连接
连接打开“驱动程序={SQL Server};”和_
“服务器=XXsql;数据库=Csn;”
Set RecSet=新记录集
记录。打开“选择sht\U f.tbl\U id、sht\U f.s\U openclose、sht\U f.s\U cashdrop”和_
“sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop,总和(历史标记每tbl TotalMarkers),”_
替换(替换)(替换)(替换)(替换)(替换)(替换(替换)(替换(替换)(替换)(替换)(替换(替换)(第1页、第1页、第2页、第3页、第4页、第5页、第6页、第7页、第8页、第9页)和_
“sht_f.pt_name,sht_f.s_cashdrop/2.1,”_
“(sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop)/2.1来自sht_sht_,Csn.dbo.hist_markers_per_tbl hist_markers_per_tbl”&_
“其中历史标记符每游戏日期>=”&qdate1&“;历史标记符每游戏日期=”&qdate1&“&”_

“和sht_f.game_date这很痛苦,但我设法找到了我问题的答案。因此我想与大家分享。实际上,我发现我在查询中寻找的是“子函数”:)这是我代码的最终版本:

    Sub GetingItFromSnd()
Dim DBFullName, TableName As String
Dim TargetRange As Range
Dim Conn As ADODB.Connection, intColIndex As Integer
Dim cel As Range
Dim TD As Long
Dim qdate1 As Double
Dim qdate2 As Double
Dim LastRow As Long
Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
qdate1 = Range("trddate1").Value
qdate2 = Range("trddate2").Value
Sheets("TblData").Range("A2:J20000").ClearContents
Sheets("TblData").Select
Columns("A:J").AutoFilter
Range("A2").Select
Selection.Activate
Set TargetRange = Range("A2")
Set Conn = New ADODB.Connection
Conn.Open "driver={SQL Server};" & _
"server=XXsql;database=Csn;"
Set RecSet = New Recordset
RecSet.Open "SELECT   sht_f.tbl_id, sht_f.s_openclose, sht_f.s_cashdrop,  " & _
"sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop, " & _
"replace(replace(replace(replace(replace(replace(replace(replace(replace(replace(sht_f.tbl_id,'0',''),'1',''),'2',''),'3',''),'4',''),'5',''),'6',''),'7',''),'8',''),'9',''), " & _
"sht_f.pt_name, sht_f.s_cashdrop/2.1, " & _
"(sht_f.s_current-sht_f.s_total+sht_f.s_cashdrop)/2.1," & _
"SUM(hist_markers_per_tbl.TotalMarkers) " & _
"FROM hist_markers_per_tbl hist_markers_per_tbl" & _
"WHERE sht_f.table_id= hist_markers_per_tbl.tbl_id AND hist_markers_per_tbl.game_date>='" & qdate1 & "' AND hist_markers_per_tbl.game_date<='" & qdate2 & "' GROUP BY hist_markers_per_tbl.tbl_id) " & _
"FROM sht_f sht_f, Csn.dbo.hist_markers_per_tbl hist_markers_per_tbl " & _
"WHERE hist_markers_per_tbl.game_date>='" & qdate1 & "' AND hist_markers_per_tbl.game_date<='" & qdate2 & "' sht_f.game_date>='" & qdate1 & "' " & _
"And sht_f.game_date<='" & qdate2 & "' And sht_f.pt_id<>'" & 99 & "'GROUP BY hist_markers_per_tbl.tbl_id ORDER BY sht_f.pt_name", Conn, , , adCmdText
TargetRange.CopyFromRecordset RecSet
RecSet.Close
Set RecSet = Nothing
Conn.Close
Set Conn = Nothing
LastRow = Sheets("TblData").Range("A" & Sheets("TblData").Rows.Count).End(xlUp).Row
Columns("A:J").AutoFilter
Sheets("WPU").Select
End Sub
Sub-GetingItFromSnd()
Dim DBFullName,TableName为字符串
变暗目标范围作为范围
Dim Conn作为ADODB.Connection,intColIndex作为Integer
暗淡的cel As范围
变暗TD为长
将qdate1调暗为双精度
将qdate2调暗为双精度
最后一排一样长
Application.ScreenUpdating=False
Application.DisplayAlerts=False
出错时继续下一步
qdate1=范围(“trddate1”)。值
qdate2=范围(“trddate2”)。值
表格(“TblData”)。范围(“A2:J20000”)。清晰目录
工作表(“TblData”)。选择
列(“A:J”)。自动筛选
范围(“A2”)。选择
选择。激活
设置目标范围=范围(“A2”)
Set Conn=新的ADODB.连接
Conn.Open“驱动程序={SQL Server};" & _
“服务器=XXsql;数据库=Csn;"
Set RecSet=新记录集
记录。打开“选择sht\U f.tbl\U id、sht\U f.s\U openclose、sht\U f.s\U cashdrop”和_
“短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期短期_
替换(替换)(替换)(替换)(替换)(替换)(替换(替换)(替换(替换)(替换)(替换)(替换(替换)(第1页、第1页、第2页、第3页、第4页、第5页、第6页、第7页、第8页、第9页)和_
“sht_f.pt_name,sht_f.s_cashdrop/2.1,”_
“(短期储蓄存款-短期储蓄存款总额+短期储蓄存款存款)/2.1,”_
“总和(历史标记物/总标记物)”&_
“从历史标记到历史标记”_
其中,表id=hist_markers_per_tbl.tbl_id和hist_markers_per_tbl.game_date>='&qdate1&''和hist_markers_per_tbl.game_date='&qdate1&''和hist_markers_per_tbl.game_date='&qdate1&'&_
“还有比赛日期