สอบถามการOpen Report ให้แสดงข้อมูลจากการใช้ตัวกรองใน column ของ Data sheet ครับ



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

20 มี.ค. 61 , 11:11:45
อ่าน 852 ครั้ง

prajak

รบกวนสอบถามครับ หากผมต้องการกดปุ่ม PRINT แล้วให้มันเปิดหน้ารายงานขึ้นมา โดยจะแสดงข้อมูลตามที่เราใช้ตัวกรองในแต่ละ Column พูดง่ายๆคือข้อมูลแสดงบนฟอร์มแบบไหน บนหน้ารายงานก็เป็นแบบนั้นอะครับ (ผมจะมี report ที่สร้างไว้แล้วชื่อ PYN ) ไม่ทราบต้องใช้คำสั่งอะไรครับ
เท่าที่หาข้อมูลดูจะมีคำสั่ง DoCmd.OpenReport strReportname, acViewPreview,"[ID] = & Me.ID"
แต่มันจะแสดงแค่ record เดียวตามที่ตำแหน่งเม๊าส์เราอยู่ครับ

 

20 มี.ค. 61 , 12:00:20
ตอบกลับ #1

OddyWriter

ใช้คิวรีสร้าง Datasheet แล้วใช้คิวรีอันนี้สร้างรีพอร์ตครับ

ถ้าจะบอกว่าด้วยเหตุผลอะไรก็แล้วแต่ ไม่สามารถใช้คิวรีได้ ก็ต้องเขียนโค้ดที่อ้างถึงตัวกรองใน Datasheet

ประมาณนี้ครับ
SELECT ชื่อตาราง.* FROM ชื่อตาราง LEFT JOIN ชื่อฟิลด์ที่กรอง AS Lookup_ชื่อฟิลด์ที่กรอง ON ชื่อฟิลด์ที่กรอง = Lookup_ชื่อฟิลด์ที่กรอง.ชื่อฟิลด์ที่กรอง WHERE (([Lookup_ชื่อฟิลด์ที่กรอง].[ข้อมูลที่แสดงในฟิลด์ที่กรอง] In ("กรอง1","กรอง2")));

ใช้คิวรีง่ายกว่าครับ ช่วงนี้ไม่ถนัดเรื่องเครียด
« แก้ไขครั้งสุดท้าย: 20 มี.ค. 61 , 12:06:21 โดย OddyWriter »
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

20 มี.ค. 61 , 12:45:31
ตอบกลับ #2

prajak

ใช้คิวรีสร้าง Datasheet แล้วใช้คิวรีอันนี้สร้างรีพอร์ตครับ

ถ้าจะบอกว่าด้วยเหตุผลอะไรก็แล้วแต่ ไม่สามารถใช้คิวรีได้ ก็ต้องเขียนโค้ดที่อ้างถึงตัวกรองใน Datasheet

ประมาณนี้ครับ
SELECT ชื่อตาราง.* FROM ชื่อตาราง LEFT JOIN ชื่อฟิลด์ที่กรอง AS Lookup_ชื่อฟิลด์ที่กรอง ON ชื่อฟิลด์ที่กรอง = Lookup_ชื่อฟิลด์ที่กรอง.ชื่อฟิลด์ที่กรอง WHERE (([Lookup_ชื่อฟิลด์ที่กรอง].[ข้อมูลที่แสดงในฟิลด์ที่กรอง] In ("กรอง1","กรอง2")));

ใช้คิวรีง่ายกว่าครับ ช่วงนี้ไม่ถนัดเรื่องเครียด
ใช่ครับ ผมใช้คิวรีสร้าง Datasheet แล้วใช้คิวรีอันนี้สร้างรีพอร์ตครับ แต่เราจะopen reportยังไงถึงจะให้ข้อมูลที่ออกreportเหมือนกันกับขอมูลที่filterในdatasheet ครับ งงครับ พอดีเพิ่งหัดเขียนอะครับ

 

20 มี.ค. 61 , 13:15:53
ตอบกลับ #3

OddyWriter

ถ้าบอกว่าสร้างจากคิวรีตั้งแต่แรกก็จบแล้วครับ
ดังนั้นโปรดแจ้งข้อมูลให้ละเอียดตั้งแต่แรก อ้างคำพูดอาจารย์สันติสุข ๓(_ _)๓

ในเมื่อใช้ ในเมื่อใช้คิวรี
1. ก็ให้คิวรีเป็นตัวกรองข้อมูลแทน อย่าใช้ฟิลเตอร์ใน Datasheet
2. สร้างรีพอร์ตจากคิวรีเดียวกับ Datasheet
3. ที่ปุ่มก็ใส่คำสั่ง docmd.openreport

