กระทู้เก่าบอร์ด อ.Yeadram
1,629 0
URL.หัวข้อ /
URL
การแสดงภาพใน Report
ใน Report ต้องการให้แสดงรูปภาพ หลายภาพ และต้อง lock ตำแหน่งภาพไว้ โดยอ้างอิงมาจาก path ที่เก็บใน table
ซึ่ง 1 Row มีการเก็บ ภาพ 14 ภาพ และให้แสดงผลพร้อมกันผมได้ code มา โดย นำ code ส่วนแรกไปวางใน module และส่วนที่ 2 วางใน รายงาน
ซึ่งก็แสดงรูปภาพได้นะครับแต่ พบปัญหาคือ กรณีที่บาง flame ไม่มีรูป ซึ่งคือไม่มีการเก็บ path ไว้
แต่ มันจะแสดงแต่รูปเดิมตลอด ไม่เว้นเป็น flame ว่างๆ ไว้ และใน row ที่ไม่มีการเก็บ path ไว้เลย report ก็จะแสดงภาพเดิมทั้งชุดเลยครับ ต้องแก้ไขอย่างไรบ้างครับ
หรือท่านใดมีวิธีอื่นๆ แนะนำได้นะครับ
ส่วนที่ 1 วางใน module
Option Compare Database
Option Explicit
Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String
On Error GoTo Err_DisplayImage
Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer
With ctlImageControl
If IsNull(strImagePath) Then
.Visible = False
strResult = "No image name specified."
Else
If InStr(1, strImagePath, "\") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Visible = True
.Picture = strImagePath
strResult = "Image found and displayed."
End If
End With
Exit_DisplayImage:
DisplayImage = strResult
Exit Function
Err_DisplayImage:
Select Case Err.Number
Case 2220 ' Can't find the picture.
ctlImageControl.Visible = False
strResult = "Can't find image in the specified name."
Resume Exit_DisplayImage:
Case Else ' Some other error.
MsgBox Err.Number & " " & Err.Description
strResult = "An error occurred displaying image."
Resume Exit_DisplayImage:
End Select
End Function
ส่วนที่ 2 วางในรายงาน
Function setImagePath()
Dim strImagePath As String
Dim imageOne As String
On Error GoTo PictureNotAvailable
imageOne = Me.txtImageName1
strImagePath = storedImagePath & imageOne
Me.ImageFrame.Picture = strImagePath
Exit Function
PictureNotAvailable:
strImagePath = noImage
Me.ImageFrame.Picture = strImagePath
End Function
Function setImagePath2()
Dim strImagePath2 As String
Dim imageTwo As String
On Error GoTo PictureNotAvailable
imageTwo = Me.txtImageName2
strImagePath2 = storedImagePath & imageTwo
Me.ImageFrame2.Picture = strImagePath2
Exit Function
PictureNotAvailable:
strImagePath2 = noImage
Me.ImageFrame2.Picture = strImagePath2
End Function
Function setImagePath3()
Dim strImagePath3 As String
Dim imageThree As String
On Error GoTo PictureNotAvailable
imageThree = Me.txtImageName3
strImagePath3 = storedImagePath & imageThree
Me.ImageFrame3.Picture = strImagePath3
Exit Function
PictureNotAvailable:
strImagePath3 = noImage
Me.ImageFrame3.Picture = strImagePath3
End Function
Function setImagePath4()
Dim strImagePath4 As String
Dim imageFour As String
On Error GoTo PictureNotAvailable
imageFour = Me.txtImageName4
strImagePath4 = storedImagePath & imageFour
Me.ImageFrame4.Picture = strImagePath4
Exit Function
PictureNotAvailable:
strImagePath4 = noImage
Me.ImageFrame4.Picture = strImagePath4
End Function
Function setImagePath5()
Dim strImagePath5 As String
Dim imageFive As String
On Error GoTo PictureNotAvailable
imageFive = Me.txtImageName5
strImagePath5 = storedImagePath & imageFive
Me.ImageFrame5.Picture = strImagePath5
Exit Function
PictureNotAvailable:
strImagePath5 = noImage
Me.ImageFrame5.Picture = strImagePath5
End Function
Function setImagePath6()
Dim strImagePath6 As String
Dim imageSix As String
On Error GoTo PictureNotAvailable
imageSix = Me.txtImageName6
strImagePath6 = storedImagePath & imageSix
Me.ImageFrame6.Picture = strImagePath6
Exit Function
PictureNotAvailable:
strImagePath6 = noImage
Me.ImageFrame6.Picture = strImagePath6
End Function
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim ImageCheck As String
ImageCheck = setImagePath()
ImageCheck = setImagePath2()
ImageCheck = setImagePath3()
ImageCheck = setImagePath4()
ImageCheck = setImagePath5()
ImageCheck = setImagePath6()
End Sub
ซึ่ง 1 Row มีการเก็บ ภาพ 14 ภาพ และให้แสดงผลพร้อมกันผมได้ code มา โดย นำ code ส่วนแรกไปวางใน module และส่วนที่ 2 วางใน รายงาน
ซึ่งก็แสดงรูปภาพได้นะครับแต่ พบปัญหาคือ กรณีที่บาง flame ไม่มีรูป ซึ่งคือไม่มีการเก็บ path ไว้
แต่ มันจะแสดงแต่รูปเดิมตลอด ไม่เว้นเป็น flame ว่างๆ ไว้ และใน row ที่ไม่มีการเก็บ path ไว้เลย report ก็จะแสดงภาพเดิมทั้งชุดเลยครับ ต้องแก้ไขอย่างไรบ้างครับ
หรือท่านใดมีวิธีอื่นๆ แนะนำได้นะครับ
ส่วนที่ 1 วางใน module
Option Compare Database
Option Explicit
Public Function DisplayImage(ctlImageControl As Control, strImagePath As Variant) As String
On Error GoTo Err_DisplayImage
Dim strResult As String
Dim strDatabasePath As String
Dim intSlashLocation As Integer
With ctlImageControl
If IsNull(strImagePath) Then
.Visible = False
strResult = "No image name specified."
Else
If InStr(1, strImagePath, "\") = 0 Then
' Path is relative
strDatabasePath = CurrentProject.FullName
intSlashLocation = InStrRev(strDatabasePath, "\", Len(strDatabasePath))
strDatabasePath = Left(strDatabasePath, intSlashLocation)
strImagePath = strDatabasePath & strImagePath
End If
.Visible = True
.Picture = strImagePath
strResult = "Image found and displayed."
End If
End With
Exit_DisplayImage:
DisplayImage = strResult
Exit Function
Err_DisplayImage:
Select Case Err.Number
Case 2220 ' Can't find the picture.
ctlImageControl.Visible = False
strResult = "Can't find image in the specified name."
Resume Exit_DisplayImage:
Case Else ' Some other error.
MsgBox Err.Number & " " & Err.Description
strResult = "An error occurred displaying image."
Resume Exit_DisplayImage:
End Select
End Function
ส่วนที่ 2 วางในรายงาน
Function setImagePath()
Dim strImagePath As String
Dim imageOne As String
On Error GoTo PictureNotAvailable
imageOne = Me.txtImageName1
strImagePath = storedImagePath & imageOne
Me.ImageFrame.Picture = strImagePath
Exit Function
PictureNotAvailable:
strImagePath = noImage
Me.ImageFrame.Picture = strImagePath
End Function
Function setImagePath2()
Dim strImagePath2 As String
Dim imageTwo As String
On Error GoTo PictureNotAvailable
imageTwo = Me.txtImageName2
strImagePath2 = storedImagePath & imageTwo
Me.ImageFrame2.Picture = strImagePath2
Exit Function
PictureNotAvailable:
strImagePath2 = noImage
Me.ImageFrame2.Picture = strImagePath2
End Function
Function setImagePath3()
Dim strImagePath3 As String
Dim imageThree As String
On Error GoTo PictureNotAvailable
imageThree = Me.txtImageName3
strImagePath3 = storedImagePath & imageThree
Me.ImageFrame3.Picture = strImagePath3
Exit Function
PictureNotAvailable:
strImagePath3 = noImage
Me.ImageFrame3.Picture = strImagePath3
End Function
Function setImagePath4()
Dim strImagePath4 As String
Dim imageFour As String
On Error GoTo PictureNotAvailable
imageFour = Me.txtImageName4
strImagePath4 = storedImagePath & imageFour
Me.ImageFrame4.Picture = strImagePath4
Exit Function
PictureNotAvailable:
strImagePath4 = noImage
Me.ImageFrame4.Picture = strImagePath4
End Function
Function setImagePath5()
Dim strImagePath5 As String
Dim imageFive As String
On Error GoTo PictureNotAvailable
imageFive = Me.txtImageName5
strImagePath5 = storedImagePath & imageFive
Me.ImageFrame5.Picture = strImagePath5
Exit Function
PictureNotAvailable:
strImagePath5 = noImage
Me.ImageFrame5.Picture = strImagePath5
End Function
Function setImagePath6()
Dim strImagePath6 As String
Dim imageSix As String
On Error GoTo PictureNotAvailable
imageSix = Me.txtImageName6
strImagePath6 = storedImagePath & imageSix
Me.ImageFrame6.Picture = strImagePath6
Exit Function
PictureNotAvailable:
strImagePath6 = noImage
Me.ImageFrame6.Picture = strImagePath6
End Function
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim ImageCheck As String
ImageCheck = setImagePath()
ImageCheck = setImagePath2()
ImageCheck = setImagePath3()
ImageCheck = setImagePath4()
ImageCheck = setImagePath5()
ImageCheck = setImagePath6()
End Sub
Time: 0.1226s