เลือกรายงาน ช่วงวัน เวลา
กระทู้เก่าบอร์ด อ.Yeadram

 1,191   16
URL.หัวข้อ / URL
เลือกรายงาน ช่วงวัน เวลา

มีฟิลด์ VisitDate เก็บข้อมูลเป็น Date รูปแบบนี้ 2/9/2560 17:38:05
ผมต้องการเลือกรายงานเป็นช่วงวัน และ เวลา ผมจึงแยก
VisitDate ดังนี้ D:DateValue([VisitDate]) และ T:TimeValue([VisitDate])
จะได้รูปแบบแยกเป็น 2 ฟิลด์ดังนี้ D = 2/9/2560 T = 17:38:05
คำถามคือ ผมใส่เงื่อนไข Between ของวันที่ในรูปแบบที่เคยใส่ คือ
Between #1/9/2560# and #30/9/2560# มัน Error Data Type mismatch
มันต้องใส่เงื่อนไขเป็นแบบไหนครับ ทั้งวันที่ และเวลา
ขอบพระคุณครับ

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

1 @R23965
ฟังก์ชั่น cDate() คืนค่ามาเป็น Date
D: cDate(format("dd/mm/yyyy"))

Between #1/09/2560# and #30/9/2560# หรือ
Between #9/1/2560# and #9/30/2560# (รูปแบบที่จะได้ผลขึ้นอยู่กับ system ของเครื่องที่รัน)


ส่วนฟังก์ชั่น DateValue() เท่าที่ทราบ มันไม่ได้คืนค่ามาเป็น Date นะครับ ที่คุณมองเห็นมันแสดงผลเป็น Date นั่นแค่การปรับอัตโนมัติ ของส่วนแสดงผลเท่านั้น ค่าที่แท้จริงของมัน (ในส่วนที่เก็บอยู่ในแรม หรือส่วนกำลังประมวลผล) ไม่ใช่ Date นะครับ (น่าจะเป็น Integer นะ) เอา #..# ไปเป็นเงื่อนไขไม่ได้ครับ


....................
ถ้าไม่อยากสับสนยาวๆ ในภายหลัง ไม่ว่าจะใช้เครื่องไหนๆ ตั้ง system date เป็นรูปแบบ เดือนก่อนวัน หรือวันก่อนเดือน (dd/mm/yyyy หรือ mm/dd/yyyy)
โจทก์ของคุณ อาจระบุให้ละเอียด ป้องกันปัญหาไปเลยก็ดีนะครับ

D: format("mm/yyyy")
where D Like '09/2560'
2 @R23967
ขอบคุณครับ อ.yeadram ไม่ได้คุยกันนานเลยครับ
แต่เรื่องเวลานี่ ผมยังไม่เคยทำเลยครับ ต้องใช้แบบไหน
3 @R23968
คือนอกจากจะเลือก วันที่เท่าไหร่ ถึงเท่าไหร่แล้ว
ยังอยากเลือกเวลาด้วย อีกเงื่อนไขนึง
เช่น 19.30 - 21.30 แต่ใส่เงื่อไขไม่ถูก
4 @R23969
ผมเลิกใช้รูปแบบ Between #date# and #date# ไปนานแล้วครับ เพราะมีปัญหาเรื่องการตั้งค่าวันที่ของคอมพ์แต่ละเครื่อง

เปลี่ยนไปใช้รูปแบบนี้แทนครับ

Between CDbl(date1) and CDbl(date2)

ส่วนเรื่องเวลาก็ใช้

Between CDbl(TimeValue(date)) and CDbl(TimeValue(date2))

