กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
323 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
ชลบุรี
ผมมี 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"))
ลองพิจารณาดูครับ
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
ชลบุรี
(สงสัย 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
ถ้าเป็น ยน ก็ให้สามารถคีย์ได้จาก 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
ใส่ 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 ครับ
Dim intDayMax As Byte
intDayMax = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
ถ้าเป็นเดือนนี้ ก็จะได้ 31
แล้วค่อยนำค่าที่ได้ไปเทียบกับค่าที่รับมาจาก user ครับ
7 @R06300
ขอขอบพระคุณ อาจารย์ ทุกๆ ท่าน มากๆ ครับ
ผมนำ Code ของ อ.สุภาพ มาแก้ไข Bug ได้แล้วครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
ผมนำ Code ของ อ.สุภาพ มาแก้ไข Bug ได้แล้วครับ
ขอบพระคุณมากๆ ครับ
Suchat
ชลบุรี
Time: 0.1048s