แสดงรายชื่อ Report ทั้งหมดใน List Box
กระทู้เก่าบอร์ด อ.สุภาพ ไชยา

 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 
 
ถ้าอยากเห็นการทำงานของโค้ดนี้ ให้ไปเอาตัวอย่างที่ผมแจ้งให้ข้างบน แล้วใส่โค้ดนี้ลงไปครับ 
 
 
 

1 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R06701
   
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.1295s