รายงานตามเงื่อนไข
กระทู้เก่าบอร์ด อ.Yeadram

 6,315   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

21 @R07712
ไม่ทราบว่า combo แต่ละตัวของท่าน ใช้เชื่อมกับข้อมูลกี่คอลัมน์ มีอะไรบ้าง

แล้วลอง ทำตาม คำตอบที่อาจารย์ให้ทำใน (R07457) มาให้ดูหน่อยครับ เดี่ยวช่วยดูให้ ตรง

เพิ่มบรรทัดนี้
debug.print stWhere
เบรคบรรทัดนี้
' DoCmd.OpenReport "rptJobNo", acViewPreview, , stWhere

End Sub

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


ตามนี้ ครับ คิวรี่ ผม สร้างแบบ อย่างง่าย ตารางมาไง คิวรี่มาอย่างนั้นเลยครับ
23 @R07718
[station] Like '*' AND [station] = rpr AND ([DATE start] BETWEEN forms!frmreport.t39 and forms!frmreport.t41)


rpr คืออะไรหรอครับ
24 @R07719
rpr คือ คำที่ผมใส่ไปในคอม31cเพื่อต้องการให้หา คับ พอกดเรียกรางาน มันจะขึ้นว่าให้ใส่พารามิเตอร์ RPR ต้อง พิม RPR อีกทีมันถึงจะออกมาให้คับ

ในส่วนของวันที่ และ No สามารถ รันได้ปกติ คับ

ขอเมล์ได้ไหม ครับเดียวผมส่งไฟลืให้ดู ของผมใช้ 2007 อยู่ ครับ
25 @R07720
ฝากเมลเข้า gmail บอร์ดได้เลยครับ

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
28 @R07723
ขอบคุณ คุณ Saknoi มากครับตอนนี้ได้เเล้วครับ
มีคำถามเพิ่มครับ ทำไมตัวแปล 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
31 @R08050
ตอบคุณ อนัญญาพรมโคตร
- ใช้คิวรี่เป็นแหล่งข้อมูลครับ ในคิวรี่สามารถระบุเงื่อนไขได้ ให้สร้างคิวรี่ให้เป็นก่อนครับ ลองสร้างคิวรี่แบบมีเงื่อนไขให้เป็นนะครับ แล้วนำคิวรี่นั้นไปสร้างเป็นรายงาน
32 @R08084
ขอบคุณมากๆ เลยนะคะที่ชี้แนะช่วยได้เยอะเลยนะคะ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1869s