5 @R23972
อ.pizz_p ครับ
ฟังชันนี้ Between CDbl(TimeValue(date)) and CDbl(TimeValue(date2))
ผมต้องการ ใส่เงื่อนไขเวลา 19.30 - 21.30 น
ผมจะใช้ยังงัยครับ ผมลองหลายอย่างแล้ว ไม่ได้เลยครับ
6 @R23975
่ไม่จำเป็นต้องแยกฟิลด์วันกับเวลาเลย ตย.เงิ่อนไขให้ใส่ between #12/jan/2017 19:30# and #12/jan/2017 21:30#
7 @R23976
ลองอ่านในคำถามนี้เพิ่มเติม จะช่วยให้เข้าใจได้มากขึ้นครับ
http://thai-access.com/yeadram_view.php?topic_id=2294&page=1
8 @R23979
เรียน อ.สันติสุขครับ ก่อนโพส ผมลองค้นหาในเวปนี้ หายกระทู้เลยครับ
มีแต่พูดถึง วันที่ ซึ่งจริงๆ ความต้องการของผม คือ เวลาครับ
กระทูที่ อ. ให้ผมอ่าน ก็อ่านแล้วครับ มันยังไม่ตรงใจ

คือ ผมอยากรู้ผลงานโอทีครับ ในวัน เวลาที่กำหนด

แต่ใส่ ฟังก์ชัน หรือ เงื่อนไขไม่ถูกครับ เพราะไม่เคยมช้เลยครับ
9 @R23980
ออกแบบให้ป้อนวันที่จากไหน ถ้าป้อนบนฟอร์ม เวลาป้อนก็ป้อน วัน/ชื่อเดือน/ปี ชม.:นาที แล้วเอาค่าที่ป้อนไปใช่ที่ไหน ในโค้ดหรือคิวรี่หรือยังไง


10 @R23982
ใช้รูปแบบนี้

TimeValue(dateField) Between #19:30:00# And #21:30:00#

รูปแบบเวลาให้ใช้ : (colon) เป็นตัวคั่นระหว่าง ชม.:นาที:วินาที
11 @R23986
ตอบ อ.สันติสุข
ป้อนจากฟอร์ม ได้ข้อมูลมาในรูป 2/9/2560 17:38:05 แล้ว หลายๆ เรคคอร์ด
เอามาทำ Query หาเวลาโอที คือ 19.30 - 21.30 น และเลือกช่วงวันได้อีกเงื่อนไขครับ

อ.pizza_p
Error Type mismath เหมือนข้างบนครับ

เบื้องต้นช่วงรอ อ.มาตอบว่าที่ถูกควรทำแบบไหน ผมลองทำแบบนี้ครับ
ใช้ Hour([visitdate]) แล้วใส่เงื่อนไข >18 And "U"
ผมก็จะได้ช่วงเวลา 19.30-21.30 น. แต่ไม่รู้ว่ามันถูกต้องหรือป่าว

ในความรู้สึกผมคิดว่ามันน่าจะมีฟังก์ชั่นให้ใช้อะครับ แต่เลือกเวลา ซึ่งมันใช้บ่อย
12 @R23990
แก้ไขครับข้อความขาดหาย

ผมใช้ H : Hour([visitdate]) แล้วใส่เงื่อนไข >18 And "U"
ผมก็จะได้ช่วงเวลา 19.30-21.30 น.
13 @R23991
ทำดูแล้ว ผ่านหมด





ลองดูรูปแบบเวลาในเครื่องครับ ถ้ามันเป็น 7:30:00 PM ก็ต้องใส่ตาม format ที่อยู่ในเครื่องครับ
14 @R24043
เขตข้อมูลผมใช้ Date/time
Windows 10 ชนิดวันที่ ไทย
Access2016



ลองแล้วไม่ได้ครับอาจารย์
15 @R24048
field visitdate มี record ที่มีค่าเป็น Null ครับ วิธีแก้คือใช้ Nz() เพื่อไม่ให้ field นี้มีค่าเป็น Null ครับ

เช่น

T: TimeValue(Nz([visitdate],#1/1/2560#))
หรือ
T: TimeValue(Nz([visitdate],Date()))

ปล. วันที่ใน Nz([visitdate],#1/1/2560#) จะตั้งให้เป็นอะไรก็ได้ที่ไม่ได้อยู่ในช่วงที่เราต้องการ
16 @R24058
555 โอเคเลยครับ ได้ความรู้ใหม่
ขอบพระคุณ อ.pizza_p ด้วยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.2789s