ขอตอบรายละเอียดเพิ่มเติม ดังนี้นะค่ะ
1. เตือน user owner เตือนกี่ครั้ง ในที่นี้ คือ 3 ครั้ง <== อาจจะมากกว่า 3 ครั้งหากยังไม่ทำการ update document
2. check document ที่ไม่เคย update อันนี้ถามกว้างมากครับ แล้วจะเอาอะไรมาจับว่าไม่ update <=== อันนี้ คิดอยู่เหมือนกันค่ะ เลยไม่สนใจว่าจะupdate field ไหน ขอให้มีการเข้าไปทำการ update document ก็พอ
3. เตือน user ที่เป็น manager แสดงว่า เป็น manager ที่ fix รายชื่อ หรือว่า ระบบ ต้องไป find หา อีกว่า owner คนนั้น มี line manager ใครบ้างที่ติดตัว อันนี้ ต้องมี database organization ขององกรครับ <=== อันนี้มี field สำหรับเก็บรายชื่อ manager ไว้ทั้งหมดแล้วค่ะ
สำหรับวิธีการก็
1.สร้าง agent ให้ run เป็น daily <== อันนี้สร้างไว้หมดแล้วค่ะ
2.เขียน code หา document ที่ไม่ update (อันนี้ขึ้นอยู่กับคุณว่า จะจับ field ไหนที่ว่าไม่ update)<=== นี่ละค่ะ ปัญหา แต่ตอนนี้ที่ทำไว้คือสร้าง field flag ไว้ 1 field มีค่าเริ่มต้นเป็น 0(number) สำหรับจับให้ได้ว่า ทำการ update หรือยัง หากทำการ update แล้วก็ทำการเปลี่ยนค่าใน field flag อ่ะค่ะ ไม่แน่ใจว่าแนวคิดนี้โอเคไหม
3. เอา field [date create] doc หรือ field date ที่อ้างอิงใน document นั้น มาลบด้วย date ปัจจุบันที่ agent run เช่น ((@Today- DocDate) <= 3) ถ้าน้อยกว่าเท่ากับ 3 ก็ ให้ notify email ไปที่หัวหน้า ตามจำนวน วันที่หักมา เช่น น้อยกว่า 1 ก็ส่ง mail หา ใคร ,น้อยกว่า 2 หาใคร เป็นต้น <=== ที่ทำเอาไว้มีประมาณนี้อ่ะค่ะ
คือ น่าจะมี 3 ส่วนที่เกี่ยวข้อง
1. View ทำ View เอาไว้ select data ที่ต้องการให้ส่งเมลแจ้งเตือน เป็นการกรองขั้นตอนแรก โดยมี code ดังนี้
tmp := (@Today - @Modified) / 86400;
SELECT FORM = "test" & FlagSend = 0 & tmp >1
2. Agent ทำการรันแบบ daily ตามที่กล่าวไว้ แล้วเขียนโค้ดเชคไว้ว่า หาก query data จาก view มาแล้วให้เริ่มเชคโดยขั้นแรกให้เชคว่า ตรงกับวันเสาร์อาทิตย์ ไม่ต้องทำ แต่หากไม่ใช่ ให้ทำการ เชค flagsend ว่า มีค่าเป็น 0 หรือไม่ เช่น
For a% = 1 To 31
If (Day(Today) = a%) Then
If Weekday(Today) <> 1 Or Weekday(Today) <> 7 Then 'check Sunday and Saturday
If doc.FlagSend(0) = 0 Then
maildoc.SendTo = doc.DocumentAuthors(0) 'Owner
Call maildoc.Send(False)
doc.FlagSend = 1
Call doc.Save(True,False)
Elseif doc.FlagSend(0) = 1 Then
maildoc.SendTo = doc.DocumentAuthors(0) 'Owner
maildoc.CopyTo = Evaluate(|LocalManager|,doc) 'Local Manager
doc.FlagSend = 2
Call doc.Save(True,False)
Elseif doc.FlagSend(0) = 2 Then
maildoc.SendTo = doc.DocumentAuthors(0) 'Owner
maildoc.CopyTo = Evaluate(|LocalManager:ITManager|,doc) 'Local Manager and IT Manager
doc.FlagSend = 3
Elseif doc.FlagSend(0) = 3 Or doc.FlagSend(0) > 3 Then
maildoc.SendTo = doc.DocumentAuthors(0) 'Owner
maildoc.CopyTo = Evaluate(|LocalManager:ITManager|,doc) 'Local Manager and IT Manager
doc.FlagSend = doc.FlagSend(0) + 1
Call doc.Save(True,False)
End If 'doc.FlagSend(0) = 0
End If 'Weekday(Today)
End If '(Day(Today) = a%)
Next 'a% =
ประมาณนี้อ่ะค่ะ ตัดมาแค่บางส่วนนะคะ
3. Form ส่วนน่าจะมีการเชคตอน query save ว่า หากมีการ update ให้เปลี่ยนค่า field flagsend = 99 ประมาณนี้อ่ะค่ะ จะได้ทราบว่าทำการ update แล้ว
อีกอย่างคือ พอทุกต้นเดือน ควรจะมี agent อีกตัวไว้คอยเคลียร์ค่า flagesend = 0 เพื่อที่จะได้รัน agent ตัวด้านบนได้
ไม่แน่ใจว่าแนวคิดประมาณนี้ถูกต้องหรือป่าว ลองเทสโค้ดรันแล้วก้อผ่าน แต่แอบ งงตัวเองเล็กน้อย ขอคำชี้แนะด้วยค่ะ |