กำหนด criteria Query ด้วย Function แล้ว มีปัญหา



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

25 ก.ค. 61 , 10:34:04
อ่าน 553 ครั้ง

preechaaesanan

รบกวนขอคำชี้แนะ และขออภัย หากมีคำถามแบบนี้แล้วครับผม

มีความจำเป็นต้องใช้การ Query โดยมีเงื่อนไข หลัง WHERE  ที่ต้องใช้ criteria  เป็นการรับค่าจาก หลายๆฟอร์ม  จึงจำเป็นต้องส่งค่ามาเก็บไว้ใน
ตัวแปร ถึงจะสามารถใช้ Query ตัวเดียวกัน เพื่อให้ได้คำตอบ  (หรือเปล่านะ) ไม่งั้น ต้องใช้ Query หลายตัวเพื่อ ให้ได้คำตอบ
เท่าที่รู้คือ ต้องใช้ criteria หลัง Where ที่เป็น ค่าที่ได้มาจาก Function  จึงได้สร้าง Function แบบง่ายๆเพื่อ รับและส่งค่าตัวแปร จาก หลายๆฟอร์ม
มายัง Query ตัวดังกล่าว  ผ่านทาง Function ซึ่ง หากเป็น เงื่อนไขที่ เป็น = จะได้คำตอบปกติ   แต่เมื่อไหร่ ที่ใช้  เป็น Like จะออกค่าว่าง
โดยถ้าทดสอบระบุค่า ตรงๆ หลังเงื่อนไข WHERE จะได้ปกติ
โดยมี่ ตัวอย่าง ดังนี้

######################### Where  invoice_id=ฟังก์ชั่น  แล้ว ใช้งานได้ #######################
กำหนด ตัวแปร
Public strInvid As String

สร้างปุ่มเพื่อรับและส่งค่าเข้าไปเก็บไว้ในตัวแปรก่อน
Private Sub Command0_Click()
 
'รับค่าจาก ฟิลด์ ที่ต้องการ
   strInvid = [invoice_id]
  ' ไหนดูผลหน่อยย 
  MsgBox "" & strInvid, vbOKOnly, "your invoice_id"
End Sub

ส่งค่าไปฝากไว้ใน Function เพื่อ ไปใช้หลัง WHERE
Public Function get_invoice_id() As String
 get_invoice_id = strInvid
End Function

ตัวอย่าง Query ที่ผลลัพธ์ออกปกติ
SELECT invoice_main.invoice_id
FROM invoice_main
WHERE (((invoice_main.invoice_id)=Get_invoice_id()));

#########################  Where  invoice_id  like ฟังก์ชั่น  แล้ว ใช้งานไม่ได้  #####################

กำหนด ตัวแปร
Public strsearch_Invid As String

สร้างปุ่มเพื่อรับและส่งค่าเข้าไปเก็บไว้ในตัวแปรก่อน
Private Sub Command50_Click()
strsearch_Invid = "'NC*'"
MsgBox "" & strsearch_Invid, vbOKOnly, "criteria "

End Sub

ส่งค่าไปฝากไว้ใน Function เพื่อ ไปใช้หลัง WHERE
Public Function drplist_search() As String
 drplist_search = strsearch_Invid
End Function

ตัวอย่าง Query ที่ผลลัพธ์ไม่แสดงค่าใด
SELECT invoice_main.invoice_id
FROM invoice_main
WHERE (((invoice_main.invoice_id) Like drplist_search()));

 

25 ก.ค. 61 , 12:01:25
ตอบกลับ #1

TTT

: กำหนด criteria Query ด้วย Function แล้ว มีปัญหา
« ตอบกลับ #1 เมื่อ: 25 ก.ค. 61 , 12:01:25 »
เท่าที่ดูแนวคิดคุณก็น่าจะใช้ได้นะครับ ยังไม่ได้ลองนะคิดเอาเอง เพียงแต่เท่าที่เห็น Public strInvid As String และ Public strsearch_Invid As String ถ้าประกาศอยู่ที่ฟอร์ม Clase ของ Moudle จะมองไม่เห็นนะครับ ต้องไปประกาศที่ Module ที่เดียวกับฟังก์ชั่นแทน
ฐานข้อมูลเป็นเรื่องใกล้ตัว ใครๆก็ทำฐานข้อมูลเองได้นะครับhttp://www.youtube.com/c/AccessCreator link
 


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