เลือกเฉพาะระเบียนที่ ติ๊ก check Box ในฟอร์ม มาแสดงรายงาน



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

24 ก.ค. 63 , 11:45:46
อ่าน 452 ครั้ง

kn208598

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

  • ขอบคุณ ไท.Access

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

ผมสร้างคิวรี่ดึงเฉพาะรายที่ยังไม่ได้เลือก(จาก field ในตาราง ที่มีชนิดเป็นYes/No) แล้วมาแสดงเป็นฟอร์มชื่อ AA เพื่อต้องการให้ผู้ใช้เลือกระเบียนที่ต้องการ แล้วผมจะแสดงรายงานชื่อ Report1
ที่แสดงเฉพาะรายที่ผู้ใช้เลือกจากฟอร์ม...ครับขอคำแนะนำว่าจะต้องทำอย่างไรครับ..ขอบคุณครับ

 

24 ก.ค. 63 , 11:52:16
ตอบกลับ #1

PNR

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

25 ก.ค. 63 , 07:20:31
ตอบกลับ #2

kn208598

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

  • ขอบคุณ ไท.Access

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

ครับ ผมดูตัวอย่างแล้ว คือในตัวอย่าง ตรง MainFrm แสดงทุกระเบียนจากตาราง  ซึ่ง ถ้าผมต้องการให้ MainFrm แสดงเฉพาะรายที่ยังไม่ได้ติ๊ก แล้วเมื่อเราติ๊กเลือกรายจาก MainFrm แล้ว กดปุ่มรายงาน ก็ให้ออกรายงานเฉพาะรายที่ติ๊กเลือกจาก MainFrm ไม่ทราบว่าต้องทำอย่างไร ขอสอบถามน่ะครับ

 

29 ก.ค. 63 , 08:14:24
ตอบกลับ #3

PNR

อ้างถึง
ตรง MainFrm แสดงทุกระเบียนจากตาราง  ซึ่ง ถ้าผมต้องการให้ MainFrm แสดงเฉพาะรายที่ยังไม่ได้ติ๊ก

ตรงกำหนด Criteria ในคิวรี่ให้กำหนดตรง Field CheckBox เป็น Not True ครับคือให้แสดงเฉพาะค่าที่เป็น False คือยังไม่ได้ติ๊กนั้นเอง

อ้างถึง
ก็ให้ออกรายงานเฉพาะรายที่ติ๊กเลือกจาก MainFrm ไม่ทราบว่าต้องทำอย่างไร

ที่คิวรี่บนตัวรายงานนั้นให้กำหนด เลือกข้อมูลในตาราง datasub จาก ID เดียวกับที่แสดงบนฟอร์ม
และกำหนดให้แสดง Field Check เฉพาะข้อมูลที่ต๊ิกอยู่หรือ True นั้นเอง
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

03 ส.ค. 63 , 14:54:28
ตอบกลับ #4

kn208598

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

  • ขอบคุณ ไท.Access

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

ผมใช้ฟอร์มชื่อ FrmTaxRegis_Check_Nobook เพื่อติ๊กเลือกรายที่ต้องการขอคืน..เมื่อติ๊กเลือกแล้วกดปุ่มบันทึกระเบียน(ปุ่มนี้จะ Save+OpenReport) ซึ่งรายงานจะดึงรายจากคิวรี่ TaxRegis_Check_Yes แต่ตัวรายงานจะออกมาแค่รายเดียว(ผมติ๊กเลือกเกิน 1 ราย) และเมื่อไปเปิดในคิวรี่ดู ก็จะขึ้นแค่รายเดียวเช่นกัน ผมแนบไฟล์มาแล้วรบกวนช่วยดูให้หน่อยน่ะครับ..ขอขอบคุณมากครับ

 

03 ส.ค. 63 , 14:56:26
ตอบกลับ #5

PNR

