ขอโค้ด บังคับให้ต้องคีย์ข้อมูลช่องแรกก่อนค่ะ
กระทู้เก่าบอร์ด อ.Yeadram

 3,591   17
URL.หัวข้อ / URL
ขอโค้ด บังคับให้ต้องคีย์ข้อมูลช่องแรกก่อนค่ะ

ขอเข้าประเด็นเลยนะคะ
หนูทำฟอร์มสำหรับคีย์ข้อมูลเข้าตารางตามปกติทั่วไปค่ะ
บนฟอร์มดังกล่าว สมมติว่ามีอยู่ 5 ช่อง คือ
ช่องข้อมูลที่ 1
ช่องข้อมูลที่ 2
ช่องข้อมูลที่ 3
ช่องข้อมูลที่ 4
ช่องข้อมูลที่ 5

สิ่งที่หนูอยากได้ก็คือ ต้องการให้มีโค้ดตรวจสอบ ให้ผู้ใช้ต้องคีย์ช่องข้อมูลที่ 1 ก่อน จึงจะคีย์ช่องข้อมูลที่ 2.3.4.5 ได้ หากไม่ทำคามนี้ ก็ให้มี MsgBox แจ้งเตือน แล้วให้เคอร์เซอร์ไปหยุดรอที่ ช่องข้อมูลที่ 1 อะไรทำนองนี้แหละค่ะ

ขอขอบคุณค่ะ

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

1 @R03018
Enabled =false ช่องข้อมูล 2-5 ไว้
ตรวจสอบ ช่องที่1 ว่า มีค่าว่าง หรือ null หรือไม่
ถ้าไม่ใช่
Enable = True ช่องข้อมูล 2-5


วิธีการตรวจสอบ น่าประมาณนี้
if TEXT1<>" " or not isnull(TEXT1) OR not isempty(TEXT1) then
text2.enabled =true
........................
else
msgbox(".................")
text1.setfocus
end if



2 @R03019
ขอบคุณค่ะอาจารย์
Enabled =false ช่องข้อมูล 2-5 ไว้ ส่วนนี้ ทำตรงไหนคะ หนูยังไม่ค่อยเข้าใจค่ะ
3 @R03021
ที่ property ของ TEXTBOX ครับ ถ้าภาษาไทย ก็ตรง คุณสมบัติเรื่อง
ให้ใช้งานได้   
หรือ สั่งด้วย CODE เลยก็ได้ เช่น

Private Sub Form_Load()
TEXT2.Enabled=flase
End Sub
4 @R03022
หนูลองสุ่มทำดูแล้วมัน Error ตามรูปค่ะ



และพอเปลี่ยนเป็น Enable = True มันก็ผ่านทั้งหมดเลยโดยไม่มีการตรวจสอบ คือไม่แจ้งเตือนอะไรเลยค่ะ
รบกวนอาจารย์ช่วยเหลือหนูด้วยนะคะ ว่าผิดตรงไหน
5 @R03024
ตอนแรกมันจะรายงานความผิดพลาดอย่างนี้ก่อนค่ะ



เมื่อหนูคลิกที่ Debug มันก็จะ Error ตามตัวอย่างภาพแรกค่ะ
ลองเอาไปไว้ที่ Private Sub Form_Load() ก็ยังเป็นแบบเดิมค่ะอาจารย์
6 @R03025
(R03022) นั้นใกล้เคียงแล้วครับ แต่ไล่ดูให้ดี
ตรง AFTERUPDATE เป็น TEXT1_AFTERUPDATE
ไม่ใช่ TEXT2

ตรง TEXT2.enabled=false
เป็น TEXT2.enabled=true
7 @R03029
ขอบคุณค่ะอาจารย์ หนูจะลองแก้ไขตามคำแนะนำของท่านนะคะ
แต่ตอนนี้ได้เวลาทำกับข้าวแล้ว ขอไปทำกับข้าวก่อนนะคะ ค่ำๆจะทดลองดูใหม่ค่ะ
8 @R03030
เอ่อ เป็นแม่บ้านด้วย เป็น programer ด้วย!
มีอะไรที่ห??ิงไทยทำไม่ได้อีกนี่
9 @R03032
อาจารย์คะ ลองปรับเปลี่ยนตามที่ท่านแนะนำแล้ว ก็ยังคงไม่ได้เช่นเดิมเลยค่ะ

