กระทู้เก่าบอร์ด อ.Yeadram
3,591 17
URL.หัวข้อ /
URL
ขอโค้ด บังคับให้ต้องคีย์ข้อมูลช่องแรกก่อนค่ะ
ขอเข้าประเด็นเลยนะคะ
หนูทำฟอร์มสำหรับคีย์ข้อมูลเข้าตารางตามปกติทั่วไปค่ะ
บนฟอร์มดังกล่าว สมมติว่ามีอยู่ 5 ช่อง คือ
ช่องข้อมูลที่ 1
ช่องข้อมูลที่ 2
ช่องข้อมูลที่ 3
ช่องข้อมูลที่ 4
ช่องข้อมูลที่ 5
สิ่งที่หนูอยากได้ก็คือ ต้องการให้มีโค้ดตรวจสอบ ให้ผู้ใช้ต้องคีย์ช่องข้อมูลที่ 1 ก่อน จึงจะคีย์ช่องข้อมูลที่ 2.3.4.5 ได้ หากไม่ทำคามนี้ ก็ให้มี MsgBox แจ้งเตือน แล้วให้เคอร์เซอร์ไปหยุดรอที่ ช่องข้อมูลที่ 1 อะไรทำนองนี้แหละค่ะ
ขอขอบคุณค่ะ
หนูทำฟอร์มสำหรับคีย์ข้อมูลเข้าตารางตามปกติทั่วไปค่ะ
บนฟอร์มดังกล่าว สมมติว่ามีอยู่ 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
2 @R03019
ขอบคุณค่ะอาจารย์
Enabled =false ช่องข้อมูล 2-5 ไว้ ส่วนนี้ ทำตรงไหนคะ หนูยังไม่ค่อยเข้าใจค่ะ
Enabled =false ช่องข้อมูล 2-5 ไว้ ส่วนนี้ ทำตรงไหนคะ หนูยังไม่ค่อยเข้าใจค่ะ
3 @R03021
ที่ property ของ TEXTBOX ครับ ถ้าภาษาไทย ก็ตรง คุณสมบัติเรื่อง
ให้ใช้งานได้
หรือ สั่งด้วย CODE เลยก็ได้ เช่น
Private Sub Form_Load()
TEXT2.Enabled=flase
End Sub
ให้ใช้งานได้
หรือ สั่งด้วย CODE เลยก็ได้ เช่น
Private Sub Form_Load()
TEXT2.Enabled=flase
End Sub
4 @R03022
หนูลองสุ่มทำดูแล้วมัน Error ตามรูปค่ะ
และพอเปลี่ยนเป็น Enable = True มันก็ผ่านทั้งหมดเลยโดยไม่มีการตรวจสอบ คือไม่แจ้งเตือนอะไรเลยค่ะ
รบกวนอาจารย์ช่วยเหลือหนูด้วยนะคะ ว่าผิดตรงไหน
และพอเปลี่ยนเป็น Enable = True มันก็ผ่านทั้งหมดเลยโดยไม่มีการตรวจสอบ คือไม่แจ้งเตือนอะไรเลยค่ะ
รบกวนอาจารย์ช่วยเหลือหนูด้วยนะคะ ว่าผิดตรงไหน
5 @R03024
ตอนแรกมันจะรายงานความผิดพลาดอย่างนี้ก่อนค่ะ
เมื่อหนูคลิกที่ Debug มันก็จะ Error ตามตัวอย่างภาพแรกค่ะ
ลองเอาไปไว้ที่ Private Sub Form_Load() ก็ยังเป็นแบบเดิมค่ะอาจารย์
เมื่อหนูคลิกที่ Debug มันก็จะ Error ตามตัวอย่างภาพแรกค่ะ
ลองเอาไปไว้ที่ Private Sub Form_Load() ก็ยังเป็นแบบเดิมค่ะอาจารย์
6 @R03025
(R03022) นั้นใกล้เคียงแล้วครับ แต่ไล่ดูให้ดี
ตรง AFTERUPDATE เป็น TEXT1_AFTERUPDATE
ไม่ใช่ TEXT2
ตรง TEXT2.enabled=false
เป็น TEXT2.enabled=true
ตรง 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
ก็น่าจะถูกแล้วนี่ครับ ยกเว้นแนวคิดจะไม่เหมือนกัน
ตามโจทย์ คือผม 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ตัวอักษร กว่าจะรู้ว่าผิดก็เล่นเอาเครียดไปหลายวันค่ะ
ยังไงก็ต้องขอขอบคุณอาจารย์อีกครั้งค่ะ
เดี๋ยวหนูจะลอง ค่อยๆทำตามดูใหม่ช้าๆอีกรอบค่ะ เพราะหนูเป็นคนไม่ค่อยละเอียดนัก อาจมีอะไรที่ทำผิดไปโดยไม่รู้ตัวก็ได้ค่ะ เพราะหนูเคยมีประวัติสะกดคำสั่งผิดไป1ตัวอักษร กว่าจะรู้ว่าผิดก็เล่นเอาเครียดไปหลายวันค่ะ
ยังไงก็ต้องขอขอบคุณอาจารย์อีกครั้งค่ะ
12 @R03036
ยังไม่ได้เลยค่ะอาจารย์
มันไม่มี Error อะไร และก็ไม่มีอะไรเกิดขึ้นด้วยค่ะ คือไม่ว่าจะคีย์ Text1 หรือไม่ก็ตาม มันก็ผ่านได้ตลอด สามารถข้ามไปคีย์ Text2 Text3 ได้เลยโดยไม่มีอะไรเตือนค่ะ
มันไม่มี Error อะไร และก็ไม่มีอะไรเกิดขึ้นด้วยค่ะ คือไม่ว่าจะคีย์ Text1 หรือไม่ก็ตาม มันก็ผ่านได้ตลอด สามารถข้ามไปคีย์ Text2 Text3 ได้เลยโดยไม่มีอะไรเตือนค่ะ
13 @R03037
ขอ email ครับ เดี๋ยวส่งตัวอย่างไปให้
14 @R03038
ลองใช้ if trim(nz(me.text1, "")) <> "" then แทน
ปล. IsEmpty ไม่ต้องเช็คนะครับ IsEmpty เกี่ยวกับตัวแปร ไม่เกี่ยวข้องกับเรื่องค่าของคอลโทรล
ปล. 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 ด้วยค่ะ
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 มากกว่านี้ ***
(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
Text2.Enabled=False
Text3.Enabled=False
Text4.Enabled=False
Text5.Enabled=False
เพื่อเป็นการบังคับให้ป้อนในช่องที่ 1 ครับ และในช่อง 1 เขียนคำสั่งใน event
If Isnull([Text1]) then
Msgbox"โปรดป้อนข้อมูลในช่อง 1ก่อน"
end if
Time: 0.3088s
ตรวจสอบ ช่องที่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