กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
277 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 เป็นตัวเลข
ไม่ทราบต้องทำอะไรบ้างครับ
ขอบคุณครับ
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
2 @R02696
สิ่งที่ต้องการคือ
1. ให้ผู้ใช้ค้นหารายชื่อนักเรียนโดยการพิมพ์ชื่อจาก text unbound บนเมนฟอร์มและให้แสดงบน subform เพื่อหารหัสและหัองก่อนทำรายการ (ตอนนี้ทำได้แล้ว)
2. เมื่อเจอแล้วให้ดับเบิ้ลคลิกที่เรคคอร์ดบน subform เพื่อให้โปรแกรมตรวจว่ารดับใดนักเรียนอยู่ระดับใดเพื่อจะเลือกเปิดฟอร์มอัตโนมัติ (ตอนนี้ทำได้แล้ว)
*** แต่ในข้อ 1 มีเงื่อนไขว่านักเรียนมีรายการอยู่แล้วหรือไม่(ทำรายการเก็บค่าบำรุงการศึกษาและอื่น ๆ) ถ้ามีแล้วให้เปิดฟอร์มเพื่อแก้ไข ถ้าไม่มีให้เปิดฟอร์มเพื่อทำรายการใหม่
---ปัญหาที่ปวดหัวมาก---
นักเรียนมี 4 ระดับ แต่ละระดับ แต่ละคน รายการที่ต้องชำระไม่เหมือนกัน แล้วสามารถผ่อนชำระได้
แล้วเวลาที่ผู้ปกครองมาชำระบางคนไม่รู้กระทั่งชั้นหรือระดับของนักเรียน
บางรายไม่รู้ว่าลูกเรียนพิเศษอะไรบ้างซื่งจะเสียเวลา ในการค้นหาจากสมุดบัญชีทำรายการมากครับ
ผมเลยทำบิลรายการชำระไว้ล่วงหน้า ซึ่ง status คือ 9 เมื่อผู้ปกครองมาติดต่อก็จะเริ่มจากลำดับจากข้อ 1ครับ
ขอบคุณครับสำหรับคำตอบผมทำมาสองวันแล้วยังไม่ได้เดี๋ยวจะลองไปปรับดูครับ
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
เราจะต้องเขียนคำสั่งแบบใหนครับต้องอ้างเป็นเรคคอร์ดเซ็ทหรือเปล่าครับ
ผมใช้
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
ไม่รู้ว่าตรงกับที่ถามหรือเปล่านะครับ
ถ้าหมายถึงจะตรวจดูว่าจาก
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
ตอนนี้ได้แล้วขอบคุณอีกครั้งครับอาจารย์
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
ตอนนี้ได้แล้วขอบคุณอีกครั้งครับอาจารย์
Time: 0.1309s
ฉะนั้นเราก็จะได้ค่าเป็น True เสมออยู่แล้ว
จึงยังไม่เข้าใจความต้องการที่แท้จริงครับ
อย่างไรก็ตาม เราสามารถใช้ DLookUp() หรือ DCount() ในการหาค่าใน Query ได้ เช่น
DCount("st_id","ชื่อQueryเป้าหมาย","st_id=" & [forms]![main]![payedlist_id_printing] &" And status=9")
ลองดูครับ