หลายๆท่านที่เป็นมือใหม่ในการหัดใช้ MS Acces มักประสบกับปัญหาในเรื่องการใช้ Function ต่างๆในการเอามาเขียนเป็นคำสั่งเพื่อที่จะ Run โปรแกรมให้บรรลุวัตถุประสงค์ตามที่เราต้องการ ปัญหาหนึ่งที่พบบ่อยคือ Function ที่เป็นเงื่อนไข (If Then Else) ยิ่งถ้าซ้อนกันมากๆก็จะยิ่งสับสนว่าควรจะเริ่มต้นด้วยเงื่อนไขอะไรก่อนดี
(ตัวอย่าง 3 เงิ่อนไขในการเขียน Code) เงื่อนไขที่ 1. บังคับให้กรอกข้อความลงในก่องข้อความ ซึ่งใช้เป็น Keywords สำหรับการค้นหา
เงื่อนไขที่ 2. ตรวจสอบว่ามีบัตรจอดรถหมายเลขนี้ในฐานข้อมูลหรือไม่ เงื่อนไขที่ 3. ตรวจสอบว่าที่จอดรถที่กำลังค้นหาอยู่นี้ Available (ว่างอยู่) หรือว่า In use (ถูกใช้จอดไปแล้ว)
Private Sub Command24_Click()
If IsEmpty([Text4]) Or IsNull([Text4]) Then
MsgBox "คุณยังไม่ได้ระบุเลขบัตรจอดรถค่ะ"
Me.Requery
[Text4].SetFocus
Else
If DCount("บัตรจอดรถ", "Query_Ticket_Checking") = 0 Then
MsgBox "ไม่มีบัตรจอดใบนี้ในฐานข้อมูลค่ะ"
Me.Requery
[Text4].SetFocus
Else
If DCount("บัตรจอดรถ" , "Query_InUse_Checking") >0 Then
MsgBox "In use"
Me.Requery
Else
MsgBox "Avialable"
Me.Requery
Text4.SetFocus
End If
End If
End If
End Sub
นอกจากจะใช้การเขียน Code แบบที่แสดงไว้ด้านบนแล้ว ก็ยังมีวิธีอื่นอีก เช่นการสร้าง Event โดยใช้ Object มาเป็นตัวดำเนินการแทน ตัวอย่างเช่น
ครวจสอบเลขบัตรจอดรถโดยใช้ TextBox GotFocus
Private Sub Text7_GotFocus()
If DCount("บัตรจอดรถ", "Query_Ticket_Checking") = 0 Then
MsgBox "ไม่มีบัตรจอดใบนี้ในฐานข้อมูลค่ะ"
Me.Requery
Command13.Visible = False
[Text4].SetFocus
Else
Command13.Visible = True
Command13.SetFocus
End If
End Sub
แล้วตามมาด้วย Command Button (ซึ่งอต่เดิมตั้งค่า Visible ใน Property จาก Yes มาเป็น No แทน) ซึ่งจะโผล่ขึ้นมาให้คลิกก็ต่อเมื่อหมายเลขบัตรจอดรถตรงกับที่มีอยู่ในฐานข้อมูลเท่านั้น
Private Sub Command13_Click()
If DCount("บัตรจอดรถ" , "Query_InUse_Checking") >0 Then
MsgBox "In use"
Me.Requery
Text4.SetFocus
Else
MsgBox "Available"
Me.Requery
Text4.SetFocus
End If
End Sub
สรุปแล้วทั้ง 2 วิธีต่างก็ใช้ได้เหมือนๆกันแล้วแต่ใครจะชอบแบบไหน?
ตัวอย่างไฟล์ Access ตามกระทู้ครับ
ทุกปัญหาย่อมมีทางออกเสมอ
หลายๆท่านที่เป็นมือใหม่ในการหัดใช้ MS Acces มักประสบกับปัญหาในเรื่องการใช้ Function ต่างๆในการเอามาเขียนเป็นคำสั่งเพื่อที่จะ Run โปรแกรมให้บรรลุวัตถุประสงค์ตามที่เราต้องการ ปัญหาหนึ่งที่พบบ่อยคือ Function ที่เป็นเงื่อนไข (If Then Else) ยิ่งถ้าซ้อนกันมากๆก็จะยิ่งสับสนว่าควรจะเริ่มต้นด้วยเงื่อนไขอะไรก่อนดี
(ตัวอย่าง 3 เงิ่อนไขในการเขียน Code) เงื่อนไขที่ 1. บังคับให้กรอกข้อความลงในก่องข้อความ ซึ่งใช้เป็น Keywords สำหรับการค้นหา
เงื่อนไขที่ 2. ตรวจสอบว่ามีบัตรจอดรถหมายเลขนี้ในฐานข้อมูลหรือไม่ เงื่อนไขที่ 3. ตรวจสอบว่าที่จอดรถที่กำลังค้นหาอยู่นี้ Available (ว่างอยู่) หรือว่า In use (ถูกใช้จอดไปแล้ว)
Private Sub Command24_Click()
If IsEmpty([Text4]) Or IsNull([Text4]) Then
MsgBox "คุณยังไม่ได้ระบุเลขบัตรจอดรถค่ะ"
Me.Requery
[Text4].SetFocus
Else
If DCount("บัตรจอดรถ", "Query_Ticket_Checking") = 0 Then
MsgBox "ไม่มีบัตรจอดใบนี้ในฐานข้อมูลค่ะ"
Me.Requery
[Text4].SetFocus
Else
If DCount("บัตรจอดรถ" , "Query_InUse_Checking") >0 Then
MsgBox "In use"
Me.Requery
Else
MsgBox "Avialable"
Me.Requery
Text4.SetFocus
End If
End If
End If
End Sub
นอกจากจะใช้การเขียน Code แบบที่แสดงไว้ด้านบนแล้ว ก็ยังมีวิธีอื่นอีก เช่นการสร้าง Event โดยใช้ Object มาเป็นตัวดำเนินการแทน ตัวอย่างเช่น
ครวจสอบเลขบัตรจอดรถโดยใช้ TextBox GotFocus
Private Sub Text7_GotFocus()
If DCount("บัตรจอดรถ", "Query_Ticket_Checking") = 0 Then
MsgBox "ไม่มีบัตรจอดใบนี้ในฐานข้อมูลค่ะ"
Me.Requery
Command13.Visible = False
[Text4].SetFocus
Else
Command13.Visible = True
Command13.SetFocus
End If
End Sub
แล้วตามมาด้วย Command Button (ซึ่งอต่เดิมตั้งค่า Visible ใน Property จาก Yes มาเป็น No แทน) ซึ่งจะโผล่ขึ้นมาให้คลิกก็ต่อเมื่อหมายเลขบัตรจอดรถตรงกับที่มีอยู่ในฐานข้อมูลเท่านั้น
Private Sub Command13_Click()
If DCount("บัตรจอดรถ" , "Query_InUse_Checking") >0 Then
MsgBox "In use"
Me.Requery
Text4.SetFocus
Else
MsgBox "Available"
Me.Requery
Text4.SetFocus
End If
End Sub
สรุปแล้วทั้ง 2 วิธีต่างก็ใช้ได้เหมือนๆกันแล้วแต่ใครจะชอบแบบไหน? ตัวอย่างไฟล์ Access ตามกระทู้ครับ