ผมใช้ฟอร์มชื่อ FrmTaxRegis_Check_Nobook เพื่อติ๊กเลือกรายที่ต้องการขอคืน..เมื่อติ๊กเลือกแล้วกดปุ่มบันทึกระเบียน(ปุ่มนี้จะ Save+OpenReport) ซึ่งรายงานจะดึงรายจากคิวรี่ TaxRegis_Check_Yes แต่ตัวรายงานจะออกมาแค่รายเดียว(ผมติ๊กเลือกเกิน 1 ราย) และเมื่อไปเปิดในคิวรี่ดู ก็จะขึ้นแค่รายเดียวเช่นกัน ผมแนบไฟล์มาแล้วรบกวนช่วยดูให้หน่อยน่ะครับ..ขอขอบคุณมากครับ
ที่แก้นะครับ

แก้คิวรี่ให้ ฎีกา/ส่งตรวจ จาก yes เป็น True แทน
ลบเงื่อนไข เลขทะเบียนงาน ออกไปเพราะเรคคอร์ดที่จะแสดงจะต้องมาจาก ฎีกา/ส่งตรวจ ครับ
แก้โค้ด เป็น
โค๊ด: [Select]
Private Sub Command24_Click()
DoCmd.RunCommand acCmdSaveRecord
DoCmd.OpenReport "TaxRegis_Check_Yes", acViewPreview
End Sub
« แก้ไขครั้งสุดท้าย: 03 ส.ค. 63 , 15:09:48 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

03 ส.ค. 63 , 16:16:38
ตอบกลับ #6

kn208598

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

  • ขอบคุณ ไท.Access

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

ขอขอบคุณมากน่ะครับ...

 

03 ส.ค. 63 , 16:49:32
ตอบกลับ #7

kn208598

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

  • ขอบคุณ ไท.Access

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

ครับ..คือฟอร์ม FrmTaxRegis_Check_Nobook ผมใช้ข้อมูลจากตารางหลัก (TaxRegis ก็จะมีข้อมูลหลายราย ซึ่งที่คอลัมน์ ฎีกา/ส่งตรวจ นั้น จะมีทั้งค่าที่เป็น True และ บางรายก็เป็น False ) ผมเลือกเฉพาะรายที่เป็น False มาแสดงที่ฟอร์มนี้เพื่อที่จะติ๊กเลือกและให้ออกรายงานเฉพาะรายที่ติ๊กเลือกที่ฟอร์มนี้เท่านั้น  แต่ตอนนี้เหมือนจะออกรายงานทุกรายที่ติ๊กเลือกแล้วจากในตาราง TaxRegis น่ะครับ..เช่น ในตาราง TaxRegis มีทั้งหมด 50 ราย (ในฟิลด์ ฎีกา/ส่งตรวจ มี20 รายที่เป็น True แล้วและที่เหลือ 30 ราย เป็น False) เมื่อผมเปิดฟอร์ม  FrmTaxRegis_Check_Nobook ก็จะแสดงรายทั้งหมด 30 ราย (คือรายที่ ฎีกา/ส่งตรวจ เป็น False) แล้วผมติ๊กเลือก 10 ราย แล้วผมต้องการให้แสดงรายงานเฉพาะ 10 รายนี้เท่านั้นครับแต่ตอนนี้มันแสดงรายงานออกมาทั้งหมด 40 รายเลยครับ..เข้าใจว่ามันไปดึงรายที่ ฎีกา/ส่งตรวจ เป็น True ทั้งหมดที่อยู่ในตาราง TaxRegis..ครับซึ่งไม่ต้องการให้แสดงทั้งหมด 40 รายน่ะครับ...ขอรบกวนน่ะครับ..ขอบคุณครับ

 

04 ส.ค. 63 , 09:11:26
ตอบกลับ #8

kn208598

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

  • ขอบคุณ ไท.Access

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

ขอแก้หน่อยน่ะครับ พิมพ์ผิด  ตรง "แต่ตอนนี้มันแสดงรายงานออกมาทั้งหมด 40 รายเลยครับ" ที่ถูก มันแสดงรายงานออกมา 30 ราย (คือ 20 รายเดิมที่คอลัมน์ ฎีกา/ส่งตรง เป็น True อยู่ก่อนแล้ว บวกกับ 10 รายที่ผมเพิ่งติ๊กเลือกตอนเปิดฟอร์ม  FrmTaxRegis_Check_Nobook) ซึ่งผมต้องการให้รายงานแสดงแค่ 10 ราย ที่เพิ่งติ๊กเลือก เท่านั้น ครับ...ขอขอบคุณครับ

 

