2017-04-26 212 views
0

我對VB6中的MS Access SQL相對較新,並且正在尋找一個答案,我剛剛在這裏看到一個幾乎符合我需要的問題(在MSSQL中每天總計按類別計算) )。但我仍然無法找到如何在我的代碼中實現它,我很確定我錯過了一些命令或命令。從MSSQL中的多個表中總計每日總計加總計總計

這是我得到:

Qry = "SELECT pv_S.Id, Agenda.Company, pv_S.Fecha, Products.Descripción, " _ 
     & "pv_S.Cant, pv_S.PV, pv_S.Pagado, pv_S.User " _ 
     & "FROM Products " _ 
     & "INNER JOIN (Agenda INNER JOIN pv_S " _ 
     & "ON Agenda.CustomerID = pv_S.CustomerID) " _ 
     & "ON Products.ProdId = pv_S.ProdId " _ 
     & "WHERE pv_S.Fecha BETWEEN #" & Format(FromDate, "MM/DD/YYYY") & "# " _ 
     & "AND #" & Format(ToDate, "MM/DD/YYYY") & "# " _ 
     & "AND pv_S.User = '" & cboCombos(2).Text & "' " _ 
     & "ORDER BY Fecha" 

這就是我需要:

Report From: 1/1/17 To: 3/1/17 


    FECHA USER Cant 
    1/1/17 Sam 50 
    1/1/17 Sam 60 
    1/1/17 Sam 20 
      Tot 130 

    2/1/17 Sam 80 
    2/1/17 Sam 80 
      Tot 160 

    3/1/17 Sam 50 
    3/1/17 Sam 10 
    3/1/17 Sam 20 
    3/1/17 Sam 70 
      Tot 150 

      GTot 440 

我在做什麼是可怕的,通過數據庫循環是瘋了。我知道應該有一個簡單的方法。

回答

0

你說「按類別每日總計」。什麼類別?您的輸出示例顯示來自pv_S的3個字段,但沒有來自Agenda和Products的字段。

如果您想要查看所有3個表格以及摘要計算的詳細信息,請構建Access報告。 RecordSource將是原始數據記錄的查詢。使用報告分組和排序設計功能。在任何領域添加小組部分是您的'類別'。將文本框放在組頁腳中,並用表達式報告頁腳:=Sum([Cant])

將日期和用戶過濾條件應用於報告。我從不使用動態參數化查詢。我更願意使用VBA構建過濾條件,並在打開時應用於報告。評論Allen Browne Filter

如果您不能使用Access報告,您對報告有什麼用處?爲什麼在Access後面使用VB6而不是VBA?

實現您顯示的輸出安排的僅查詢方法可能涉及構建兩個聚合查詢,然後將這些查詢合併到原始數據記錄集中。

+0

嗨,謝謝你的時間。 '每日總額'是對另一個答案的參考,因爲空間的原因,我沒有包括議程和產品數據樣本。我使用訪問數據庫,但我的應用程序完全在VB6中,所以我的客戶只使用應用程序GUI。我不知道是否可以在VB6中使用該VBA ...您提到的UNION可能是我需要的,我將檢查您提到的Allen Browne Filter。非常感謝你。 –

+0

VBA是與MS Office應用程序一起打包的編程語言。它在語法和詞彙上與VB6類似,所以不用,它不在'VB6內'使用。那麼你是否在VB6中使用CrystalReports或其他報告工具?我期望你可以在Access中創建報表對象,VB6可以操縱它們。但是對於一個多用戶數據庫來說,這需要將報表放在分割前端,而不是數據表文件中。 – June7

+0

我剛剛完成了一些研究,VBA不是一個選項,Allen Browne過濾器是用於訪問的,所以沒有;關於CR ...我總是通過代碼完成所有的報告,並且我的所有訪問SQL查詢都使用ADO/ADOX在vb6中完全編碼。但是這個讓我... –