Form On Load : Default MM/YYYY on field
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 222   7
URL.หัวข้อ / URL
Form On Load : Default MM/YYYY on field

รบกวน อาจารย์ และเพื่อนๆ ทุกท่านครับ
ผมมี Field ที่กำหนด Format = d/mm/yyyy
เมื่อผมเปิด Form ขึ้นมา อยากให้ Default ที่ Field นี้โชว์
/mm/yyyy เช่น /01/2004
(โดย Cursor จะไปกระพริบตรง Digi แรก ข้างหน้า /mm/yyyy
และ mm/yyyy คือ เดือน และปี ปัจจุบัน
คือผมต้องการประหยัดเวลา User ในการ Key วันที่ครับ เช่น
User Key เลข 3 เมื่อ Enter ก็จะได้ 3/01/2004
User Key เลข 15 เมื่อ Enter ก็จะได้ 15/01/2004
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี

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

1 @R06281
กำหนดค่าเริ่มต้นใน Field เป็น =NOW()
2 @R06284
สมมุติ field ที่ว่านี้ชื่อ Text0...
1. ไม่ต้องกำหนด format ที่ text0 นี้
2. อาจใช้เหตุการณ์ Onload ของ forms หรือ OnGotfogus ของ text0 ตัวนี้
เขียน code ดังนี้ text0 = format(Date(),"/ mm/ yyyy")
3. และใช้เหตุการณ์ AfterUpdate ของ text0 เขียน code ดังนี้
text0=text0 & format(Date(),"/ mm/ yyyy")

หมายเหตุ :
1. ใช้กรอกได้เฉพาะวันที่ในเดือน และปีปัจจุบันเท่านั้น
2. ถ้า text0 ตัวนี้เป็น bound Control ชนิด Date/time อาจจะต้องใช้
ฟังก์ชันแปลงจาก string เป็น Date ครอบอีกครั้งหนึ่ง ดังนี้..
text0=CDate(text0 & format(Date(),"/ mm/ yyyy"))

ลองพิจารณาดูครับ
3 @R06290
จากที่ อ.BADMAN แนะนำมา ผมลองทำตามแล้วยังไม่ได้ครับ
(สงสัย User Error) !!!
ผมลองนำมาดัดแปลงดู สามารถทำได้แล้วครับ แต่ จะพบ Bug ตรงที่
ถ้า User ใส่วันที่ที่ ไม่มีในเดือนนั้นๆ ครับ เช่น ด/ป คือ 02/2004
User Key เลข 31 จะพบ Error ครับ
รบกวน อาจารย์ แนะนำด้วยครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
4 @R06294
ก็อาจจะเขียน code ตรวจสอบเข้ามาคือ ตรวจสอบเดือนปัจจุบันว่าเป็นเดือนอะไร ถ้าเป็นเดือนที่ลงท้ายด้วย คม ก็ให้สามารถคีย์ได้จาก 1-31
ถ้าเป็น ยน ก็ให้สามารถคีย์ได้จาก 1-30 นอกจากนี้ก็ให้สามารถคีย์ได้จาก 1-29(ถ้าอยากตรวจสอบปี อธิกสุรทินอีก ก็จะยิ่งเขียนยาวและยากเข้าไปอีกครับ แล้วแต่คุณ)

หรืออาจจะใช้วิธีนับจำนวนวันในเดือนนั้นๆ ถ้าได้
31 วัน ก็ให้สามารถคีย์ได้จาก 1-31
30 วัน ก็ให้สามารถคีย์ได้จาก 1-30
29 วัน ก็ให้สามารถคีย์ได้จาก 1-29
28 วัน ก็ให้สามารถคีย์ได้จาก 1-28
5 @R06297
ดัดแปลง เอา error มาแสดง MsgBox ซะเลยสิครับ
ใส่ option select case ด้วย ใน MsgBox ว่า
เดือน XX ใส่วันที่ ได้ 1 - 31
เดือน XY ใส่วันที่ ได้ 1 - 30
เดือน YY ใส่วันที่ ได้ 1 - 28
เดือน YX ใส่วันที่ ได้ 1 - 29
6 @R06298
ลองใช้ Day() กับ DateSerial() ช่วยหาวันที่สุดท้ายของเดือนปัจจุบันช่วยด้วยก็ได้ครับ

Dim intDayMax As Byte
intDayMax = Day(DateSerial(Year(Date), Month(Date) + 1, 0))

ถ้าเป็นเดือนนี้ ก็จะได้ 31

แล้วค่อยนำค่าที่ได้ไปเทียบกับค่าที่รับมาจาก user ครับ
7 @R06300
ขอขอบพระคุณ อาจารย์ ทุกๆ ท่าน มากๆ ครับ
ผมนำ Code ของ อ.สุภาพ มาแก้ไข Bug ได้แล้วครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0404s