ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"



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

01 ก.พ. 64 , 21:42:31
อ่าน 532 ครั้ง

kunlek

ในรายงานต่างๆ ใน Criteria between[ตั้งแต่ วว/ดด/ปป]and[ถึง วว/ดด/ปป] ถ้าจะป้อนโดยพิมพ์ ววดดปป ไม่ต้องลืมป้อน "/" ทำอย่างไรได้ครับ

 

02 ก.พ. 64 , 08:23:12
ตอบกลับ #1

PNR

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #1 เมื่อ: 02 ก.พ. 64 , 08:23:12 »
ในรายงานต่างๆ ใน Criteria between[ตั้งแต่ วว/ดด/ปป]and[ถึง วว/ดด/ปป] ถ้าจะป้อนโดยพิมพ์ ววดดปป ไม่ต้องลืมป้อน "/" ทำอย่างไรได้ครับ

ถ้าข้อมูลที่จะป้อนโดยพิมพ์ลงไปเป็น ววดดปป
เราสามารถใช้ Right Left Mid ในการแยกค่าได้ครับ เช่น
ที่ criteria มีตัวไว้ระบุวันที่ ตั้งแต่วันที่ คือ begindate
                               และถึงวันที่ คือ Enddate
และแปลงส่วนต่างๆ ให้เป็นวันที่ใช้ Cdate()
Criteria ก็จะได้แบบนี้ครับ

Between CDate(Left([Begindate],2) & "/" & Mid([Begindate],4,2) & "/" & Right([Begindate],2)) And CDate(Left([Enddate],2) & "/" & Mid([Enddate],4,2) & "/" & Right([Enddate],2))

อีกแบบเป็นวิธีง่ายๆ ก็คือ ใช้ Format วันที่อีกฟิลล์หนึ่งแล้วใช้
เช่นมีตารางชื่อ Mytable
    มีฟิลล์วันที่ชื่อ Mydate
ที่คิวรี่กำหนด Criteria ดังนี้
SELECT MyTable.*
FROM MyTable
WHERE (((Format([Mydate],"ddmmyy")) Between CDate([ตั้งแต่วันที่ ววดดปป]) And CDate([ถึงวันที่ ววดดปป])));
« แก้ไขครั้งสุดท้าย: 02 ก.พ. 64 , 09:05:47 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 

02 ก.พ. 64 , 21:34:21
ตอบกลับ #2

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #2 เมื่อ: 02 ก.พ. 64 , 21:34:21 »
ตามตัวอย่างถ้าใส่ criteria 010164  และ 010164 ทำไมได้ผลลัพธ์รายการวันที่ 15เท่านั้นครับ

 

03 ก.พ. 64 , 08:19:03
ตอบกลับ #3

PNR

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #3 เมื่อ: 03 ก.พ. 64 , 08:19:03 »
ลองปรับเป็น
โค๊ด: [Select]
SELECT item_asset.date_buy, item_asset.item, item_asset.model, item_asset.book_vul
FROM item_asset
WHERE CDate([Date_Buy]) Between CDate(Left([ตั้งแต่ วว/ดด/ปป],2) & "/" & Mid([ตั้งแต่ วว/ดด/ปป],3,2) & "/" & Right([ตั้งแต่ วว/ดด/ปป],2)) And CDate(Left([ถึง วว/ดด/ปป],2) & "/" & Mid([ถึง วว/ดด/ปป],3,2) & "/" & Right([ถึง วว/ดด/ปป],2));

ว่าได้หรือไม่
« แก้ไขครั้งสุดท้าย: 03 ก.พ. 64 , 08:37:22 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 

03 ก.พ. 64 , 11:41:39
ตอบกลับ #4

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #4 เมื่อ: 03 ก.พ. 64 , 11:41:39 »
ได้แล้วครับ ขอบคุณครับ


 

