criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม


0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้

12 ม.ค. 67 , 10:56:11
อ่าน 417 ครั้ง

อนุพงศ์ ปาปะแพ

  • สมาชิกไท.Access
  • กระทู้: 4

    • ดูรายละเอียด

สวัสดีครับเทพ Access ทุกท่าน ผมมือใหม่เพิ่งหัดเขียน Acces ครับ พอดีติดปัญหาเรื่อง criteria รับค่าจาก Textbox ครับ
ชื่อฟอร์ม = Sell
ชื่อ Textbox = criteria
ใน Query ที่ต้องการใส่ค่าใน criteria ผมให้ไปรับค่า ดังนี้
[Forms]![Sell]![criteria]

ค่าที่ต้องการใส่ใน criteria คือ ค่าว่าง กับ >0
จากการที่ได้ลองใส่ค่าใน Textbox ในฟอร์ม ผลที่ได้คือ
1. ไม่ใส่ค่าอะไรเลย = ไม่มีรายการอะไรแสดงขึ้นมา (ทำงานไม่ถูกต้อง) ถ้าเอาค่าไปใส่ใน criteria ตรงๆ จะแสดงรายการทั้งหมด
2. ใส่ค่า >0 = ไม่มีรายการอะไรแสดงขึ้นมา (ทำงานไม่ถูกต้อง) ถ้าเอาค่าไปใส่ใน criteria ตรงๆ จะแสดงรายการที่มากกว่า 0
3. ใส่ค่า 0 = มีรายการที่เป็น 0 แสดงขึ้นมา (ทำงานถูกต้อง) ถ้าเอาค่าไปใส่ใน criteria ตรงๆ จะแสดงรายเฉพาะที่เป็น 0
แบบนี้ผมควรต้องแกไขตรงไหนครับ
และถ้าผมอยากใช้ปุ่ม ToggleButton
ให้เวลาสถานะกดแล้ว ไปใส่ค่าใน criteria เป็นค่าว่างที่ไม่ใส่อะไรเลย
กับให้เวลาสถานะไม่ได้กด แล้วไปใส่ค่าใน criteria ให้เป็น >0
พอจะเป็นไปได้หรือเปล่าครับ

ต้องรบกวนด้วยนะครับ พยายามหาข้อมูลวิธีแก้ปัญหานี้แล้ว แต่ไม่เจอ จึงต้องมาขอสอนถามในเว็บครับ
ขอบคุณครับ

 

13 ม.ค. 67 , 21:38:23
ตอบกลับ #1

OddyWriter

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #1 เมื่อ: 13 ม.ค. 67 , 21:38:23 »
จนถึงตอนนี้ อ่านแล้วก็ไม่เข้าใจว่าต้องการอะไร

เดาว่าน่าจะต้องใช้ Validation Rule และ Validation Text มีทั้งใน Text Box และในตาราง เลือกเอาว่าจะใช้ที่ไหน
แต่กำหนดอย่างไร ทำให้ไม่ได้ เพราะไม่รู้ว่าต้องการอย่างไร

รับจ้างทำฐานข้อมูล สอนวางระบบฐานข้อมูล Excel/ Access/ VBA Excel/ VBA Access/ SQL Server/ Database Design
แม้กระทั่งดูดวง ก็ติดต่อได้นะครับ
 

15 ม.ค. 67 , 08:35:41
ตอบกลับ #2

อนุพงศ์ ปาปะแพ

  • สมาชิกไท.Access
  • กระทู้: 4

    • ดูรายละเอียด

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #2 เมื่อ: 15 ม.ค. 67 , 08:35:41 »
จนถึงตอนนี้ อ่านแล้วก็ไม่เข้าใจว่าต้องการอะไร

เดาว่าน่าจะต้องใช้ Validation Rule และ Validation Text มีทั้งใน Text Box และในตาราง เลือกเอาว่าจะใช้ที่ไหน
แต่กำหนดอย่างไร ทำให้ไม่ได้ เพราะไม่รู้ว่าต้องการอย่างไร



ขอโทษด้วยที่ทำให้อ่านไม่เข้าใจนะครับ เลยทำตัวอย่างมาให้ครับ

 

16 ม.ค. 67 , 13:07:01
ตอบกลับ #3

UnKnown

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #3 เมื่อ: 16 ม.ค. 67 , 13:07:01 »
ทดลองเอาไฟล์ของท่านไปตีโจทย์แล้วทำการแก้ไขดังนี้
1.เอา [Forms]![Sell]![criteria] ใน Query ออก
2.แก้ชื่อซัพฟอร์มจากเดิม ฟอร์มย่อย Sell Query เป็น Sell_Query 'ป้องกันปัญหาภาษาไทย+ช่องว่าง
3.แก้ VBA เป็น
โค๊ด: [Select]
Private Sub criteria_AfterUpdate()
    If IsNull(Me.criteria) Then
        Me.Sell_Query.Form.FilterOn = False
        Me.Sell_Query.Form.Refresh
    ElseIf Me.criteria = 0 Then
        Me.Sell_Query.Form.Filter = "[Bal] = " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
    Else
        Me.Sell_Query.Form.Filter = "[Bal] >= " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
    End If
