379
ห้อง MS Access / : สอบถามQueryให้แสดงวันที่ทุกวันของเดือน
« เมื่อ: 08 มิ.ย. 61 , 17:12:11 »ขอบคุณค้า อันแรกทำได้แล้วค่ะ เหลือแสดงวันที่ค่ะทำคิวรี่แรกก่อนแบบนี้ครับโค๊ด: [Select]SELECT format(StockDate,"DD-MMM"), Takein, TakeOut, Balance
FROM StockBefore
UNION SELECT format(StockDate,"DD-MMM"), Takein, TakeOut, '' as Balance
FROM StockCard;
อันตอนต่อไป กำหนด วันที่ โดยรันวันที่ลงมา ผมใช้ การสร้างตาราง ขึ่นมามี 365 วัน ตัวอย่างคำสั่ง สร้างตารางที่จะเก็บไว้ชื่อ TempDate365 ตั้งชื่อ Field ว่า Stockdate
บน Module
โค๊ด: [Select]
Option Compare Database
Public Sub MakeDate365(Optional ByVal pYear As Integer, _
Optional ByVal pTable As String = "TempDate365", _
Optional ByVal pField As String = "Stockdate")
Dim db As DAO.Database
Dim dte As Date
Dim dteLast As Date
Dim intYear As Integer
Dim rs As DAO.Recordset
Dim strMsg As String
On Error GoTo ErrorHandler
intYear = IIf(pYear = 0, Year(Date), pYear)
dte = DateSerial(intYear, 1, 1)
dteLast = DateSerial(intYear, 12, 31)
Set db = CurrentDb
Set rs = db.OpenRecordset(pTable, dbOpenTable, dbAppendOnly)
Do While dte <= dteLast
rs.AddNew
rs.Fields(pField).Value = dte
rs.Update
dte = dte + 1
Loop
rs.Close
ExitHere:
On Error GoTo 0
Set rs = Nothing
Set db = Nothing
Exit Sub
ErrorHandler:
strMsg = "Error " & Err.Number & " (" & Err.Description _
& ") in MakeDate365"
MsgBox strMsg
GoTo ExitHere
End Sub
สร้างคิวรี่ใหม่ ชื่อ StockQuery2
กำหนดค่าดังนี้
โค๊ด: [Select]
SELECT TempDate365.StockDate, IIf(IsNull([Takein]),0,[Takein]) AS Take_in, IIf(IsNull([Takeout]),0,[Takeout]) AS Take_out, (select [BeforeQty] from [StockBeforeQuery] ) AS Before_Qty
FROM StockQuery RIGHT JOIN TempDate365 ON StockQuery.StockDate = TempDate365.StockDate
WHERE (((TempDate365.StockDate) Between [forms]![Main]![StockBefore] And [forms]![Main]![EndDate]));
ที่คิวรี่ตัวต่อไป ชื่อ StockQuery3
โค๊ด: [Select]
SELECT T1.[Before_Qty]+(select nz(sum(T2.Take_in),0) from StockQuery2 as T2 where T2.StockDate <= T1.StockDate)-
(select nz(sum(T2.Take_out),0) from StockQuery2 as T2 where T2.StockDate <= T1.StockDate) AS TotalQty, *
FROM StockQuery2 AS T1
ORDER BY T1.StockDate;
ผลลัพท์ที่ได้
ตัวอย่างด้านล่าง