สร้าง Queries ผลรวมที่แสดงเลขที่เอกสารด้วยได้ไหม



0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

31 มี.ค. 64 , 11:44:57
อ่าน 155 ครั้ง

nawahovvp

สอบถาม ผมจะสร้าง สร้าง Queries ผลรวมที่แสดงเลขที่เอกสารด้วยได้ไหม ตามรูป ตารางข้อมูล

 

31 มี.ค. 64 , 13:06:03
ตอบกลับ #1

PNR

ลองดูตัวอย่างนี้นะครับ

สร้าง Module ใส่โค๊ด
โค๊ด: [Select]
Public Function ConcatRelated(strField As String, _
    strTable As String, _
    Optional strWhere As String, _
    Optional strOrderBy As String, _
    Optional strSeparator = ", ") As Variant
On Error GoTo Err_Handler
 
    Dim rs As DAO.Recordset
    Dim rsMV As DAO.Recordset
    Dim strSql As String
    Dim strOut As String
    Dim lngLen As Long
    Dim bIsMultiValue As Boolean
   
   
    ConcatRelated = Null
   
 
    strSql = "SELECT " & strField & " FROM " & strTable
    If strWhere <> vbNullString Then
        strSql = strSql & " WHERE " & strWhere
    End If
    If strOrderBy <> vbNullString Then
        strSql = strSql & " ORDER BY " & strOrderBy
    End If
    Set rs = DBEngine(0)(0).OpenRecordset(strSql, dbOpenDynaset)
   
    bIsMultiValue = (rs(0).Type > 100)
   

    Do While Not rs.EOF
        If bIsMultiValue Then
         
            Set rsMV = rs(0).Value
            Do While Not rsMV.EOF
                If Not IsNull(rsMV(0)) Then
                    strOut = strOut & rsMV(0) & strSeparator
                End If
                rsMV.MoveNext
            Loop
            Set rsMV = Nothing
        ElseIf Not IsNull(rs(0)) Then
            strOut = strOut & rs(0) & strSeparator
        End If
        rs.MoveNext
    Loop
    rs.Close
   
 
    lngLen = Len(strOut) - Len(strSeparator)
    If lngLen > 0 Then
        ConcatRelated = Left(strOut, lngLen)
    End If

Exit_Handler:

    Set rsMV = Nothing
    Set rs = Nothing
    Exit Function

Err_Handler:
    MsgBox "Error " & Err.Number & ": " & Err.Description, vbExclamation, "ConcatRelated()"
    Resume Exit_Handler
End Function


สร้างคิวรี่แรกเพื่อสร้าง เลขที่เอกสาร(Qty)  ตั้งชื่อ Q1
โค๊ด: [Select]
SELECT t1.IDProduct, t1.Qty, [เลขที่เอกสาร] & "(" & [qty] & ")" AS เลขที่
FROM t1;

สร้างคิวรี่ที่สอง ใส่โค๊ดเพื่อแสดงผลโดยใช้ฟังชั้นจากโค๊ดด้านบน
โค๊ด: [Select]
SELECT Q1.IDProduct, Sum(Q1.Qty) AS ผลรวม, ConcatRelated("เลขที่","Q1","IDProduct = '" & [IDProduct] & "'") AS เลขที่เอกสาร
FROM Q1
GROUP BY Q1.IDProduct, ConcatRelated("เลขที่","Q1","IDProduct = '" & [IDProduct] & "'");

เครดิต allenbrowne จากการนำโค๊ดมาปรับใช้กับเคสนี้ครับ
« แก้ไขครั้งสุดท้าย: 31 มี.ค. 64 , 14:57:09 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, nawahovvp

31 มี.ค. 64 , 14:02:54
ตอบกลับ #2

nawahovvp

ขอบคุณมากครับอาจารย์
ผมลอง Run แล้วมันติดว่า การกระทำหรือเหตุการณ์ถูกบล็อกโดยปิดโหมดการใช้งาน


 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin

31 มี.ค. 64 , 14:09:32
ตอบกลับ #3

PNR

ไปตั้งค่า Trust Center ครับ
https://www.thai-access.com/index.php?topic=375.0
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: pirin, nawahovvp

31 มี.ค. 64 , 14:26:09
ตอบกลับ #4

nawahovvp

ขอบคุณมากครับ ส่วนตัวผมนับถือผู้สอนผู้ชี้แนะ เป็น อาจารย์หมดครับ แต่ยังไงขอบคุณมากครับ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย