CrossTab Query Sort



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

13 ก.ย. 61 , 21:10:32
อ่าน 614 ครั้ง

mongkong

  • สมาชิกไท.Access
  • กระทู้: 11

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

CrossTab Query Sort
« เมื่อ: 13 ก.ย. 61 , 21:10:32 »
เรียนถาม อ. และ ผู้ชำนาญ Access ทุกท่าน ครับ
ผมมีตารางดังนี้

student :
id(รหัสนักเรียน) name(ชื่อ-สกุล) room(ห้อง) num(เลขที่)

subject :
code(รหัสวิชา) title(ชื่อวิชา) type(1=พื้นฐาน 2=เพิ่มเติม) credit(หน่วยกิต)

register :
id(รหัสนักเรียน) code(รหัสวิชา) mark(คะแนน) grade(เกรด)

[student.id] relations [register.id]
[subject.code] relations [register.code]

ผมสร้าง
CrossTab Query SQL :

TRANSFORM FIRST(register.grade) as FIRSTofgrade
SELECT student.id, student.name, student.room, student.num
FROM subject INNER JOIN (student INNER JOIN register ON student.id = register.id)
ON subject.code = register.code
GROUP BY student.id, student.name, student.room, student.num
ORDER BY student.room, student.num, register.code
PIVOT register.code;

ถ้าทำอย่างนี้ จะได้ตารางไข้ว โดยที่จะเรียง Row Heading ตาม room, num (Ascending)
Column Heading ก็จะเรียงได้จาก Ascending จากน้อยไปมาก

คำถาม ผมต้องการที่จะให้
Column Heading จัดเรียงตาม subject.type ได้ไหมครับ ผมลองดูแล้วเกิด Error ครับ
1. ทำอย่างไรครับใน CrossTab Query ให้ Column Heading เรียงตาม วิชาพื้นฐาน แล้วไป วิชาเพิ่มเติม
2. ถ้าทำใน VBA ได้ไหม ยังไงครับ
ขอบพระคุณครับ...
« แก้ไขครั้งสุดท้าย: 13 ก.ย. 61 , 21:25:07 โดย mongkong »

 

14 ก.ย. 61 , 15:41:35
ตอบกลับ #1

Un

: CrossTab Query Sort
« ตอบกลับ #1 เมื่อ: 14 ก.ย. 61 , 15:41:35 »


ไม่รู้ว่าเข้าใจถูกป่าวนะครับ แล้วก็ไม่รู้มีวิธีอื่นที่ดีกว่านี้รึป่าว
จากรูป ให้เอา Row Heading ที่ต้องการ เอามาเรียงเองเลย
จากรูป ผมเรียงจากเดือน 10 ไปเรื่อยๆ แต่ถ้า Row Heading
ของคุณเป็น Text ให้ใส่ Duble Qote ด้วย เช่น "ตุลาคม","พฤศจิกายน","ธันวาคม"
ค่าที่นำมาใส่นี้ ต้องเป็นค่าที่ได้จากการคำนวนของฟิลด์ที่นำมาเป็น คอลัม

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

14 ก.ย. 61 , 20:18:30
ตอบกลับ #2

nonc31

: CrossTab Query Sort
« ตอบกลับ #2 เมื่อ: 14 ก.ย. 61 , 20:18:30 »
TRANSFORM First(register.grade) AS FIRSTofgrade
SELECT student.id, student.name, student.room, student.num
FROM subject INNER JOIN (student INNER JOIN register ON student.id = register.id) ON subject.code = register.code
GROUP BY student.id, student.name, student.room, student.num
ORDER BY student.room, student.num, [type] & "-" & [register].
โค๊ด: [Select]
[/color]
PIVOT [type] & "-" & [register].[code];
 :ouch: :ouch: :ouch:
« แก้ไขครั้งสุดท้าย: 15 ก.ย. 61 , 13:32:47 โดย nonc31 »

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

15 ก.ย. 61 , 18:29:33
ตอบกลับ #3

mongkong

  • สมาชิกไท.Access
  • กระทู้: 11

  • ขอบคุณ ไท.Access

    • ดูรายละเอียด

: CrossTab Query Sort
« ตอบกลับ #3 เมื่อ: 15 ก.ย. 61 , 18:29:33 »
ขอบพระคุณ คุณ Un และ คุณ nonc31 มากนะครับ
ทำได้แล้ว ได้ความรู้ใหม่ว่าทำอย่างนี้ได้ด้วย ง่ายต่อการนำไปสร้าง report แล้วครับ

มีวิธีเขียน VBA สร้าง CrossTab Report เลยที่เดียวไหมครับ (ไม่ต้องทำ CrossTab Query ก่อน)
แบบ loop วิชาที่นักเรียนลงทะเบียน ใส่ตัวแปร
แล้วเอาตัวแปรที่ได้ไปใส่ใน Unbound ที่เรากำหนดไว้ใน report
ขอบคุณมากๆๆๆ นะครับ

 


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