04 ก.พ. 64 , 20:55:35
ตอบกลับ #5

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #5 เมื่อ: 04 ก.พ. 64 , 20:55:35 »
ถ้าใส่ตัวเลข 010164 ถึง 310164 
***ถ้าออกรายงาน   ="งวดภาษีเดือน" & " " & Format(CDate([วันที่ วว/ดด/ปป]),"mmmm yyyy") ผลลัพธ์ งวดภาษี 102470
***ถ้าออกรายงาน   ="งวดภาษีเดือน" & " " & Format(CDate([ถึง วว/ดด/ปป]),"mmmm yyyy") ผลลัพธ์ งวดภาษี 033292
อยากให้ผลลัพธ์ คือ งวดภาษี มกราคม 64  งวดภาษี มกราคม 2564  ต้องใช้ format ไหนครับ

 

05 ก.พ. 64 , 07:55:52
ตอบกลับ #6

PNR

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #6 เมื่อ: 05 ก.พ. 64 , 07:55:52 »
แบบงวดภาษี มกราคม 64

= "งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yy")

แบบงวดภาษี มกราคม 2564
="งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yyyy")

เนื่องจาก ข้อมูลตัวเลขนั้นระบบจะไม่ทราบว่าคือวันที่ เราก็ใช้วิธีเดียวกันเมื่อเรามีฟิลล์ หรือ ข้อมูลจาก Control เป็น[วันที่ วว/ดด/ปป] เก็บตัวเลขวันที่ แบบ 010164
ก็ใช้ การตัดคำ ของ วัน เดือน ปี แล้วใช้ Cdate() ก็จะได้รูปแบบวันที่มา แล้วเราก็ใช้ Format() ได้เลย
« แก้ไขครั้งสุดท้าย: 05 ก.พ. 64 , 08:13:27 โดย PNR »
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 

05 ก.พ. 64 , 12:23:46
ตอบกลับ #7

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #7 เมื่อ: 05 ก.พ. 64 , 12:23:46 »
ขอบพระคุณยิ่งครับ

 

06 ก.พ. 64 , 17:46:44
ตอบกลับ #8

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #8 เมื่อ: 06 ก.พ. 64 , 17:46:44 »
="งวดภาษีเดือน" & " " & Format(CDate([งวดภาษี ดด/ปป]),"mmmm yyyy")
เมื่อป้อน ดด/ปป ใน criteria เป็น 01/64  ผลลัพธ์ ได้ มกราคม 2564
***เมื่อป้อน ดด/ปป ใน criteria เป็น 0164  ผลลัพธ์ ได้ มิถุนายน 2443  ต้องการป้อนโดยแบบนี้ ไม่ต้องใส่ "/" ครับ
ยังหาทางไม่เจอครับ


 

 

07 ก.พ. 64 , 00:25:41
ตอบกลับ #9

UnKnown

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #9 เมื่อ: 07 ก.พ. 64 , 00:25:41 »
ใช้แบบนี้ดูครับ
="งวดภาษีเดือน " & Format(CDate("01/" & Left([งวดภาษี ดด/ปป],2) & "/" & Right([งวดภาษี ดด/ปป],2)),"mmmm yyyy")
ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส :prettiness:
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข :ninja:
 
โพสต์นี้ได้รับคำขอบคุณจาก: bc98tj0707

07 ก.พ. 64 , 07:29:44
ตอบกลับ #10

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #10 เมื่อ: 07 ก.พ. 64 , 07:29:44 »
ได้แล้วครับ ขอบพระคุณครับ

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

