พยายามสร้างcrosstabแล้วยังไม่ได้ดั่งที่หวังครับ จะนำเอาไปใช้บนกูเกิ้ลฟอร์มต่อ


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

14 ธ.ค. 64 , 17:56:51
อ่าน 667 ครั้ง

SakDa

มีเลขที่สูงสุดอยู่ 22 เลขที่เลยคิดว่าจะขมวดเลขที่ 1 เอาของทุกระดับชั้น ทุกห้อง มาอยู่แถวเดียวกัน สร้างครอสแทปคิวรีหลายรอบแล้วไม่ได้สักที จึงเปลี่ยนมาเป็นสร้างตารางเก็บข้อมูลไว้แทนครับ เพื่อให้ง่ายต่อการสร้างครอสแทปต่อไป อยากให้ครอสแทปมีหน้าตาแบบนี้
เลขที่ ชื่อ
1      ก ข ค ง
2      a b c d
3      aa bb cc dd
...
22    ca cb cc cd
คิวรี่อันสุดท้ายที่พยายามก่อนมาตั้งคำถามครับ
TRANSFORM Count(sortNoEachClass.room) AS CountOfroom
SELECT sortNoEachClass.roomNo, Count(sortNoEachClass.room) AS [Total Of room]
FROM sortNoEachClass
GROUP BY sortNoEachClass.roomNo
PIVOT sortNoEachClass.FirstOffname;

อันนี้จากตารางปัจจุบันนำไปคัดลอกวางในเอ็กเซลครับ ทำจนเสร็จแต่จะมีปัญหาตอนเด็กมาเพิ่ม หรือ เด็กลาออก เลยอยากทำบนแอคเซสแทน

 

15 ธ.ค. 64 , 08:51:54
ตอบกลับ #1

PNR

ใช้ Loop ในการต่อประโยค โดยแสดงฟิลล์ชื่อ ตามเลขที่ๆมีอยู่ในห้องนั้น

คล้ายๆ กับโพสนี้นะครับ
https://www.thai-access.com/index.php?topic=1090.msg4873#msg4873
« แก้ไขครั้งสุดท้าย: 15 ธ.ค. 64 , 09:16:42 โดย PNR »
Time to stop for me  :dizzy:
 
โพสต์นี้ได้รับคำขอบคุณจาก: SakDa

16 ธ.ค. 64 , 14:46:09
ตอบกลับ #2

PNR



โค๊ดจะประมาณนี้นะครับ
โค๊ด: [Select]
On Error Resume Next
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim rstOut As DAO.Recordset
Dim strStudentNumber, StrStudentName As String

Set db = CurrentDb()
Set rst = db.OpenRecordset("sortNoEachClass", dbOpenDynaset)

If Not rst.BOF And Not rst.EOF Then
  rst.MoveFirst
  strStudentNumber = rst!roomNo
  'rst.MoveNext
   
  Do Until rst.EOF
    If strStudentNumber = rst!roomNo Then
      StrStudentName = Trim(StrStudentName & "  " & rst!FirstOffname)
    Else
    Set db = CurrentDb()
    Set rstOut = db.OpenRecordset("TblResult", dbOpenDynaset)
    rstOut.AddNew
    rstOut!StudentNum = strStudentNumber
    rstOut!StudentName = StrStudentName
    rstOut.Update
       
       strStudentNumber = rst!roomNo
       StrStudentName = rst!FirstOffname
     
        rstOut.Close
        db.Close
    End If
   
    rst.MoveNext
  Loop
    Set db = CurrentDb()
    Set rstOut = db.OpenRecordset("TblResult", dbOpenDynaset)
    rstOut.AddNew
    rstOut!StudentNum = strStudentNumber
    rstOut!StudentName = StrStudentName
    rstOut.Update
       
       strStudentNumber = rst!roomNo
       StrStudentName = rst!FirstOffname
     
    rstOut.Close
    db.Close
   MsgBox "ออกข้อมูลเรียบร้อย", vbInformation, "แจ้งเตือน"
End If
Set rst = Nothing
Set db = Nothing
Set rstOut = Nothing
« แก้ไขครั้งสุดท้าย: 16 ธ.ค. 64 , 15:47:07 โดย PNR »
Time to stop for me  :dizzy:
 


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