กระทู้เก่าบอร์ด อ.Yeadram
3,323 5
URL.หัวข้อ /
URL
ดูข้อมูลดูทั้งหมดและดูแบบช่วงเวลา
ต้อนนี้ผมสามารถดูแบบช่วงเวลาได้แล้วครับ โดยการสร้าง Textbox รับวันที่ BeginDate กับ EndDateโดยการทำในคิวรี่ Between[Forms]![FrmAccident]![BeginDate]And[Forms]![FrmAccident]![EndDate]
คือเปิดฟอร์มครั้งแรกจะต้องใส่ช่วงเวลาก่อนถึงจะโชว์ข้อมูล
แต่ผมอยากให้เวลาเปิดฟอร์มขึ้นมาครั้งแรกให้มันแสดงข้อมูลทั้งหมดก่อนแล้วค่อยเลือกดูช่วงเวลาครับ
คือเปิดฟอร์มครั้งแรกจะต้องใส่ช่วงเวลาก่อนถึงจะโชว์ข้อมูล
แต่ผมอยากให้เวลาเปิดฟอร์มขึ้นมาครั้งแรกให้มันแสดงข้อมูลทั้งหมดก่อนแล้วค่อยเลือกดูช่วงเวลาครับ
5 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R06249
ผมทำตามที่แนะนำแล้ว เมื่อกดป่มคำสั่ง ข้อมูลที่โชว์อยู่หายหมดเลย ไม่รู้ว่าผมทำผิดตรงไหนหรือเปล่าครับ
Private sub command89_click()
me.filter = "[StartDate] BETWEEN " & me.BeginDate & " AND " & me.EndDate
me.filteron = true
me.refresh
End sub
Private sub command89_click()
me.filter = "[StartDate] BETWEEN " & me.BeginDate & " AND " & me.EndDate
me.filteron = true
me.refresh
End sub
3 @R06251
ขณะทีข้อมูลมันหาย
- ให้เปลียนมุมมองไปที่ออกแบบทันที
- ดูคุณสมบัติของฟอร์ม ดูที่ช่อง "ตัวกรอง" ดูสายอักขระที่มันเขียน โดยเฉพาะรูปแบบของวันที่ มันเขียนได้ถูกต้องหรือไม่
คุณอาจต้องปรับเปลี่ยนรูปแบบของข้อมูลก่อนนำเข้าไปในสายอักขระเงื่อนไข หรืออาจต้องใช้เครื่องหมายชาร์ฟ (#) เข้าช่วยเช่น
"[StartDate] BETWEEN #" & me.BeginDate & "# AND #" & me.EndDate & "#"
หรือ
"[StartDate] BETWEEN " & cdate(me.BeginDate) & " AND " & cdate(me.EndDate)
หรือ
"[StartDate] BETWEEN #" & format(me.BeginDate,"yyyy-mm-dd") & "# AND #" & format(me.EndDate,"yyyy-mm-dd") & "#"
ลองปรับเปลียนหาดูครับ ทั้งนี้ต้องปรับจนเข้ากันได้
กับ system date ของคุณ, กับรูปแบบการกรอกข้อมูลของคุณ, รูปแบบของฟิลด์ที่คุณกำหนดไว้ก่อน
- ให้เปลียนมุมมองไปที่ออกแบบทันที
- ดูคุณสมบัติของฟอร์ม ดูที่ช่อง "ตัวกรอง" ดูสายอักขระที่มันเขียน โดยเฉพาะรูปแบบของวันที่ มันเขียนได้ถูกต้องหรือไม่
คุณอาจต้องปรับเปลี่ยนรูปแบบของข้อมูลก่อนนำเข้าไปในสายอักขระเงื่อนไข หรืออาจต้องใช้เครื่องหมายชาร์ฟ (#) เข้าช่วยเช่น
"[StartDate] BETWEEN #" & me.BeginDate & "# AND #" & me.EndDate & "#"
หรือ
"[StartDate] BETWEEN " & cdate(me.BeginDate) & " AND " & cdate(me.EndDate)
หรือ
"[StartDate] BETWEEN #" & format(me.BeginDate,"yyyy-mm-dd") & "# AND #" & format(me.EndDate,"yyyy-mm-dd") & "#"
ลองปรับเปลียนหาดูครับ ทั้งนี้ต้องปรับจนเข้ากันได้
กับ system date ของคุณ, กับรูปแบบการกรอกข้อมูลของคุณ, รูปแบบของฟิลด์ที่คุณกำหนดไว้ก่อน
4 @R06255
ขอบคุณมากน่ะครับ
คุณ yeadram
คุณ yeadram
5 @R08298
ก่อนเครื่องหมายเท่ากับ
ถ้าคุณเขียนโค้ดบน main form แล้วสั่ง
me.filter =............
นั่นหมายความว่า คุณกำลังจะกรองข้อมูลบนฟอร์มหลัก
ถ้าคุณเขียนโค้ดบน main form แต่จะสั่งกรองข้อมูลใน sub form คุณจะใช้ me.filter (ข้าพเจ้าต้องการจะกรอง...) ไม่ได้ อย่างของคุณต้องเขียน
me.morot.form.filter (ฟอร์มย่อยของข้าพเจ้าที่ชื่อ morot ต้องการจะกรอง..)
หลังเครื่องหมายเท่ากับ
คุณควรเขียนแค่ว่า "[date] between #" & me.begindate & " and #" & me.enddate & "#"
สายอักขระชุดนี้จะถูกส่งเข้าไปในฟอร์มย่อย ซึ่งก็คือ ฟอร์มย่อย จะเป็นผู้อ่านสายอักขระ จะเป็นผู้ปฎิบัติตามคำสั่งในสายอักขระ ฟอร์มหลักไม่มีสิทธิ์ไปอ่านมันอีก ดังนั้นเมื่อฟิลด์ชื่อ [Date] มันเป็นของฟอร์มย่อยอยู่แล้ว ก็ไม่ต้องไปอ้างอิงให้อ้อมโลกอีก คุณก็จึงเขียนแค่ [Date] Between.... ได้เลย
ถ้าคุณเขียนโค้ดบน main form แล้วสั่ง
me.filter =............
นั่นหมายความว่า คุณกำลังจะกรองข้อมูลบนฟอร์มหลัก
ถ้าคุณเขียนโค้ดบน main form แต่จะสั่งกรองข้อมูลใน sub form คุณจะใช้ me.filter (ข้าพเจ้าต้องการจะกรอง...) ไม่ได้ อย่างของคุณต้องเขียน
me.morot.form.filter (ฟอร์มย่อยของข้าพเจ้าที่ชื่อ morot ต้องการจะกรอง..)
หลังเครื่องหมายเท่ากับ
คุณควรเขียนแค่ว่า "[date] between #" & me.begindate & " and #" & me.enddate & "#"
สายอักขระชุดนี้จะถูกส่งเข้าไปในฟอร์มย่อย ซึ่งก็คือ ฟอร์มย่อย จะเป็นผู้อ่านสายอักขระ จะเป็นผู้ปฎิบัติตามคำสั่งในสายอักขระ ฟอร์มหลักไม่มีสิทธิ์ไปอ่านมันอีก ดังนั้นเมื่อฟิลด์ชื่อ [Date] มันเป็นของฟอร์มย่อยอยู่แล้ว ก็ไม่ต้องไปอ้างอิงให้อ้อมโลกอีก คุณก็จึงเขียนแค่ [Date] Between.... ได้เลย
Time: 0.2498s
ให้ข้อมูลมันเข้าฟอร์มมาทั้งหมดเลย ไม่ต้องไปกรองดักมัน
- ลำดับต่อไป ถ้าอยากกรองแบบ on demand คืออยากกรองเมื่อไหร่ค่อยกรอง ไม่ใช่ไปสั่งกรองไว้แต่เริ่มต้น ก็แนะนำให้ทำปุ่มคำสั่งเพิ่มปุ่มหนึ่ง ฝังโค้ดลงในเหตุการณ์ "เมื่อคลิ๊ก" ของปุ่มคำสั่งนี้ คำสั่งก็คือสั่งให้มันกรองครับ
Private sub command1_click()
me.filter="[ฟิลด์วันที่] BETWEEN " & me.BeginDate & " AND " & me.EndDate
me.filteron = true
me.refresh
End sub