08 ก.พ. 64 , 08:05:24
ตอบกลับ #11

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #11 เมื่อ: 08 ก.พ. 64 , 08:05:24 »
ถ้าใน Criteria ป้อน 010164  และ 310164
ใช้ code นี้ ="ตั้งแต่วันที่" & " " & [ตั้งแต่ วว/ดด/ปป] & "  ถึง  " & " " & [ถึง วว/ดด/ปป]  ผลลัพธ์ได้ 010164 ถึง 310164
*******
ใช้ code นี้ ="ตั้งแต่วันที่" & " " & Format(CDate([ตั้งแต่ วว/ดด/ปป])) & "  ถึง  " & " " & Format(CDate([ถึง วว/ดด/ปป]))
ผลลัพธ์ =29/10/2470 ถึง 13/3/3292 ทำอย่างไรให้ได้  01/01/64 ถึง 31/01/64

 

08 ก.พ. 64 , 08:13:27
ตอบกลับ #12

PNR

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #12 เมื่อ: 08 ก.พ. 64 , 08:13:27 »
Format(CDate(Left([ตั้งแต่ วว/ดด/ปป],2) & "/" & Mid([ตั้งแต่ วว/ดด/ปป],3,2) & "/" & Right([ตั้งแต่ วว/ดด/ปป],2)),"dd/mm/yy") & " ถึง " & Format(CDate(Left([ถึง วว/ดด/ปป],2) & "/" & Mid([ถึง วว/ดด/ปป],3,2) & "/" & Right([ถึง วว/ดด/ปป],2)),"dd/mm/yy")
เรียนเพื่อนสมาชิกและอาจารย์ทุกท่าน
ผมไม่ใช่อาจารย์และไม่ใช่ผู้ที่แตกฉานใน Access นะครับ
แค่ผู้หนึ่งที่แชร์ความรู้เท่าที่มี ถ้าหากอาจารย์ทุกท่านเห็นว่ายังไม่ถูกต้อง
กรุณาโพสตอบกระทู้ส่วนเนื้อหาที่น่าจะถูกต้องกว่าให้ด้วยเพื่อเป็นวิทยาทาน
 

08 ก.พ. 64 , 10:16:11
ตอบกลับ #13

kunlek

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #13 เมื่อ: 08 ก.พ. 64 , 10:16:11 »
ขอบพระคุณครับ

 

08 ก.พ. 64 , 14:30:21
ตอบกลับ #14

UnKnown

: ใส่ วว/ดด/ปป แบบไม่มี "/" โดยใช้ Left,Mid,Right & Cdate()
« ตอบกลับ #14 เมื่อ: 08 ก.พ. 64 , 14:30:21 »
วิธีการใช้ Left,Mid,Right เพื่อดึงค่าออกมาโดย Left ดึงจากทางซ้าย > ,Mid ก็ดึงจากทางซ้ายแต่มีการเว้นระยะก่อนดึง -- > ,Right ดึงจากทางขวา <

ตัวอย่าง ตัวแปล ABC มีค่า 123456789
Left([ABC ],2)     = 12     / ดึงค่าจากซ้ายสุดมา 2ตัว
Mid([ABC ],3,2)   = 34     / ดึงค่ามาโดยตัวแรกคือตัวที่ 3นับจากซ้ายแล้วนับไปต่ออีก 2ตัว
Mid([ABC ],5,3)   = 567   / ดึงค่ามาโดยตัวแรกคือตัวที่ 5นับจากซ้ายแล้วนับไปต่ออีก 3ตัว
Right([ABC ],2)   = 89     / ดึงค่าจากขวาสุดมา 2ตัว

ตัวอย่าง ท่าน PNR จะใช้ Cdate() เพื่อแปลงตัวเลขให้เป็นวันที่ แต่โดยปรกติตัวแปลวันที่จะมี / คั่นอยู่ท่านจึงใช้ Left,Mid,Right เพื่อแยกตัวแปลแล้วใส่ & "/" & เข้าไปคั่นใว้ดังนี้
ตัวแปล [วันที่ วว/ดด/ปป] เก็บค่า 010164 เมื่อใช้ Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2) = 01/01/64 แปลงเสร็จระบบก็ยังคือเป็นข้อความธรรมดาแค่มี / คั่นอยู่แต่สามารถเอาไปให้ Cdate() บอกว่ามันคือวันที่โดย Cdate(ค่อม...ใว้) (จาก 010164 ตอนนี้ระบบมองออกแล้วว่าเป็นวันที่1 เดือน1 ปี64)

