Code โชว์รูปสมาชิก
กระทู้เก่าบอร์ด อ.Yeadram

 3,969   11
URL.หัวข้อ / URL
Code โชว์รูปสมาชิก

Dim filepath, picdir As String
        Dim found As Boolean
        Dim iid As Long
        ChDir "D:\"
        ChDir "D:\picX"

        picdir = "D:\picX\"
    
    If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
            found = False
            filepath = picdir & Me![id_Card]
            If dir(filepath & ".jpg") <> "" Then
                    filepath = filepath & ".jpg"
                    found = True
            End If
            If found Then
               Me.Image1.Picture = filepath
               Me.L_NoPic.Visible = False
            Else
               Me.Image1.Picture = "
               Me.L_NoPic.Visible = True
            End If
    End If

ก๊อปโค๊ตมาแล้วใช้งานได้ดีครับ ติดตรงที่ พอเรียกสมาชิกคนที่ไม่มีเลข 13 หลัก
มันจะโชว์รูปคนก่อนหน้านี้ครับ เราจะกำหนดให้ เมื่อคนที่ไม่มีเลข 13 หลัก
ให้ไม่โชว์รูป จะไปแทรกตรงไหนครับ

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

1 @R11024
น่าทำได้ 2 วิธีคือ
1. กำหนด .Visible property ของ Image1 ให้เป็น False
2. สร้างภาพ .jpg ขึ้นมา ให้เป็นสีขาวทั้งหมด หรือจะสีอะไร หรือจะมีข้อความอะไรที่บอกว่า ไม่มีรูปภาพ ก็ได้ เราก็แสดงภาพนี้ในกรณีที่ไม่มีไฟล์รูปภาพแทน
2 @R11027
อาจารย์ครับ จากโค็ต ผมทำ Me.L_NoPic ไว้ครับสำหรับคนที่ไม่มีรูป เมื่อคนที่ไม่มีรูปมันจะโชว์ Me.L_NoPic
แต่ปัญหามันเกิดจาก คนไม่มีเลข 13 หลักครับ พอเลือกคนไม่มีเลข 13 หลัก มันจะโชว์รูปคนสุดท้ายที่มันโชว์อยู่
จากโค็ตบันทัดแรกครับ If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
จะเห็นว่ามีอ้าง เลข 13 หลักที่ไม่มีอยู่ด้วย แต่ผมไม่เข้าใจว่าจะประยุกต์ มันยังงัยครับ
ให้เมื่อไม่มีเลข 13 หลัก ให้โชว์ Me.L_NoPic ด้วย
รบกวนอาจารย์ด้วยครับ
3 @R11029
ไม่มีเลข 13 หลัก = Me.id_Card เป็น null ใช่หรือเปล่าครับ
ถ้าใช่
จาก
    If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
เปลี่ยนเป็น
    found = False
    If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
            filepath = picdir & Me![id_Card]
            If dir(filepath & ".jpg") <> "" Then
                    filepath = filepath & ".jpg"
                    found = True
            End If
    End If

    If found Then
          Me.Image1.Picture = filepath
          Me.L_NoPic.Visible = False
    Else
          Me.Image1.Picture = "
          Me.L_NoPic.Visible = True
    End If
4 @R11030
แก้ (R11029)

ไม่ต้องสนใจประโยค "จาก ... " นะครับ ลืมลบ
5 @R11032
มีรูป กับ ไม่มีเลข และ มีเลขกับไม่มีรูป
ถ้ามีเลขแล้วไม่มีรูป ก็ทำแบบ อาจารย์สันติสุขบอก ข้อ 1 หรือข้อ 2 (ทำเป็นภาพเล็กๆแค่เป็น จุดก็พอ)

แต่ถ้า มี รูปแล้วไม่มีเลข จะโชว์รูปหลังสุดที่แสดง
ผมทำแบบนี้ครับ ใช้ Eeeor Handle เข้ามาช่วยครับ
และฝัง Procedure ไว้ที่ Private Sub Form_Current() ทดลองดูนะครับ
----------------------------------------------------------------------------------

Private Sub Form_Current()
On Error GoTo fCurr:
Dim filepath, picdir As String
        Dim found As Boolean
        Dim iid As Long
        ChDir "D:\"
        ChDir "D:\picX"

        picdir = "D:\picX\"
     
    If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
            found = False
            filepath = picdir & Me![id_Card]
            If dir(filepath & ".jpg") <> "" Then
                    filepath = filepath & ".jpg"
                    found = True
            End If
            If found Then
               Me.Image1.Picture = filepath
               Me.L_NoPic.Visible = False
            Else
               Me.Image1.Picture = "
               Me.L_NoPic.Visible = True
            End If
    End If
    Exit Sub

fCurr:
    Select Case Err
        Case 2220 'ไม่พบไฟล์รูปภาพ
            MsgBox "...ยังไม่มีภายถ่ายเก็บไว้ในฐานข้อมูล...", vbDefaultButton1, "Introduction"
            DoCmd.Hourglass False
            Exit Sub
        Case 76 'ไม่พบ Drive หรือ Directory ที่ระบุ ( Path not Found) ปัญหาน่าจะอยู่ตรงนี้ครับ ไม่มีเลข ID ก็จะหา Path ไม่เจอ...
            ChDir "D:\picX"
            MkDir "picX" 'สร้างโฟลเดอร์ภายใต้ D:
            Resume Next 'ทำคำสั่งที่ถัดจากที่ Error ก่อนหน้านี้
        Case 2114 'หากเป็นภาพที่ถ่ายด้วยกล้องดิจิตอล (Digital Camera) รูปจะใหญ่เกินไปจนไม่สามารถเปิดได้แม้จะเป็น Jpg Format ก็ตาม..)
            MsgBox Err & ":" & Err.Description, vbCritical, "Error"
            MsgBox Err & "2114" & "...รูปมืดตึดตื๋อ ดูไมรู้เรื่อง ", vbCritical, "Error"
            MsgBox "ภาพบางภาพอาจจะใหญ่เกินไปโปรแกรมไม่สามารถเปิดได้...", vbCritical, "´ดูภาพไม่ได้"
        Case Else
            MsgBox Err & ":" & Err.Description, vbCritical, "Error"
    End Select