04 ส.ค. 63 , 11:16:30
ตอบกลับ #9

UnKnown

ขอแทรกเข้ามาตีโจทย์ของกระทู้นี้นะครับ / สิ่งที่ จขก.นั้นต้องการก็คือ
1.ต้องการให้บนหน้าฟอร์มแสดงเฉพาะรายการที่ถูกติ๊กและมีการเก็บค่าใว้บนตารางจากที่อื่น(ทั้งหมด40-มีติ๊กใว้อยู่ก่อนแล้ว20=ฟอร์มต้องแสดงแค่20ที่เหลือ)
2.เมื่อหน้าฟอร์มแสดงแค่20รายการจากข้อ1 จะมาทำการติ๊กเลือกอีกครั้งว่าจะเอาตัวไหนออกรายงานบ้าง(เหลือ20-ติ๊กใหม่10=ออกรายงาน10)

ถ้าเป็นดั่งด้านบน วิธีการที่ผมจะทำคือให้บนตารางเก็บค่าติ๊กใว้2ค่าแล้วจะเกิดเหตุการณ์ดังนี้
1.หน้าฟอร์มแสดงเฉพาะรายการที่ Check = True
2.เมื่อติ๊กบนหน้าฟอร์มอีกครั้งจะเก็บค่าใว้บน Check2 = True
3.เมื่อออกรายงานจึงเป็น 40 - 20(check) - 10(check2) = 10รายการเท่านั้นใช่หรือไม่ครับ?

ปล.ผมเอาไฟล์จากโพสนี้ไปทำการเพิ่ม check2 และทำการกรองตามวิธีด้านบนครับ(ค่าcheck อยู่บนตารางไม่ได้ทำฟอร์มแก้)
ลองดูตัวอย่างจากกระทู้นี้ครับ
https://www.thai-access.com/index.php?topic=307.msg1223#msg1223
« แก้ไขครั้งสุดท้าย: 04 ส.ค. 63 , 12:55:23 โดย UnKnown »

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

04 ส.ค. 63 , 12:14:38
ตอบกลับ #10

kn208598

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

  • ขอบคุณ ไท.Access

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

ครับ..ขออธิบายน่ะครับ..1.คือต้องการให้บนหน้าฟอร์มแสดงรายที่ยังไม่ได้ติ๊ก จากตารางหลัก (ในฟิลด์ ฎีกา/ส่งตรวจ มี20 รายที่เป็น Trueคือ ติ๊กไว้ก่อนแล้ว และที่เหลือ 30 ราย เป็น False คือยังไม่ได้ติ๊ก) ให้แสดง 30 รายน่ะครับ...
2.เมื่อหน้าฟอร์มแสดง 30รายการ จากข้อ1 จะมาทำการติ๊กเลือกอีกครั้งว่าจะเอาตัวไหนออกรายงานบ้าง(จากที่แสดงหน้าฟอร์ม 30ราย ติ๊กใหม่10=ออกรายงาน10)...ครับ
..ขอขอบคุณครับ

 

04 ส.ค. 63 , 12:52:47
ตอบกลับ #11

UnKnown

1.หน้าฟอร์มแสดงเฉพาะรายการที่ Check = False

ไฟล์ตัวอย่างแนวทางใหม่(ยังไม่ได้แกะเพื่อแก้ไฟล์ของท่านนะครับ /ดูแนวแล้วแก้เองเลยหรือรอท่านอื่นอีกทีนะครับ)
« แก้ไขครั้งสุดท้าย: 04 ส.ค. 63 , 13:33:31 โดย UnKnown »

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

06 ส.ค. 63 , 11:50:12
ตอบกลับ #12

PNR