ที่นี้มีต่ออีกว่าถ้าอยากให้มันแสดงผลออกมาเป็นอย่างอื่นเช่น 1 มกราคม 64 , มกราคม 2564 , 01/01/64 อีกที่ล่ะได้ใหม?
คำตอบคือได้โดยใช้ Format() เพื่อนำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเพราะจากที่เราใช้ Cdate() ไปนั้นระบบรู้แล้วว่าตัวไหนคือวันเดือนปีเช่น
Format(CDate(.....),"mmm yy")   = ม.ค. 64
Format(CDate(.....),"mmmm yyyy")   = มกราคม 2564
Format(CDate(.....),"dd/mm/yy")      = 01/01/64

แบบงวดภาษี มกราคม 64
= "งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yy")

แบบงวดภาษี มกราคม 2564
="งวดภาษีเดือน" & " " & Format(CDate(Left([วันที่ วว/ดด/ปป],2) & "/" & Mid([วันที่ วว/ดด/ปป],3,2) & "/" & Right([วันที่ วว/ดด/ปป],2)),"mmmm yyyy")

สรุปขั้นตอน*โดยต้องใช้ให้ครบ
1.ใช้ Left,Mid,Right หั่นตัวเลขออกมาเป็นส่วนๆแล้วใส่ / เข้าไปคั่นใว้
2.ใช้ Cdate() แปลงค่าจากข้อความ,ตัวเลขธรรมดาให้ระบบคิดว่าเป็นวันที่(โดยข้อความต้องมี / คั่นอยู่ก่อนแปลง)
3.ใช้ Format() นำค่าออกมาแสดงผลในรูปแบบที่เราต้องการเช่น d m yy , dd/mm/yy , mmmm yyyy , mmm d yyyy เป็นต้น

*หมายเหตุ สิ่งที่จะเอาไปให้ Cdate() แปลงเป็นระบบวันที่ได้ดีควรจะต้องมี3ส่วนดังนั้นจากที่
ดด/ปป ใน criteria เป็น 0164 ผลลัพธ์ ได้ มิถุนายน 2443
ผมจึงใส่วันที่ 01 เพิ่มเข้าไปให้ Cdate() ทำงานได้อย่างเต็มรูปแบบ
="งวดภาษีเดือน " & Format(CDate("01/" & Left([งวดภาษี ดด/ปป],2) & "/" & Right([งวดภาษี ดด/ปป],2)),"mmmm yyyy")
ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส :prettiness:
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข :ninja:
 
โพสต์นี้ได้รับคำขอบคุณจาก: PNR

08 ก.พ. 64 , 14:38:23
ตอบกลับ #15

PNR

: ใส่ วว/ดด/ปป ใน criteria โดยไม่ต้อง "/"
« ตอบกลับ #15 เมื่อ: 08 ก.พ. 64 , 14:38:23 »
ยอดเยี่ยมมากๆครับ  :love:
อาจจะมีวิธีอื่นๆที่ง่ายกว่านี้ แต่วิธีนี้สาย DIY คิดได้แค่นี้ แต่ก็สามารถนำไปใช้งานได้เหมือนกัน
ส่วน Left , Mid , Right
บางคนเขาก็จะใช้ Mid อย่างเดียวเลยก็ได้เหมือนกัน เพราะมันสามารถกำหนดช่วงของการนับได้ทั้งหมดอยู่แล้ว
แต่ผมใช้ทั้งสามแบบ เพื่ออยากให้ได้ศึกษาการใช้ Function เหล่านี้ไปประยุกต์ใช้กับงานอื่นๆ ต่อได้ครับ
ขอบคุณที่ช่วยอธิบายได้ละเอียดมากๆครับ

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


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