อิอิ.. ส่วนคำว่าทำกับข้าว ของหนูก็คือ ไปที่หน้าปากซอยแล้วก็หาซื้อกับข้าวเป็นถุงตามที่เราต้องการค่ะ ไม่ใช่มาปรุงเองหรอกนะคะ (ถ้าต้มบะหมี่ซองละก็พอไหวค่ะ)
10 @R03034
ผมลองแล้วมันก็ OK นี่ครับ
ตามโจทย์ คือผม Enabled=false 2-5 ไว้ เพื่อบังคับให้
ต้อง key text1 เท่านั้น(เพราะ Text อื่นๆ ไม่สามารถทำงานได้)
หลัง key text1 จึงให้ 2-5 ทำงานได้ ไม่รู้แนวคิดตรงกันหรือเปล่า
ดังนั้น code มันจึงเป็น

private text1_afterupdate()
if TEXT1<>" " or not isnull(TEXT1) OR not isempty(TEXT1) then
text2.enabled =true
........................
else
msgbox(".................")
text1.setfocus
end if
end sub

ก็น่าจะถูกแล้วนี่ครับ ยกเว้นแนวคิดจะไม่เหมือนกัน
11 @R03035
ใช่ค่ะอาจารย์ แนวคิดตรงกัน
เดี๋ยวหนูจะลอง ค่อยๆทำตามดูใหม่ช้าๆอีกรอบค่ะ เพราะหนูเป็นคนไม่ค่อยละเอียดนัก อาจมีอะไรที่ทำผิดไปโดยไม่รู้ตัวก็ได้ค่ะ   เพราะหนูเคยมีประวัติสะกดคำสั่งผิดไป1ตัวอักษร กว่าจะรู้ว่าผิดก็เล่นเอาเครียดไปหลายวันค่ะ
ยังไงก็ต้องขอขอบคุณอาจารย์อีกครั้งค่ะ
12 @R03036
ยังไม่ได้เลยค่ะอาจารย์
มันไม่มี Error อะไร และก็ไม่มีอะไรเกิดขึ้นด้วยค่ะ คือไม่ว่าจะคีย์ Text1 หรือไม่ก็ตาม มันก็ผ่านได้ตลอด สามารถข้ามไปคีย์ Text2 Text3 ได้เลยโดยไม่มีอะไรเตือนค่ะ
13 @R03037
ขอ email ครับ เดี๋ยวส่งตัวอย่างไปให้
14 @R03038
ลองใช้ if trim(nz(me.text1, "")) <> "" then แทน

ปล. IsEmpty ไม่ต้องเช็คนะครับ IsEmpty เกี่ยวกับตัวแปร ไม่เกี่ยวข้องกับเรื่องค่าของคอลโทรล
15 @R03041
ได้แล้วค่ะ โดยใช้โค้ดของ อ.สันติสุขแล้วมาดัดแปลงเล็กน้อยตามนี้ค่ะ

Private Sub Text2_BeforeUpdate(Cancel As Integer)
If Trim(Nz(Me.Text1, "")) = "" Then
MsgBox (".....คุณยังไม่ได้ใส่ข้อมูลช่องที่1 เลยค่ะ.....")
Me.Undo
End If
End Sub

ต้องเอาโค้ดดังกล่าว ไปใส่ไว่ที่ Text 3,4,5 ด้วยค่ะ ตามนี้

Private Sub Text3_BeforeUpdate(Cancel As Integer)
Private Sub Text4_BeforeUpdate(Cancel As Integer)
Private Sub Text5_BeforeUpdate(Cancel As Integer)

เสร็จเรียบร้อยโรงเรียน www.thai-access.com แล้วนะคะ
ขอบคุณอาจารย์สันติสุข และอาจารย์krathok-man ด้วยค่ะ
16 @R03044
ขออนุญาติ ท่าน krathok-man นะครับ

(text2-5) Enabled(or visible อาจดีกว่า)=false 2-5 กำหนดใว้ตั้งแต่ตอนสร้าง form
กำหนด tab index 0 ให้กับ text1

Private Sub Text1_AfterUpdate()
If Me.Text1 = "" Or Me.Text1 = vbNullString Then Exit Sub
Me.Text2.Enabled = True
Me.Text3.Enabled = True
End Sub

***ถ้าจะนำไปใช้งานจริงต้องเขียน Code มากกว่านี้ ***
17 @R03096
ผมเสนอแนวคิดง่าย ๆ คือ Set value ช่องข้อมูล 2-5 เป็น False ดังนี้
Text2.Enabled=False
Text3.Enabled=False
Text4.Enabled=False
Text5.Enabled=False

เพื่อเป็นการบังคับให้ป้อนในช่องที่ 1 ครับ และในช่อง 1 เขียนคำสั่งใน event
If Isnull([Text1]) then
   Msgbox"โปรดป้อนข้อมูลในช่อง 1ก่อน"
   end if

@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3088s