ผม DIY เอานะครับโดยเพิ่มฟิลล์ GetReport ไว้ในตาราง TaxRegis นะครับ
แนวทางคือ ถ้าเราติกเลือกแล้ว จะทำอย่างไรให้ข้อมูลที่เลือกนี้ สามารถไปแสดงบนรายงานได้ ผมเลยใช้การใส่ค่า Picking ไว้เพื่อใช้ในการ Criteria ไปแสดงบนรายงานนะครับ (ดูโค้ดที่  AddPickingReport นะครับ)
โดยผมจะใช้การลบ Picking ออกทุกครั้งที่กด บันทึกระเบียน เพราะเราต้องการค่าจากการติ๊กใหม่แล้วนั้นเอง
โดยเราใช้ Me.RecordsetClone เข้ามาใช้ในการจัดการกับ Recordset บน form ครับ

โค้ดที่ปุ่มบันทึก

โค๊ด: [Select]
Private Sub Command24_Click()
Call ClearPickingReport
DoEvents
Call AddPickingReport
End Sub
Sub ClearPickingReport()
Dim RS As DAO.Recordset
    Set RS = CurrentDb.OpenRecordset("TaxRegis", dbOpenDynaset)
    If Me.Dirty = True Then
    Me.Dirty = False
    End If
        RS.MoveFirst
        Do While Not RS.EOF
            If RS("GetReport") = "Picking" Then
                RS.Edit
                RS("GetReport") = Null
                RS.Update
            End If
            RS.MoveNext
        Loop
    RS.Close
    Set RS = Nothing
End Sub
Sub AddPickingReport()

Dim RSt As DAO.Recordset
    Set RSt = Me.RecordsetClone
        RSt.MoveFirst
        Do While Not RSt.EOF
            If RSt("ฎีกา/ส่งตรวจ") = True Then
                RSt.Edit
                RSt("GetReport") = "Picking"
                RSt.Update
            End If
            RSt.MoveNext
        Loop
        RSt.Close
       Set RSt = Nothing
       Me.Dirty = False
       DoCmd.OpenReport "TaxRegis_Check_Yes", acViewPreview
End Sub

Recordsource ของ Report

โค๊ด: [Select]
SELECT TaxRegis.* FROM TaxRegis WHERE ((Not (TaxRegis.GetReport) Is Null));
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: UnKnown, kn208598

07 ส.ค. 63 , 08:35:38
ตอบกลับ #13

kn208598

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

  • ขอบคุณ ไท.Access

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

ได้แล้วครับ..ขอบคุณมากน่ะครับ
ขอถามเป็นความรู้หน่อยน่ะครับ...
If Me.Dirty = True Then
   Me.Dirty = False
End If
หมายความว่าอย่างไร..ใช้ประโยชน์อะไรครับ..ขอขอบคุณมากน่ะครับ

 

07 ส.ค. 63 , 08:51:04
ตอบกลับ #14

PNR

ได้แล้วครับ..ขอบคุณมากน่ะครับ
ขอถามเป็นความรู้หน่อยน่ะครับ...
If Me.Dirty = True Then
   Me.Dirty = False
End If
หมายความว่าอย่างไร..ใช้ประโยชน์อะไรครับ..ขอขอบคุณมากน่ะครับ

If Me.Dirty = True Then   ค่า true คือ เปรียบเสมือนผู้ใช้ทำการเปลี่ยนแปลงระเบียนหรือดำเนินการเกี่ยวกับระเบียนอยู่
การที่เราสั่ง Dirty = false คือบอกให้โปรแกรมทราบว่าเราได้หยุดการดำเนินการกับระเบียนแล้ว
และโปรแกรมจะบันทึกข้อมูลลงตารางและพร้อมสำหรับการใช้เงื่อนไข การตรวจสอบขั้นต่อๆไป

ถ้าสังเกตุผมไม่ได้ใส่โค้ดสำหรับบันทึกไว้เพราะ Dirty = false มันก็บันทึกได้เหมือนกัน
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 
โพสต์นี้ได้รับคำขอบคุณจาก: kn208598

07 ส.ค. 63 , 12:37:03
ตอบกลับ #15

kn208598

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

  • ขอบคุณ ไท.Access

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

อ๋อ..เข้าใจแล้วครับ..ขอบคุณครับ..

 


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