แค่นี้ครับ อาจต้องใช้คำสั่ง docmd.requery ในบางจุดเพื่อให้คิวรีกรองข้อมูลแล้วแสดงใน Datasheet

กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

20 มี.ค. 61 , 14:50:19
ตอบกลับ #4

prajak

ถ้าบอกว่าสร้างจากคิวรีตั้งแต่แรกก็จบแล้วครับ
ดังนั้นโปรดแจ้งข้อมูลให้ละเอียดตั้งแต่แรก อ้างคำพูดอาจารย์สันติสุข ๓(_ _)๓

ในเมื่อใช้ ในเมื่อใช้คิวรี
1. ก็ให้คิวรีเป็นตัวกรองข้อมูลแทน อย่าใช้ฟิลเตอร์ใน Datasheet
2. สร้างรีพอร์ตจากคิวรีเดียวกับ Datasheet
3. ที่ปุ่มก็ใส่คำสั่ง docmd.openreport

แค่นี้ครับ อาจต้องใช้คำสั่ง docmd.requery ในบางจุดเพื่อให้คิวรีกรองข้อมูลแล้วแสดงใน Datasheet
ขอบคุณครับอาจารย์ แต่ผมก็ยังไม่เข้าใจอยู่ดี จะว่าโง่ก็ได้ครับ ยกตัวอย่างถ้าผมใช้ตัวกรองใน data sheet ผมสามารถกรองได้หลายเงื่อนไขเลย เช่น จะเลือก print เฉพาะลูกค้า BOLO และเลือกบาง Style และเลือกบาง shipment ใน Query มันจะยังไงอะครับ เป็นไปได้พอแนะนำตัวอย่างเพื่อให้เห็นภาพได้หรือเปล่าครับ ขอบคุณครับ


 

20 มี.ค. 61 , 15:00:25
ตอบกลับ #5

OddyWriter

คือถ้าจะใช้ Filter ของ Datasheet ในการกรองก็ต้องเขียน Code แล้วใส่ SQL ตามที่บอกไป ยิ่งกรองเยอะ SQL ยิ่งยาว

ถ้าจะทำการกรองเองก็ใส่ Combo Box เข้าไป จะให้กรองกี่อันก็ใส่เข้าไปได้ กรองเสร็จก็สั่ง Requery
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 

20 มี.ค. 61 , 18:08:57
ตอบกลับ #6

prajak

ใช้คิวรีสร้าง Datasheet แล้วใช้คิวรีอันนี้สร้างรีพอร์ตครับ

ถ้าจะบอกว่าด้วยเหตุผลอะไรก็แล้วแต่ ไม่สามารถใช้คิวรีได้ ก็ต้องเขียนโค้ดที่อ้างถึงตัวกรองใน Datasheet

ประมาณนี้ครับ
SELECT ชื่อตาราง.* FROM ชื่อตาราง LEFT JOIN ชื่อฟิลด์ที่กรอง AS Lookup_ชื่อฟิลด์ที่กรอง ON ชื่อฟิลด์ที่กรอง = Lookup_ชื่อฟิลด์ที่กรอง.ชื่อฟิลด์ที่กรอง WHERE (([Lookup_ชื่อฟิลด์ที่กรอง].[ข้อมูลที่แสดงในฟิลด์ที่กรอง] In ("กรอง1","กรอง2")));

ใช้คิวรีง่ายกว่าครับ ช่วงนี้ไม่ถนัดเรื่องเครียด
[ข้อมูลที่แสดงในฟิวด์ที่กรอง] และกรอง1 กรอง2 คืออะไรครับ รบกวนอธิบายเพิ่มเติมหรือพอจะมีตัวอย่างมั้ยครับ

 

20 มี.ค. 61 , 20:15:58
ตอบกลับ #7

OddyWriter

กรอง1 และ กรอง2 ก็คือค่าที่กำหนดให้ Filter แสดงผลครับ

เช่นฟิลดชื่อ FirstName มีชื่อคนมากมาย ต้องการกรองเฉพาะคนชื่อ สมชายกับสมหญิง
กรอง1 คือสมชาย
กรอง2 คือสมหญิง

อย่าใช้วิธีนี้เลยครับ ผิดก็ง่าย ทำก็ยาก ใช้คิวรีอย่างที่ผมว่าเถอะ ง่ายกว่าเยอะ

อันนี้คือไฟล์ตัวอย่างที่ใช้ ComboBox อย่างที่ผมว่าไว้ครับ

https://www.dropbox.com/s/beu9tczu8mczbpq/Select2Criteria.accdb?dl=0 link
« แก้ไขครั้งสุดท้าย: 20 มี.ค. 61 , 20:23:23 โดย OddyWriter »
กินร้อน ช้อนตัวเอง จานใครจานมัน ออกนอกบ้านใส่หน้ากากอนามัยหรือหน้ากากผ้า
 


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