กระทู้เก่าบอร์ด อ.Yeadram
6,646 32
URL.หัวข้อ /
URL
รายงานตามเงื่อนไข
อยากเปิดรายงานตามเงื่อนไข ตามรูปครับ โดยที่
คอมโบ เลือกบริษัท = cbo1
คอมโบ เลือกสาขา = cbo2
คอมโบ เลือกพนักงาน = cbo3
คอมมานด์ เปิดรายงาน = cmdopen
เทกบอกซ์ วันเริ่มต้น = txtstrat
เทกบอกซ์ วันสิ้นสุด = txtend
รายงานจากคิวรี่เดี่ยวกัน ประกอบด้วย
jobid date cus branch service
เงื่อนไข
1. เมื่อเลือก บริษัท ไม่เลือกอย่างอื่น ก็เปิดรายงานเกี่ยวกับบริษัทที่เลือกทั้งหมด
และกรณีเดียวกัน เมื่อเลือก คอมโบอื่น ๆ
2 เมื่อ เลือก 2 คอมโบ ก็ให้เปิดรายงานตามเงือนไขที่เลือก
3 เมื่อเลือกวันที่ ต้องใส่วันที่เริ่มต้น และวันที่สิ้นสุด โดยตรวจสอบคอมโบ ด้านบนว่ามีการเลือกหรือไม่ ถ้าเลือกก็นำมาใส่ในเงือนไขด้วย แล้วเปิดรายงาน
ต้องเขียนโค้ดอย่างไรครับ หรือว่าต้องใช้ อะไรในการต้องการเงือนไขอย่างนี้ครับ
รบกวนด้วยครับ
ขอบคุณครับ
32 Reply in this Topic. Dispaly 2 pages and you are on page number 2
22 @R07716
[station] Like '*' AND [station] = rpr AND ([DATE start] BETWEEN forms!frmreport.t39 and forms!frmreport.t41)
ผมมี หนึ่งตาราง ชื่อ all data
Form เรียกรายงานชื่อ Frmreport
มี textbox ชื่อ t39 เชื่อมต่อวันเริ่มต้น และ textbox ชื่อ t41 เชื่อมต่อวันสิ้นสุด
มีคอมโบ cb31 เชื่อมต่อ station
มีคอมโบ cb 33 เชื่อมต่อ No.
มีคอมโบ Cb 35 เชื่อมต่อ Equipment
รายงานชื่อ all data query
ตามนี้ ครับ คิวรี่ ผม สร้างแบบ อย่างง่าย ตารางมาไง คิวรี่มาอย่างนั้นเลยครับ
ผมมี หนึ่งตาราง ชื่อ all data
Form เรียกรายงานชื่อ Frmreport
มี textbox ชื่อ t39 เชื่อมต่อวันเริ่มต้น และ textbox ชื่อ t41 เชื่อมต่อวันสิ้นสุด
มีคอมโบ cb31 เชื่อมต่อ station
มีคอมโบ cb 33 เชื่อมต่อ No.
มีคอมโบ Cb 35 เชื่อมต่อ Equipment
รายงานชื่อ all data query
ตามนี้ ครับ คิวรี่ ผม สร้างแบบ อย่างง่าย ตารางมาไง คิวรี่มาอย่างนั้นเลยครับ
23 @R07718
[station] Like '*' AND [station] = rpr AND ([DATE start] BETWEEN forms!frmreport.t39 and forms!frmreport.t41)
rpr คืออะไรหรอครับ
rpr คืออะไรหรอครับ
24 @R07719
rpr คือ คำที่ผมใส่ไปในคอม31cเพื่อต้องการให้หา คับ พอกดเรียกรางาน มันจะขึ้นว่าให้ใส่พารามิเตอร์ RPR ต้อง พิม RPR อีกทีมันถึงจะออกมาให้คับ
ในส่วนของวันที่ และ No สามารถ รันได้ปกติ คับ
ขอเมล์ได้ไหม ครับเดียวผมส่งไฟลืให้ดู ของผมใช้ 2007 อยู่ ครับ
ในส่วนของวันที่ และ No สามารถ รันได้ปกติ คับ
ขอเมล์ได้ไหม ครับเดียวผมส่งไฟลืให้ดู ของผมใช้ 2007 อยู่ ครับ
25 @R07720
ฝากเมลเข้า gmail บอร์ดได้เลยครับ
user : accboard
pass: accgmail
ครับ
user : accboard
pass: accgmail
ครับ
26 @R07721
ส่งแล้วครับ อยู่ที่ จม ร่าง ครับ subject ช่วยดูหน่อยครับไฟล์งานชื่อ test report คับ
27 @R07722
แก้โค้ดใหม่ ตามนี้ครับ
Sub cmdOpen_click()
Dim stWhere As String
stWhere = "[Work order] Like '*'"
If Cb33 <> "" Then stWhere = stWhere & " AND [equipment] like '" & Cb33 & "'"
If Cb35 <> "" Then stWhere = stWhere & " AND [no] like '" & Cb35 & "'"
If Cb31 <> "" Then stWhere = stWhere & " AND [station] '" & Cb31 & "'"
If T39 <> "" Then
If T41 = "" Or T41 < T39 Then
T41.SetFocus
Exit Sub
End If
stWhere = stWhere & " AND ([DATE start] BETWEEN forms!frmreport.t39 and forms!frmreport.t41)"
ElseIf T41 <> "" Then
T39.SetFocus
Exit Sub
End If
'Debug.Print stWhere
DoCmd.OpenReport "All Data Query", acViewPreview, , stWhere
End Sub
Sub cmdOpen_click()
Dim stWhere As String
stWhere = "[Work order] Like '*'"
If Cb33 <> "" Then stWhere = stWhere & " AND [equipment] like '" & Cb33 & "'"
If Cb35 <> "" Then stWhere = stWhere & " AND [no] like '" & Cb35 & "'"
If Cb31 <> "" Then stWhere = stWhere & " AND [station] '" & Cb31 & "'"
If T39 <> "" Then
If T41 = "" Or T41 < T39 Then
T41.SetFocus
Exit Sub
End If
stWhere = stWhere & " AND ([DATE start] BETWEEN forms!frmreport.t39 and forms!frmreport.t41)"
ElseIf T41 <> "" Then
T39.SetFocus
Exit Sub
End If
'Debug.Print stWhere
DoCmd.OpenReport "All Data Query", acViewPreview, , stWhere
End Sub
28 @R07723
ขอบคุณ คุณ Saknoi มากครับตอนนี้ได้เเล้วครับ
มีคำถามเพิ่มครับ ทำไมตัวแปล stwhere ถึงใช้ work order ครับ
ถ้าวันข้างหน้าผมต้องการหา work order ด้วยจะมีผลอะไรไหม คับ
มีคำถามเพิ่มครับ ทำไมตัวแปล stwhere ถึงใช้ work order ครับ
ถ้าวันข้างหน้าผมต้องการหา work order ด้วยจะมีผลอะไรไหม คับ
29 @R08047
ขอสอบถามด้วยคนค่ะ อยากถามการรายงานตามเงื่อนไข เช่น ต้องการแสดงข้อมูลสมาชิก แบ่งตามเขตตำบล อำเภอ โดยต้องการให้รายงานเฉพาะตำบลหรือ อำเภอที่ต้องการเท่านั้นค่ะ ไม่ทราบว่าทำอย่างไรคะ
30 @R08049
ตอบคุณ มือใหม่ (ไม่ควรใช้นามแฝงนี้)
ทำไมถึงต้องใช้ work order
เพราะว่าเราต้องการหาตัวเริ่มต้น ในสายอักขระ เพื่อจะนำไปเป็นเงื่อนไขครับ
ถ้าเราไม่ระบุคำเริ่มต้นให้มัน เราจะต่อสายอักขระได้ลำบาก คือเราต้องตรวจสอบทุกๆ คอมโบ ว่า ก่อนนี้ เคยมีสายอักขระแล้วหรือยัง ถ้ามีแล้ว ให้ต่อด้วยคำว่า AND ถ้ายังไม่มี เราต้องเริ่มต่อเองใหม่ ซึ่งต้องทำทุกๆ คอมโบ ครับ
อย่างนี้ เป็นต้น
Dim stWhere As String
stWhere =""
If Cb33 <> "" Then
if stWhere <> "" then
stWhere = stWhere & " AND [equipment] like '" & Cb33 & "'"
else
stwhere = "[equipment] like '" & Cb33 & "'"
end if
end if
If Cb35 <> "" Then
if stWhere <>"" then
stWhere = stWhere & " AND [no] like '" & Cb35 & "'"
else
stWhere = "[no] like '" & Cb35 & "'"
end if
end if
If Cb31 <> "" Then
if stWhere <>"" then
stWhere = stWhere & " AND [station] '" & Cb31 & "'"
else
stWhere = "[station] '" & Cb31 & "'"
end if
end if
ทำไมถึงต้องใช้ work order
เพราะว่าเราต้องการหาตัวเริ่มต้น ในสายอักขระ เพื่อจะนำไปเป็นเงื่อนไขครับ
ถ้าเราไม่ระบุคำเริ่มต้นให้มัน เราจะต่อสายอักขระได้ลำบาก คือเราต้องตรวจสอบทุกๆ คอมโบ ว่า ก่อนนี้ เคยมีสายอักขระแล้วหรือยัง ถ้ามีแล้ว ให้ต่อด้วยคำว่า AND ถ้ายังไม่มี เราต้องเริ่มต่อเองใหม่ ซึ่งต้องทำทุกๆ คอมโบ ครับ
อย่างนี้ เป็นต้น
Dim stWhere As String
stWhere =""
If Cb33 <> "" Then
if stWhere <> "" then
stWhere = stWhere & " AND [equipment] like '" & Cb33 & "'"
else
stwhere = "[equipment] like '" & Cb33 & "'"
end if
end if
If Cb35 <> "" Then
if stWhere <>"" then
stWhere = stWhere & " AND [no] like '" & Cb35 & "'"
else
stWhere = "[no] like '" & Cb35 & "'"
end if
end if
If Cb31 <> "" Then
if stWhere <>"" then
stWhere = stWhere & " AND [station] '" & Cb31 & "'"
else
stWhere = "[station] '" & Cb31 & "'"
end if
end if
31 @R08050
ตอบคุณ อนัญญาพรมโคตร
- ใช้คิวรี่เป็นแหล่งข้อมูลครับ ในคิวรี่สามารถระบุเงื่อนไขได้ ให้สร้างคิวรี่ให้เป็นก่อนครับ ลองสร้างคิวรี่แบบมีเงื่อนไขให้เป็นนะครับ แล้วนำคิวรี่นั้นไปสร้างเป็นรายงาน
- ใช้คิวรี่เป็นแหล่งข้อมูลครับ ในคิวรี่สามารถระบุเงื่อนไขได้ ให้สร้างคิวรี่ให้เป็นก่อนครับ ลองสร้างคิวรี่แบบมีเงื่อนไขให้เป็นนะครับ แล้วนำคิวรี่นั้นไปสร้างเป็นรายงาน
32 @R08084
ขอบคุณมากๆ เลยนะคะที่ชี้แนะช่วยได้เยอะเลยนะคะ
Time: 0.3072s
แล้วลอง ทำตาม คำตอบที่อาจารย์ให้ทำใน (R07457) มาให้ดูหน่อยครับ เดี่ยวช่วยดูให้ ตรง
เพิ่มบรรทัดนี้
debug.print stWhere
เบรคบรรทัดนี้
' DoCmd.OpenReport "rptJobNo", acViewPreview, , stWhere
End Sub