จะให้กรองข้อมูลตามช่วงวันที่ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย

 3,435   13 จะให้กรองข้อมูลตามช่วงวันที่ครับ

ขอขุดกระทู้มาขอความช่วยเหลือครับ
จาก http://www.thai-access.com/yeadram_view.php?topic_id=1477

คือผมอยากจะให้กรองช่วงวันที่นะครับ
ลองทำตามแล้วยังไม่ได้ ข้อมูลนิ่ง
ขอคำแนะนำด้วยครับ

ปล.ข้อมูลที่ต้องการให้กรองอยู่ในส่วน sub form ครับ
คำสังที่ผมลองใช้

Me.F_BB_sub.Form.Filter = "[Date] BETWEEN #" & Format(Me.BeginDate, "dd mmm yy") & "# AND #" & Format(Me.EndDate, "dd mmm yy") & "#"
'
'Me.F_BB_sub.Form.Filter = "[Date] BETWEEN " & CDate(Me.BeginDate) & " AND " & CDate(Me.EndDate)
'Me.F_BB_sub.Form.Filter = "[Date] between #" & Me.BeginDate & " and #" & Me.EndDate & "#"
อันที่สามนี่ขึ้น Runtime Error ครับ

Me.FilterOn = True
Me.Refresh

13 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R22105
ไฟล์ครับ

ช่างอิเล็คฯอยากทำให้คุณอาใช้ช่วยแนะแนวทางด้วยครับ
          
2 @R22106
ปัญหาน่าจะเป็นเพราะเครื่องคุณอยู่ในระบบปี พ.ศ. ครับ ฟังก์ชั่น Format( ) ก็จะให้รูปแบบวันที่ตามที่กำหนดในระบบวินโดว์ แต่เพราะวันที่ที่อยู่ในเงื่อนไขต่างๆที่ใช้ใน SQL นั้น   ตัวจัดการฐานข้อมูลเองต้องการวันที่ในระบบภาษาอังกฤษและเป็น ค.ศ. ด้วย (แม้ว่าเครื่องจะยังอยู่ในระบบ พ.ศ. ก็ตาม) ส่วนตัวผมแนะนำให้เป็นรูปแบบ วันที่ 2 หลัก ชื่อเดือนภาษาอังกฤษ(จะชื่อย่อหรือชื่อเต็มก็ได้) และปีค.ศ.อีก 4 หลักครับ ส่วนสัญญลักษณ์ที่คั่นระหว่างส่วนของ วัน เดือน ปี จะเป็นช่องว่างหรือเครื่องหมาย / หรือ - ก็ใช้ได้ครับ

ลองอ่านเพิ่มเติมจากลิงค์นี้ครับ http://www.thai-access.com/yeadram_view.php?topic_id=2294&page=1
3 @R22107
ผมเปลี่ยน รูปแบบวันที่ในเครื่องแล้วก็ยังเป็นอยู่ครับผม

4 @R22108
ต้องเป็น #4 May 2016# ครับ
5 @R22109
ได้แล้วครับ (ปุ่มคำสั่งอยู่บน sub form)
Private Sub cmdDate_Click()
Me.Filter = "[Date] between #" & Me.BeginDate & "#" & "and #" & Me.EndDate & "#"

Me.FilterOn = True
Me.Refresh
End Sub

แต่ถ้าผมยกมาใส่บน main Form
Me.F_BB_sub.Form.Filter = .........
ข้อมูลยังนิ่งครับ

ปล.รบกวนขอคำสั่งยกเลิกการ Filter ทีครับ
6 @R22110
คำสั่งยกเลิกการ Filter ครับ

Private Sub Filteroff_Click()
Me.FilterOn = False
Me.Refresh
End Sub
7 @R22111
ถ้ายกมาใน main form ก็ต้องสั่ง Me.F_BB_sub.form.FilterOn = True ด้วยครับ ถ้าต้องการยกเลิก ก็กำหนดให้เป็น False เท่านั้นเอง
8 @R22112
เยี่ยมเลยครับ

ขอบคุณมากมายเลยครับผม
9 @R22116
....
คือว่า จะสั่งพิมพ์เป็นรายงานออกมายังไงครับผม
ผมลองใช้วิธี ขณะที่เปิดอยู่กดปุ่ม Ctrl+P มั้นปริ้นออกมาทุกๆรายชื่อลูกค้าเลยครับ
ทั้งๆที่ผมก็เลือกดูอยู่แค่รายเดียวในหน้าต่างนั้น และแม้ข้อมูลจะว่าง(ตามช่วงวันทีที่เลือก) ก็ปริ้นหัวเป็นชื่อ ด้านล่างว่างเปล่า (รวมถึงลองๆสร้างปุ่มคำสั่งปริ้นก็แนวๆเดียวกันเลยครับ)

หรือว่าถ้าจะทำเป็น Report ต้องทำอย่างไรครับโดยเฉพาะให้ส่งค่าจากตัวแปลที่เราได้ทำการเลือกๆใว้ครับ
10 @R22117
เรื่องพิมพ์ออกมาได้ทุกรายชื่อ ถ้าถูก filter อยู่ก็ไม่เคยเจอว่าเป็นอย่างนั้นนะครับ ส่วนพิมพ์หัวกระดาษเมื่อไม่มีรายชื่อตามเงื่อนไข ระบบมันเป็นอย่างนั้นอยู่แล้วครับ ถ้าไม่ต้องการให้พิมพ์เลย ต้องตรวจเช็คว่าถ้ามีรายการตามเงื่อนไขที่ filter ก็ไม่ต้องพิมพ์ครับ โดยใช้โค้ดนี้ใส่ในปุ่มคำสั่งพิมพ์ที่คุณสร้างขึ้นมาเอง

If me.F_BB_sub.form.recordsetclone.recordcount > 0 then
   ' คำสั่งพิมพ์
   Docmd.PrintOut
else
   MsgBox "No data to be printed"
end if

แต่ถ้าคุณจะทำเป็น Report เพื่อพิมพ์โดยเฉพาะ ก็ให้ใส่โค้ดในปุ่มพิมพ์เป็น

Docmd.OpenReport "ชื่อรายงาน",acViewDesign,,"[Date] between #" & Me.BeginDate & "# and #" & Me.EndDate & "#"

และเพื่อให้รายงานไม่พิมพ์เมื่อไม่มีข้อมูลตามเงื่อนไข ใน event : On No Data ของตัว Report ให้เลือก [Event Procedure] แล้วกดปุ่ม ... ที่ด้านท้าย ตัวโค้ดจะเปิดออกมา ให้ใส่คำสั่ง Cancel = True แทรกลงไปตามตัวอย่างนี้

Private Sub Report_NoData(Cancel As Integer)
   Cancel = True
End Sub
11 @R22119
แล้วต้องเพิ่มคำสั่งอะไรครับ
ให้มันกรองตาม Cus_ID ด้วยนะครับ
12 @R22121
"[Cus_ID] = """ & Me.อะไรก็ว่าไป & """ and [Date] between #" & Me.BeginDate & "# and #" & Me.EndDate & "#"
13 @R22123
ขอขอบคุณ
การเพิ่มลำดับที่ให้เรียง 1234... ในแต่ละครั้งที่ดู
สำหรับการทำให้ออโต้แทรกลำดับที่ครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 1.8717s