End Sub
6 @R11033
คุณ PichaiTC ครับ มันโชว์เป็นช่องว่างครับ ชนิดข้อมูลเป็น Text ครับ

คุณ แหลมทอง ครับ โค๊ตเต็มผมก็เป็นแบบคุณเลยครับ น่าจะก๊อปจากแหล่งเดียวกัน
เพราะฉนั้นมันเลยใช้ไม่ไดครับ ขอบคุณมากครับ
7 @R11109
Private Sub Form_Current()
On Error GoTo fCurr:
Dim filepath, picdir As String
        Dim found As Boolean
        Dim iid As Long
        ChDir "D:\"
        ChDir "D:\picX"

        picdir = "D:\picX\"
      
    If (IsNull(Me.id_Card) Or Me.id_Card = 0) = False Then
            found = False
            filepath = picdir & Me![id_Card]
            If dir(filepath & ".jpg") <> "" Then
                    filepath = filepath & ".jpg"
                    found = True
            End If
            If found Then
               Me.Image1.Picture = filepath
               Me.L_NoPic.Visible = True
            Else
               Me.Image1.Picture = "
               Me.L_NoPic.Visible = False
            End If
    End If
    Exit Sub

fCurr:
    Select Case Err
        Case 2220 'ไม่พบไฟล์รูปภาพ
            MsgBox "...ยังไม่มีภายถ่ายเก็บไว้ในฐานข้อมูล...", vbDefaultButton1, "Introduction"
            DoCmd.Hourglass False
            Exit Sub
        Case 76 'ไม่พบ Drive หรือ Directory ที่ระบุ ( Path not Found) ปัญหาน่าจะอยู่ตรงนี้ครับ ไม่มีเลข ID ก็จะหา Path ไม่เจอ...
            ChDir "D:\picX"
            MkDir "picX" 'สร้างโฟลเดอร์ภายใต้ D:\
            Resume Next 'ทำคำสั่งที่ถัดจากที่ Error ก่อนหน้านี้
        Case 2114 'หากเป็นภาพที่ถ่ายด้วยกล้องดิจิตอล (Digital Camera) รูปจะใหญ่เกินไปจนไม่สามารถเปิดได้แม้จะเป็น Jpg Format ก็ตาม..)
            MsgBox Err & ":" & Err.Description, vbCritical, "Error"
            MsgBox Err & "2114" & "...รูปมืดตึดตื๋อ ดูไมรู้เรื่อง ", vbCritical, "Error"
            MsgBox "ภาพบางภาพอาจจะใหญ่เกินไปโปรแกรมไม่สามารถเปิดได้...", vbCritical, "´ดูภาพไม่ได้"
        Case Else
            MsgBox Err & ":" & Err.Description, vbCritical, "Error"
    End Select
End Sub TrueFalse
8 @R11112
(R11033)
"มันโชว์เป็นช่องว่างครับ ชนิดข้อมูลเป็น Text ครับ"

ตอบมาแบบนี้ไปต่อไม่ถูกเลยครับ

"มัน" คืออะไรครับ
Me.Image1 หรือ Me.L_NoPic ?
9 @R11117
ขอโทษครับคุณPichaiTC
จาก (R11029) "ไม่มีเลข 13 หลัก = Me.id_Card เป็น null ใช่หรือเปล่าครับ "
ผมเลยตอบว่า "มันโชว์เป็นช่องว่างครับ ชนิดข้อมูลเป็น Text ครับ "
คือในตารางก็เป็นช่องว่าง พอมาแสดงใน Textbox มันก็เป็นช่องว่างด้วยครับ

คุณ Teerapat ครับ มันคืออะไรครับ
10 @R11118
อีกครั้งครับ......แลกเปลียนกันนะครับ ถูกมั่ง ผิดมั่งหวังว่าคงไม่ว่ากัน...เรียนรู้กันไป....ผิดเป็นครูครับ...ลอง Copy ไปวางเลยครับ Action on Current หรือไม่ก็ ลองใช้ ตรงนี้ครับที่น่้าสนใจ....    If ((IsNull(id_Card) Or id_Card = "")) Then

------------------------------------------------------

Private Sub Form_Current()
On Error GoTo Err_C

Dim filepath As String
Dim NamePic As String
filepath = "D:\picX"

NamePic = filepath & "\" & [id_Card] & ".jpg"

   If ((IsNull(id_Card) Or id_Card = "")) Then
Me.L_NoPic.Visible = True
Me.Image1.Picture = ""

Else
Me.L_NoPic.Visible = False
Me.Image1.Picture = NamePic

End If

Exit_C:
    Exit Sub

Err_C:

     Me.Image1.Picture = ""
     Me.L_NoPic.Visible = True
    Resume Exit_C
    
End Sub

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