จะเช็คค่าในคิวริ่โดยไม่ต้องเปิดได้หรือไม่ครับ
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 227   5
URL.หัวข้อ / URL
จะเช็คค่าในคิวริ่โดยไม่ต้องเปิดได้หรือไม่ครับ

เมื่อคลิกให้รัน sql ด้านล่างนี้
SELECT payedlist_st.payedlist_id, payedlist_st.st_id, std.stname, std.stlastname, payedlist_st.status
FROM std INNER JOIN payedlist_st ON std.st_id = payedlist_st.st_id
WHERE (((payedlist_st.st_id)=[forms]![main]![payedlist_id_printing]) AND ((payedlist_st.status)=9));

สิ่งที่ต้องการ คือคลิ๊กปุ่มบนเมนฟอร์ม
payedlist_st.st_id มีค่าเท่ากับเท็กบ๊อกซ์บนเมนฟอร์ม และ
payedlist_st.status = 9 หรือไม่

ถ้าใช่ msgbox "รายการนี้ยังไม่ได้ชำระ"

ถ้าไม่ใช่ msgbox "ไม่มีรายการนี้ต้องทำใหม่"

*** st_id เป็นตัวเลข status เป็นตัวเลข
ไม่ทราบต้องทำอะไรบ้างครับ

ขอบคุณครับ

5 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R02695
เนื่องจากเงื่อนไขใน SQL ของ Query ที่ให้มาจะดูค่าจาก [forms]![main]![payedlist_id_printing]) และ payedlist_st.status = 9 อยู่แล้ว

ฉะนั้นเราก็จะได้ค่าเป็น True เสมออยู่แล้ว

จึงยังไม่เข้าใจความต้องการที่แท้จริงครับ

อย่างไรก็ตาม เราสามารถใช้ DLookUp() หรือ DCount() ในการหาค่าใน Query ได้ เช่น

DCount("st_id","ชื่อQueryเป้าหมาย","st_id=" & [forms]![main]![payedlist_id_printing] &" And status=9")

ลองดูครับ



2 @R02696
สิ่งที่ต้องการคือ
1. ให้ผู้ใช้ค้นหารายชื่อนักเรียนโดยการพิมพ์ชื่อจาก text unbound บนเมนฟอร์มและให้แสดงบน subform เพื่อหารหัสและหัองก่อนทำรายการ (ตอนนี้ทำได้แล้ว)
2. เมื่อเจอแล้วให้ดับเบิ้ลคลิกที่เรคคอร์ดบน subform เพื่อให้โปรแกรมตรวจว่ารดับใดนักเรียนอยู่ระดับใดเพื่อจะเลือกเปิดฟอร์มอัตโนมัติ (ตอนนี้ทำได้แล้ว)

*** แต่ในข้อ 1 มีเงื่อนไขว่านักเรียนมีรายการอยู่แล้วหรือไม่(ทำรายการเก็บค่าบำรุงการศึกษาและอื่น ๆ) ถ้ามีแล้วให้เปิดฟอร์มเพื่อแก้ไข ถ้าไม่มีให้เปิดฟอร์มเพื่อทำรายการใหม่

---ปัญหาที่ปวดหัวมาก---
นักเรียนมี 4 ระดับ แต่ละระดับ แต่ละคน รายการที่ต้องชำระไม่เหมือนกัน แล้วสามารถผ่อนชำระได้
แล้วเวลาที่ผู้ปกครองมาชำระบางคนไม่รู้กระทั่งชั้นหรือระดับของนักเรียน
บางรายไม่รู้ว่าลูกเรียนพิเศษอะไรบ้างซื่งจะเสียเวลา ในการค้นหาจากสมุดบัญชีทำรายการมากครับ
ผมเลยทำบิลรายการชำระไว้ล่วงหน้า ซึ่ง status คือ 9 เมื่อผู้ปกครองมาติดต่อก็จะเริ่มจากลำดับจากข้อ 1ครับ

ขอบคุณครับสำหรับคำตอบผมทำมาสองวันแล้วยังไม่ได้เดี๋ยวจะลองไปปรับดูครับ
3 @R02697
ขอบคุณครับได้แล้วครับอาจารย์
ผมใช้
cou=DCount("st_id", "ชื่อQueryเป้าหมาย", "st_id=" & [forms]![main]![payedlist_id_printing] &" And status=9")

if cou>1 >0 then ' มีการทำรายไว้ล่วงหน้าแล้ว
คำสั่งเปิดฟอร์มทำรายการแก้ไข
else
คำสั่งเปิดฟอร์มเพื่อทำรายการใหม่
end if

*** แต่ยังอยากรู้ว่าจาก คำสั่ง sql ที่ตั้งกระทู้ว่าเราจะเช็ค ค่า True หรือ False
เราจะต้องเขียนคำสั่งแบบใหนครับต้องอ้างเป็นเรคคอร์ดเซ็ทหรือเปล่าครับ
4 @R02699
True หรือ False ของอะไรครับ

ถ้าหมายถึงจะตรวจดูว่าจาก

SELECT payedlist_st.payedlist_id, payedlist_st.st_id, std.stname, std.stlastname, payedlist_st.status
FROM std INNER JOIN payedlist_st ON std.st_id = payedlist_st.st_id
WHERE (((payedlist_st.st_id)=[forms]![main]![payedlist_id_printing]) AND ((payedlist_st.status)=9));

มีข้อมูลอยู่หรือไม่

ถ้าไม่ใช้ DCount() เหมือนที่ทำได้แล้ว ก็ใช้การเปิด Recordsset ก็ได้ครับ

ปรับใหม่เป็น

Dim dbs As Object, strSQL As String, rst As Object
Set dbs = CurrentDb
strSQL = "SELECT Count(*) " _
& "FROM std INNER JOIN payedlist_st ON std.st_id = payedlist_st.st_id " _
& "WHERE (((payedlist_st.st_id)=" & [forms]![main]![payedlist_id_printing] & ") AND ((payedlist_st.status)=9));"
Set rst = dbs.Openrecordset(strSQL)
If rst(0) > 0 Then
....
End If

ไม่รู้ว่าตรงกับที่ถามหรือเปล่านะครับ
5 @R02715
ขอบคุณครับอาจารย์ใช่เลยครับ ผมจะนำไปประยุกต์เป็น
Dim dbs As Object, strSQL As String, rst As Object
Set dbs = CurrentDb
strSQL = "SELECT Count(*) " _
& "FROM std INNER JOIN payedlist_st ON std.st_id = payedlist_st.st_id " _
& "WHERE (((payedlist_st.st_id)=" & [forms]![main]![payedlist_id_printing] & ") AND ((payedlist_st.status)=9));"
Set rst = dbs.Openrecordset(strSQL)
If rst(0) > 0 Then
msgbox "รหัสนัเรียนคนนี้มีการทำบิล" & rst(0) & "รายการ"
เปิดฟอร์มเป้าหมายเพื่ออแก้ไข
else
เปิดฟอร์มเป้าหมายเพื่อทำรายการใหม่
end if

ตอนนี้ได้แล้วขอบคุณอีกครั้งครับอาจารย์
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.0753s