กระทู้เก่าบอร์ด อ.สุภาพ ไชยา
290 1
URL.หัวข้อ /
URL
แสดงรายชื่อ Report ทั้งหมดใน List Box
ถามไว้ที่ http://www.utteraccess.com/forums/showflat.php?Cat=&Board=access_2000&Number=170772&page=0&view=collapsed&sb=5&o=7&fpart=1&vc=1&PHPSESSID=
เขาไ้้ด้เก็บชื่อ Reports ทั้งหมดไว้ในตาราง พร้อมกับใส่ชื่อให้ผู้ใช้อ่านได้เข้าใจและสื่อความหมายได้
แต่เขาต้องการให้ตรวจดูก่อนว่ามี Report ชื่อนั้นอยู่จริงหรือเปล่า ก่อนที่จะเปิด ซึ่งถ้าไม่มีจะทำให้เกิด Error ขึ้นได้
ผมแนะนำให้เขาใช้ฟังก์ชันนี้เพื่อหาว่ามี Report ใดๆ อยู่หรือไม่ ดังนี้
Function IsReport(strName As String) As Boolean
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
If obj.Name = strName Then
IsReport = True
Exit Function
End If
Next obj
IsReport = False
End Function
ซึ่งผมแนะนำให้เขาแสดงรายชื่อของ Reports ทั้งหมดใน List Box เลยไม่ต้องไปอ่านมาจากตารางก็ได้ ถ้าไม่ได้กังวลเรื่องของชื่อของ Report ที่อาจจะไม่สื่อความหมายเท่าที่ควร โดยใช้โค้ดดังนี้
Private Sub Form_Load()
Me.List0.RowSourceType = "Value List"
Dim obj As AccessObject, dbs As Object
Dim strList As String
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
strList = strList & obj.Name & ","
Next obj
strList = Trim(strList)
strList = Left(strList, Len(strList) - 1)
Me.List0.RowSource = strList
End Sub
จากโค้ดผมใช้กับเหตุการณ์ OnLoad ของฟอร์มที่มี List Box ชื่อ List0 เพื่อแสดงชื่อ Report.
แต่เขายังไม่พอใจ จึงได้ให้ตัวอย่างฐานข้อมูลมาให้ผมช่วยด้วย ที่ http://www.utteraccess.com/forums/download.php?Number=170712
ผมเลยแนะนำให้เขาใช้โค้ดข้างล่างกับเหตุการณ์ OnLoad เช่นกัน ดังนี้
Private Sub Form_Load()
Dim strSQL As String
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
' Get all existing report names.
For Each obj In dbs.AllReports
strSQL = strSQL & "'" & obj.Name & "',"
Next obj
' Clean up and add IN for Where cluase.
strSQL = Trim(strSQL)
strSQL = " IN (" & Left(strSQL, Len(strSQL) - 1) & ")"
' Insert IN Where clause.
strSQL = "SELECT [tbl_CssReports].[Name], [tbl_CssReports].[Param], " _
& "[tbl_CssReports].[Object], [tbl_CssReports].[Action] " _
& "FROM tbl_CssReports " _
& "WHERE ((([tbl_CssReports].[Object]) Is Not Null) " _
& "And (([tbl_CssReports].[Section])='CSS') " _
& "And (([tbl_CssReports].[Obsolete])='No')) " _
& "And [tbl_CssReports].[Object] " & strSQL _
& " ORDER BY [tbl_CssReports].[SubSection], [tbl_CssReports].[Name];"
' Assign the list Row Source.
Me.lstReports.RowSource = strSQL
End Sub
ถ้าอยากเห็นการทำงานของโค้ดนี้ ให้ไปเอาตัวอย่างที่ผมแจ้งให้ข้างบน แล้วใส่โค้ดนี้ลงไปครับ
เขาไ้้ด้เก็บชื่อ Reports ทั้งหมดไว้ในตาราง พร้อมกับใส่ชื่อให้ผู้ใช้อ่านได้เข้าใจและสื่อความหมายได้
แต่เขาต้องการให้ตรวจดูก่อนว่ามี Report ชื่อนั้นอยู่จริงหรือเปล่า ก่อนที่จะเปิด ซึ่งถ้าไม่มีจะทำให้เกิด Error ขึ้นได้
ผมแนะนำให้เขาใช้ฟังก์ชันนี้เพื่อหาว่ามี Report ใดๆ อยู่หรือไม่ ดังนี้
Function IsReport(strName As String) As Boolean
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
If obj.Name = strName Then
IsReport = True
Exit Function
End If
Next obj
IsReport = False
End Function
ซึ่งผมแนะนำให้เขาแสดงรายชื่อของ Reports ทั้งหมดใน List Box เลยไม่ต้องไปอ่านมาจากตารางก็ได้ ถ้าไม่ได้กังวลเรื่องของชื่อของ Report ที่อาจจะไม่สื่อความหมายเท่าที่ควร โดยใช้โค้ดดังนี้
Private Sub Form_Load()
Me.List0.RowSourceType = "Value List"
Dim obj As AccessObject, dbs As Object
Dim strList As String
Set dbs = Application.CurrentProject
For Each obj In dbs.AllReports
strList = strList & obj.Name & ","
Next obj
strList = Trim(strList)
strList = Left(strList, Len(strList) - 1)
Me.List0.RowSource = strList
End Sub
จากโค้ดผมใช้กับเหตุการณ์ OnLoad ของฟอร์มที่มี List Box ชื่อ List0 เพื่อแสดงชื่อ Report.
แต่เขายังไม่พอใจ จึงได้ให้ตัวอย่างฐานข้อมูลมาให้ผมช่วยด้วย ที่ http://www.utteraccess.com/forums/download.php?Number=170712
ผมเลยแนะนำให้เขาใช้โค้ดข้างล่างกับเหตุการณ์ OnLoad เช่นกัน ดังนี้
Private Sub Form_Load()
Dim strSQL As String
Dim obj As AccessObject, dbs As Object
Set dbs = Application.CurrentProject
' Get all existing report names.
For Each obj In dbs.AllReports
strSQL = strSQL & "'" & obj.Name & "',"
Next obj
' Clean up and add IN for Where cluase.
strSQL = Trim(strSQL)
strSQL = " IN (" & Left(strSQL, Len(strSQL) - 1) & ")"
' Insert IN Where clause.
strSQL = "SELECT [tbl_CssReports].[Name], [tbl_CssReports].[Param], " _
& "[tbl_CssReports].[Object], [tbl_CssReports].[Action] " _
& "FROM tbl_CssReports " _
& "WHERE ((([tbl_CssReports].[Object]) Is Not Null) " _
& "And (([tbl_CssReports].[Section])='CSS') " _
& "And (([tbl_CssReports].[Obsolete])='No')) " _
& "And [tbl_CssReports].[Object] " & strSQL _
& " ORDER BY [tbl_CssReports].[SubSection], [tbl_CssReports].[Name];"
' Assign the list Row Source.
Me.lstReports.RowSource = strSQL
End Sub
ถ้าอยากเห็นการทำงานของโค้ดนี้ ให้ไปเอาตัวอย่างที่ผมแจ้งให้ข้างบน แล้วใส่โค้ดนี้ลงไปครับ
1 Reply in this Topic. Dispaly 1 pages and you are on page number 1
1 @R06701
Time: 0.1295s