ขออนุญาติ comment ในส่วนของ code นิดหนึ่งนะครับ
' เริ่มรับค่าและแปลงค่า
DateVar = doc.GetItemValue("DateSearch")
DateStr = Cstr(DateVar(0))
บรรทัดบนนี้เราไม่ควรแปลงค่าของ date เป็น text ครับ เพราะผลลัพธ์ที่ได้จะไม่ได้เป็นวันที่เราสืบค้นครับ แต่เป็น string ที่เราเปรียบเทียบครับ ถ้า server มีการกำหนดวันเป็น dd/mm/yyyy ส่วน client มีการ set date เป็น mm/dd/yyyy แบบนี้ผลลัพท์ที่ได้จะทำให้ไม่พบข้อมูลครับ เช่น
20/01/2008 กับ 01/20/2008 แบบนี้จะไม่เจอรายการครับ
searchStr = {Form='DR' & @Contains(} + doc.ListRev(0) +_
{;'}+ doc.keyword(0) + {' ) }
Set dc = db.Search(searchStr,dateTime,0)
ด้านบนนี้เอาจจะเอาตัวอย่างนี้ไปลองปรับดูครับ
'FromDate and FromTime are the fields
to get corresponding Date and Time
values of Search form
strFromDateTime =
Format(docCurrent.FromDate(0), "Short Date")
&" " & Format(docCurrent.FromTime(0),
"Long Time")
Set From_datetime =
New NotesDateTime(strFromDateTime)
'ToDate and ToTime are the fields to get
corresponding Date and Time values of
Search form
strToDateTime =
Format(docCurrent.ToDate(0), "Short Date")
&" " & Format(docCurrent.ToTime(0), "Long Time")
Set To_datetime =
New NotesDateTime(strToDateTime)
'docCreatedOnUS holds the date/time
field (in US timezone) of the document created.
'This query will helps to find the result.
querysearch$ = { Form =
"Sample" & (docCreatedOnUS >= [}
& From_datetime.ZoneTime & _
{]) & (docCreatedOnUS
<= [} & To_datetime.ZoneTime & {])}
'The collection of documents as result
Set dc =
db.Search(querysearch$, Nothing, 0)
Msgbox dc.Count,0+64, db.Title
[quote]พี่ค่ะจากที่ทำ ถ้าจะให้ค้นวันที่ หนูได้การใส่ค่าใน dateTime แล้วค่าที่ออกมา มัน
ก็จะออกเอกสารมาทั้งหมด ตั้งแต่วันที่เลือก ถึง ปัจจุบัน อย่างเช่น ใส่วันที่ 16 ก็
จะออกมาวันที่ 16,17 ด้วยนะค่ะ ต้องกำหนดตรงไหนเพื่อให้ออกแค่วันที่ 16 ค่ะ ขอบคุณ
ค่ะ
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim ss As New NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim dateTime As NotesDateTime
Dim dc As NotesDocumentCollection
Dim vw As NotesView
Dim searchStr As String
Dim DateStr As String
Dim DateVar As Variant
Dim c As Integer
Set db = ss.CurrentDatabase
Set uidoc = ws.CurrentDocument 'Current UI doc to get field value
Set doc = uidoc.Document 'Backend doc to get from ui doc
' เริ่มรับค่าและแปลงค่า
DateVar = doc.GetItemValue("DateSearch")
DateStr = Cstr(DateVar(0))
Set dateTime = New NotesDateTime(DateStr)
Call dateTime.AdjustDay(-1)
Set vw = db.GetView("SearchFolder")
searchStr = {Form='DR' & @Contains(} + doc.ListRev(0) +_
{;'}+ doc.keyword(0) + {' ) }
Set dc = db.Search(searchStr,dateTime,0)
c = dc.Count
Call uidoc.FieldSetText("c", Cstr(c))
Call dc.PutAllInFolder("SearchFolder")
Call vw.Refresh
Call uidoc.Refresh
End Sub[/quote] |