End Sub

สิ่งที่ได้
- ไม่ใส่ค่าอะไรเลย = จะแสดงรายการทั้งหมด
- ใส่ค่า 0 = แสดงเฉพาะรายการที่มีค่า Bal เท่ากับ 0
- ใส่ค่า >0 เช่น
[1] แสดง 2,10
[2] แสดง 2,10
[10] แสดง 10
« แก้ไขครั้งสุดท้าย: 16 ม.ค. 67 , 18:04:07 โดย UnKnown »
:ninja:     ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข
 
โพสต์นี้ได้รับคำขอบคุณจาก: อนุพงศ์ ปาปะแพ

17 ม.ค. 67 , 10:17:50
ตอบกลับ #4

อนุพงศ์ ปาปะแพ

  • สมาชิกไท.Access
  • กระทู้: 4

    • ดูรายละเอียด

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #4 เมื่อ: 17 ม.ค. 67 , 10:17:50 »
ทดลองเอาไฟล์ของท่านไปตีโจทย์แล้วทำการแก้ไขดังนี้
1.เอา [Forms]![Sell]![criteria] ใน Query ออก
2.แก้ชื่อซัพฟอร์มจากเดิม ฟอร์มย่อย Sell Query เป็น Sell_Query 'ป้องกันปัญหาภาษาไทย+ช่องว่าง
3.แก้ VBA เป็น
โค๊ด: [Select]
Private Sub criteria_AfterUpdate()
    If IsNull(Me.criteria) Then
        Me.Sell_Query.Form.FilterOn = False
        Me.Sell_Query.Form.Refresh
    ElseIf Me.criteria = 0 Then
        Me.Sell_Query.Form.Filter = "[Bal] = " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
    Else
        Me.Sell_Query.Form.Filter = "[Bal] >= " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
    End If
End Sub

สิ่งที่ได้
- ไม่ใส่ค่าอะไรเลย = จะแสดงรายการทั้งหมด
- ใส่ค่า 0 = แสดงเฉพาะรายการที่มีค่า Bal เท่ากับ 0
- ใส่ค่า >0 เช่น
[1] แสดง 2,10
[2] แสดง 2,10
[10] แสดง 10


ขอบคุณมากครับ ใช้ได้แล้วครับ
ผมขอถามเพิ่มเติมนะครับ แล้วถ้าต้องการให้ค่าเริ่มต้นเป็น 1 ละครับ คือเริ่มต้นมาให้ Bal แสดงค่าที่ไม่ใช่ 0
ลักษณะการใช้งานจริงคือ โดยปกติแล้วจะให้โชว์รายการสินค้าที่มีของครับ
แต่มีบางครั้งที่ต้องการโชว์รายการสินค้าที่ไม่มีของ (0) หรือโชว์ทั้งหมด
ขอบคุณครับ

 

17 ม.ค. 67 , 10:58:50
ตอบกลับ #5

UnKnown

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #5 เมื่อ: 17 ม.ค. 67 , 10:58:50 »
เพิ่ม VBA ให้เมื่อเปิดฟอร์ม criteria = 1 แล้วทำการกรองข้อมูล
โค๊ด: [Select]
Private Sub Form_Load()
        Me.criteria = 1
        Me.Sell_Query.Form.Filter = "[Bal] >= " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
End Sub
:ninja:     ลองคิด,ลองทำแนวคนไม่เก่งแอคเซส
หมายเหตุ เพื่อความปลอดภัยโปรดสำรองข้อมูลใว้ก่อนการแก้ไข
 
โพสต์นี้ได้รับคำขอบคุณจาก: อนุพงศ์ ปาปะแพ

17 ม.ค. 67 , 12:47:10
ตอบกลับ #6

อนุพงศ์ ปาปะแพ

  • สมาชิกไท.Access
  • กระทู้: 4

    • ดูรายละเอียด

: criteria ไม่รับค่า ว่าง กับ >0 จาก Textbox ในฟอร์ม
« ตอบกลับ #6 เมื่อ: 17 ม.ค. 67 , 12:47:10 »
เพิ่ม VBA ให้เมื่อเปิดฟอร์ม criteria = 1 แล้วทำการกรองข้อมูล
โค๊ด: [Select]
Private Sub Form_Load()
        Me.criteria = 1
        Me.Sell_Query.Form.Filter = "[Bal] >= " & Me.criteria
        Me.Sell_Query.Form.FilterOn = True
        Me.Sell_Query.Form.Refresh
End Sub

ขอบคุณมากนะครับ ผมจะจดและจำและนำไปใช้ครับ รวมถึงการพัฒนาความรู้เพื่อนำไปต่อยอดด้วยครับ

 


บอร์ดเรียนรู้ Access สำหรับคนไทย


 

Sitemap 1 2 3 4 5