การ Query Append กรองค่าตามCombobox



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

23 พ.ค. 61 , 09:17:20
อ่าน 726 ครั้ง

Earth

การ Query Append กรองค่าตามCombobox
« เมื่อ: 23 พ.ค. 61 , 09:17:20 »
สอบถามการQuery Append โดยกรองเงื่อนไขตามComboboxค่ะ
จากกระทู้ https://www.thai-access.com/index.php?topic=196.msg609#msg609 ได้กรองข้อมูลจากQuery มาแสดง

แต่ในกระทู้นี้ในQueryชื่อว่า "StockCard"เพิ่มฟิลด์Remark และทำการAppend Query ไปไว้ในตาราง StockDaily
โดยกรองค่าในฟิลด์ Type OF GOODS ที่Comboboxในหน้าฟอร์มImportFrm ตามรูป



โค้ดในปุ่มViewในหน้าฟอร์ม ImportFrmคือ

โค๊ด: [Select]
CurrentDb.Execute "DELETE FROM StockDaily", dbFailOnError

If Type_cmb = "All" Then
Type_cmb = "*"

'Run Query
On Error GoTo PROC_ERR
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "StockCard"
  DoCmd.SetWarnings True
PROC_ERR:
  DoCmd.SetWarnings True
DoCmd.Close acForm, "ViewStockCard"
DoCmd.OpenForm "ViewStockCard"

Else
DoCmd.OpenForm "ViewStockCard"
End If

และนี่คือหน้าตาฟอร์มที่กรองค่าจากCombobox



ปัญหาคือข้อมูลไม่ได้กรองให้ค่ะ แต่แสดงทั้งหมดแทน
ปล. จากกระทู้เดิมที่ทำสามารถกรองค่าได้ตามข้อมูลนี้เลยค่ะ แต่แค่เอามาปรับแก้ทำAppend Queryเพิ่มขึ้นค่ะ
« แก้ไขครั้งสุดท้าย: 23 พ.ค. 61 , 09:20:35 โดย Earth »

 

23 พ.ค. 61 , 09:55:18
ตอบกลับ #1

pizza_p

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #1 เมื่อ: 23 พ.ค. 61 , 09:55:18 »
ถ้า Type_cmb = "All" มันถึงจะทำ Query StockCard ที่ว่า แต่ถ้า Type_cmb เป็นตัวเลือกอื่นมันก็จะวิ่งมาที่นี่เลย
Else
DoCmd.OpenForm "ViewStockCard"
ก็เลยได้ผลอย่างที่ว่าครับ

 
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

23 พ.ค. 61 , 10:07:28
ตอบกลับ #2

ปิ่นณรงค์

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #2 เมื่อ: 23 พ.ค. 61 , 10:07:28 »
น่าจะเป็นแบบนี้ไหมครับ

โค๊ด: [Select]
If  (Type_cmb) = "All" Then
Type_cmb = "*"
 DoCmd.SetWarnings False
 DoCmd.OpenQuery "StockCard"
 DoCmd.OpenForm "ViewStockCard"
 DoCmd.SetWarnings true
else
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "StockCard"
  DoCmd.OpenForm "ViewStockCard"
  DoCmd.SetWarnings true
end if
เราเปลี่ยนแค่ว่าต้องการกำหนดให้ถ้าเป็น ALL ก็ให้แทนค่าใน Combobox เป็น * ครับ ถ้าเป็นรายการอื่นก็ให้รันคิวรี่และเปิดฟอร์มตามปกติ
« แก้ไขครั้งสุดท้าย: 23 พ.ค. 61 , 10:17:59 โดย ปิ่นณรงค์ »
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Earth

23 พ.ค. 61 , 10:21:27
ตอบกลับ #3

Earth

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #3 เมื่อ: 23 พ.ค. 61 , 10:21:27 »
ขอบคุณค่ะ ทำได้แล้วว

โค๊ด: [Select]
If Type_cmb = "All" Then
Type_cmb = "*"
'Run Query
On Error GoTo PROC_ERR
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "StockCard"
  DoCmd.SetWarnings True
PROC_ERR:
  DoCmd.SetWarnings True
DoCmd.Close acForm, "ViewStockCard"
DoCmd.OpenForm "ViewStockCard"

Else
'Run Query
On Error GoTo PROC_ERR
  DoCmd.SetWarnings False
  DoCmd.OpenQuery "StockCard"
  DoCmd.SetWarnings True
DoCmd.OpenForm "ViewStockCard"
End If

 

28 พ.ค. 61 , 11:35:30
ตอบกลับ #4

Earth

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #4 เมื่อ: 28 พ.ค. 61 , 11:35:30 »
สอบถามจากกระทู้เพิ่มเติมค่ะ
จากรูปด้านล่างในตารางจะมีสินค้าอยู่หลายชนิด(ในกรอบแดงซ้าย)
จึงเพิ่มCombobox เลือกเฉพาะชนิดที่ต้องการ4 ชนิดจากทั้งหมด(ในกรอบแดงขวา)



จากนั้น เมื่อกดปุ่ม 4Type ต้องการให้ Query กรองข้อมูลมาแค่ 4ชนิดนี้เท่านั้น (คือชนิดทั้งหมดในComboboxด้านขวา)
ต้องเขียน CriteriaในQueryยังไงหรอคะ

« แก้ไขครั้งสุดท้าย: 28 พ.ค. 61 , 11:37:50 โดย Earth »

 

28 พ.ค. 61 , 14:42:55
ตอบกลับ #5

pizza_p

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #5 เมื่อ: 28 พ.ค. 61 , 14:42:55 »
มัน fix 4 ตัวนี้หรือเปล่า หรือมีเงื่อนไขอะไรที่จะได้มาซึ่ง 4 ตัวดังกล่าว ถ้าไม่ได้มีเงื่อนไขพิเศษ ก็ hard code ไปเลย เช่น

In ("FG","ACC","ACC-SET","IMPLEMENT")

 

28 พ.ค. 61 , 14:59:12
ตอบกลับ #6

Earth

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #6 เมื่อ: 28 พ.ค. 61 , 14:59:12 »
ไม่ได้ fix 4 ตัวนี้ค่ะ เพราะอาจมีเพิ่มค่าได้ในภายหลัง โดยในComboboxทางด้านขวาค่ามาจากAdd value เข้ามาเองค่ะ
ซึ่งสามารถเพิ่มTypeเพื่อกรองภายหลังได้อีก
ซึ่งจะให้แสดงค่าและพอกดปุ่ม 4Type จะกรองค่าทั้ง4ชนิดเลยค่ะ

 

28 พ.ค. 61 , 16:03:00
ตอบกลับ #7

ปิ่นณรงค์

: การ Query Append กรองค่าตามCombobox
« ตอบกลับ #7 เมื่อ: 28 พ.ค. 61 , 16:03:00 »
กำหนดตารางขึ้นมาเก็บค่า ตารางชื่อ 4Type โดยอาจจะกำหนด Field ชื่อ Type นะครับ แล้วใส่รายการที่ต้องการนำมากรองไว้ได้เลย

ที่ Criteria ใส่
In (select [Type] from [4Type])

รายการจาก Type ทั้งหมดจะถูกนำมากรองสำหรับคิวรี่นั้นครับ
:love: :grin:
 
โพสต์นี้ได้รับคำขอบคุณจาก: Earth


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