รบกวนถามเรื่องการทำปุ่ม add ภาพใน Access ครับ
กระทู้เก่าบอร์ด อ.Yeadram

 3,639   9
URL.หัวข้อ / URL
รบกวนถามเรื่องการทำปุ่ม add ภาพใน Access ครับ

ตอนนี้ใ้ช้ Code ตามตัวอย่างของ Microsoft ตาม Code ข้างล่างนี้ครับ แต่ตาม Code นี้สำหรับภาพเดียว ถ้าต้องการเพิ่ม Frame อีกจะต้องแก้ไข Code ยังไงบ้างครับ


Private Sub AddPicture1_Click()
    getFileName
End Sub

Private Sub Form_RecordExit(Cancel As Integer)
     errormsg.Visible = False
End Sub

Private Sub RemovePicture1_Click()
     Me![ImagePath1] = ""
    hideImageFrame1
    errormsg.Visible = True
End Sub

Private Sub Form_AfterUpdate()
       On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
End Sub

Private Sub ImagePath1_AfterUpdate()
       On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
End Sub
Private Sub Form_Current()

    Dim res As Boolean
    Dim fName As String
    
    path = CurrentProject.path
    On Error Resume Next
        errormsg.Visible = False
        If Not IsNull(Me!Photo1) Then
            res = IsRelative(Me!Photo1)
            fName = Me![ImagePath1]
            If (res = True) Then
               fName = path & "\" & fName
            End If
            
            Me![ImageFrame1].Picture = fName
            showImageFrame1
            Me.PaintPalette = Me![ImageFrame1].ObjectPalette
            If (Me![ImageFrame1].Picture <> fName) Then
               hideImageFrame1
               errormsg.Caption = "Picture not found"
               errormsg.Visible = True
            End If
        Else
            hideImageFrame1
            errormsg.Caption = "Click Add/Change to add picture"
            errormsg.Visible = True
        End If

End Sub

Sub getFileName()
      Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Select Employee Picture"
        .Filters.Add "All Files", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 1
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me![ImagePath1].Visible = True
            Me![ImagePath1].SetFocus
            Me![ImagePath1].Text = fileName
            Me![cbCode].SetFocus
            Me![ImagePath1].Visible = False
        End If
    End With
End Sub

Sub showErrorMessage()
       If Not IsNull(Me!Photo1) Then
        errormsg.Visible = False
    Else
        errormsg.Visible = True
    End If
End Sub

Function IsRelative(fName As String) As Boolean
     IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function

Sub hideImageFrame1()
      Me![ImageFrame1].Visible = False
End Sub

Sub showImageFrame1()
       Me![ImageFrame1].Visible = True
End Sub



ได้ลองแก้ Code โดยการเพิ่มไปอีกชุดนึงแล้วเ่ช่น

Private Sub AddPicture1_Click()
       getFileName
End Sub
Private Sub AddPicture2_Click()
     getFileName
End Sub


แต่ติดตรงที่ภาพด้านล่างนี้ไม่แน่ใจว่าแก้ไขยังไงครับ

Private Sub Form_AfterUpdate()

    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
        showImageFrame2
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub


หรือถ้าผิดทั้งหมดเลยรบกวนสอนหน่อยนะครับ

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

1 @R05546
ใน
Form_AfterUpdate()

คุณได้เขียนคำสั่งเรียกใช้โปรแกรมย่อย มีสองครั้งคือ
showImageFrame1
กับ
showImageFrame2

เท่าที่ดูโค้ดของคุณ ผมเห็นแล้วว่า มีโปรแกรมย่อย showImageFrame1 อยู่ดังนั้นคำสั่งแรกก็ไม่น่าจะมีปัญหา
แต่ว่าคำสั่งต่อมาล่ะ คุณได้เขียนโปรแกรมย่อยเอาไว้ให้มันหรือยัง
- ถ้ายังไม่ได้เขียนก็จะเรียกใช้ไม่ได้
- ถ้าเขียนไม่เป็น แนะนำให้คัดลอกของหมายเลข 1 มาแก้ไขตัวเลขเอาครับ


-ใน Form_Current() ผมเห็นคุณสั่งการแต่กับกลุ่มคอนโทรลหมายเลข 1 คุณยังไม่ได้สั่งอะไรกับคอนโทรลหมายเลข 2 ที่เพิ่งจะเพิ่มเข้ามาเลยครับ ต้องเพิ่มให้มันด้วย ถ้าไม่เป็นก็คัดลอกทุกคำสั่งที่กระทำกับหมายเลข1 ทั้งหมดมาเพิ่มแล้วเปลียนหมายเลขเป็น 2 เอาครับ

- ใน Private Sub AddPicture2_Click()
เห็นคุณเรียกใช้โปรแกรมย่อย getFileName แล้วพอตามเข้าไปดูโปรแกรมย่อยดังกล่าวก็เห็นว่ามันกระทำกับคอนโทรลหมายเลข1 ล้วนๆ เลยดังนั้นมันก็ไม่ถูกต้องแน่ๆ คุณมีทางเลือกสองทาง คือ
1 ต้องสร้างโปรแกรมย่อยตัวใหม่ที่กระทำกับคอนโทรลหมายเลข2 แล้วเปลี่ยนคำสั่งให้เรียกใช้โปรแกรมย่อยตัวใหม่ที่สร้างขึ้น

นี่เป็นวิธีที่ง่าย และซับซ้อนน้อยที่สุดแล้วครับ


หรือ
2 ไปดัดแปลงให้โปรแกรมย่อยตัวเดิมให้สามารถ กระทำกับคอนโทรลหมายเลข2 ได้ด้วย หรือ
3 ไปดัดแปลงให้โปรแกรมย่อย getFileName ให้สามารถรับค่าอากิวร์เมนต์ เพื่อรอรับว่า จะให้กระทำการกับกลุ่มคอนโทรลหมายเลขใด และเมื่อคุณเรียกใช้ ก็ส่ง อาร์กิวเมนต์เข้าไปให้มันด้วย เช่น

- เปลี่ยน Sub getFileName()
ให้เป็น Sub getFileName(ctl as string)
- คำสั่งต่างๆ ภายในโปรแกรมย่อยก็เปลี่ยนจากชื่อตรงๆ เป็นชื่อตัวแปรแทนในทุกๆ จุดเช่นเปลี่ยนจาก Me![ImagePath1].SetFocus เป็น me(ctl).setfocus
- เวลาเรียกใช้ก็ค่อยส่งอาร์กิวเมนต์เข้าไปให้มันด้วย เช่น
Private Sub AddPicture1_Click()
       getFileName "ImagePath1"
End Sub
Private Sub AddPicture2_Click()
     getFileName "ImagePath2"
End Sub
2 @R05549
ถามเรื่องการใส่ End Sub ครับ

Private Sub Form_AfterUpdate()
    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
End Sub
    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub


ในส่วนของ End Sub สีแดงต้องตัดออกหรือถูกแล้วครับ
3 @R05551
รบกวนอาจารย์ดูให้หน่อยครับว่าผิดพลาดยังไง
ตอนนี้มันฟ้องว่า debug พอกดเข้าไปดูจะเป็นแถบสีเหลือง แต่ว่าผมทำไม่เป็นเลยใช้เป็นตัวหนังสือสีแดงแทน

{CODE}Private Sub AddPicture1_Click()
    getFileName "ImagePath1"
End Sub

Private Sub AddPicture2_Click()
    getFileName "ImagePath2"
End Sub

Private Sub Command18_Click()
DoCmd.Close
End Sub

Private Sub RemovePicture1_Click()
    Me![ImagePath1] = ""
    hideImageFrame1
    errormsg1.Visible = True
End Sub

Private Sub RemovePicture2_Click()
    Me![ImagePath2] = ""
    hideImageFrame2
    errormsg2.Visible = True
End Sub

Private Sub Form_AfterUpdate()
    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If

    On Error Resume Next
        showErrorMessage
        showImageFrame2
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub

Private Sub Form_Current()
    Dim res As Boolean
    Dim fName As String
    
    path = CurrentProject.path
    On Error Resume Next
        errormsg1.Visible = False
        If Not IsNull(Me!Photo1) Then
            res = IsRelative(Me!Photo1)
            fName = Me![ImagePath1]
            If (res = True) Then
               fName = path & "\" & fName
            End If
            
            Me![ImageFrame1].Picture = fName
            showImageFrame1
            Me.PaintPalette = Me![ImageFrame1].ObjectPalette
            If (Me![ImageFrame1].Picture <> fName) Then
               hideImageFrame1
               errormsg1.Caption = "Picture not found"
               errormsg1.Visible = True
            End If
        Else
            hideImageFrame1
            errormsg1.Caption = "Click Add/Change to add picture"
            errormsg1.Visible = True
        End If

    On Error Resume Next
        errormsg2.Visible = False
        If Not IsNull(Me!Photo2) Then
            res = IsRelative(Me!Photo2)
            fName = Me![ImagePath2]
            If (res = True) Then
               fName = path & "\" & fName
            End If
            
            Me![ImageFrame2].Picture = fName
            showImageFrame2
            Me.PaintPalette = Me![ImageFrame2].ObjectPalette
            If (Me![ImageFrame2].Picture <> fName) Then
               hideImageFrame2
               errormsg2.Caption = "Picture not found"
               errormsg2.Visible = True
            End If
        Else
            hideImageFrame2
            errormsg2.Caption = "Click Add/Change to add picture"
            errormsg2.Visible = True
        End If
End Sub

Sub showErrorMessage()

    If Not IsNull(Me!Photo1) Then
        errormsg1.Visible = False
    Else
        errormsg1.Visible = True
    End If

    If Not IsNull(Me!Photo2) Then
        errormsg2.Visible = False
    Else
        errormsg2.Visible = True
    End If
End Sub

Function IsRelative(fName As String) As Boolean
    
    IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function

Sub hideImageFrame1()

    Me![ImageFrame1].Visible = False
End Sub

Sub showImageFrame1()

    Me![ImageFrame1].Visible = True
End Sub

Sub hideImageFrame2()

    Me![ImageFrame2].Visible = False
End Sub

Sub showImageFrame2()

    Me![ImageFrame2].Visible = True
End Sub


Private Sub Form_RecordExit(Cancel As Integer)

    errormsg1.Visible = False
    errormsg2.Visible = False
End Sub

Private Sub ImagePath1_AfterUpdate()

    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
End Sub

Private Sub ImagePath2_AfterUpdate()

    On Error Resume Next
        showErrorMessage
        showImageFrame2
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub

Sub getFileName(ctl As String)

    Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Select Employee Picture"
        .Filters.Add "All Files", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 1
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me(ctl).Visible = True
            Me(ctl).SetFocus
            Me(ctl).Text = fileName
            Me(ctl).SetFocus
            Me(ctl).Visible = False
        End If
       
    End With
End Sub
4 @R05552
ขอเพิ่มเติมครับมันขึ้น debug ฟ้องว่า "You can't hide a control that has the focus."
5 @R05556
คำถามแรก
End sub ใส่ตรงนั้นไม่ได้ครับ ต้องเอาออก เพราะมันซ้อนกันอยู่ ต้องให้เหลือตัวเดียวครับ

แนะนำ..................
จากบริเวณดังกล่าว
        End If
End Sub
    On Error Resume Next
        showErrorMessage
        showImageFrame1

ควรเขียนแค่นี้ครับ
        End If
        showImageFrame2

-------------------------------------------------------------------------------
คำถามที่สองเกี่ยวกับ Error
มันแจ้งมาตรงประเด็นแล้วครับ คอนโทรลใดๆ ที่กำลังถูกโฟกัสอยู่จะให้ซ่อนไม่ได้
ถ้าคุณต้องการโฟกัสมันต่อไป ก็อย่าไปสั่งให้มันซ่อน
ถ้าคุณต้องการให้มันซ่อน ก็อย่าไปโฟกัสมัน หรือสั่งย้ายให้ไปโฟกัสที่คอนโทรลอื่นก่อนแล้วค่อนสั่งให้ซ่อน

แนะนำ .......
        เท่าที่ดูจากคำสั่ง (แบบคร่าวๆ) แล้ว เห็นว่าบรรทัดที่มันเกิด Error นั้นควรลบทิ้งไปเลยครับ ไม่ต้องสั่งมัน
6 @R05559
ตอนนี้ในแต่ละภาพจะมี label ชื่อว่า errormsg1 และ errormsg2 ถ้าหากว่าภาพใน imageframe ถูก add ขึ้นมาแล้ว errormsg ก็จะซ่อนตัว แต่ติดตรงทีตอนนี้หลังจาก add ภาพเสร็จ label errormsg มันจะไม่หายไปทันที ต้องปิดฟอร์มแล้วเปิดใหม่ถึงจะหาย
ตรงนี้ผมไม่ทราบว่าผมพลาดตรงไหนครับ เลยจะขอรบกวนอาจารย์ด้วยครับ

Private Sub AddPicture1_Click()
    getFileName1
End Sub
Private Sub AddPicture2_Click()
        getFileName2
End Sub
Private Sub Command18_Click()
        DoCmd.Close
End Sub
Private Sub RemovePicture1_Click()
    Me![ImagePath1] = ""
    hideImageFrame1
    errormsg1.Visible = True
End Sub
Private Sub RemovePicture2_Click()
    Me![ImagePath2] = ""
    hideImageFrame2
    errormsg2.Visible = True
End Sub
Private Sub Form_AfterUpdate()
    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
    On Error Resume Next
        showErrorMessage
        showImageFrame2
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub
Private Sub Form_Current()
    Dim res As Boolean
    Dim fName As String
     
    path = CurrentProject.path
    On Error Resume Next
        errormsg1.Visible = False
        If Not IsNull(Me!Photo1) Then
            res = IsRelative(Me!Photo1)
            fName = Me![ImagePath1]
      If (res = True) Then
               fName = path & "\" & fName
      End If             
            Me![ImageFrame1].Picture = fName
            showImageFrame1
            Me.PaintPalette = Me![ImageFrame1].ObjectPalette
            If (Me![ImageFrame1].Picture <> fName) Then
               hideImageFrame1
               errormsg1.Caption = "Picture not found"
               errormsg1.Visible = True
            End If
        Else
            hideImageFrame1
            errormsg1.Caption = "Click Add/Change to add picture"
            errormsg1.Visible = True
        End If
    On Error Resume Next
        errormsg2.Visible = False
        If Not IsNull(Me!Photo2) Then
            res = IsRelative(Me!Photo2)
            fName = Me![ImagePath2]
            If (res = True) Then
               fName = path & "\" & fName
            End If
             
            Me![ImageFrame2].Picture = fName
            showImageFrame2
            Me.PaintPalette = Me![ImageFrame2].ObjectPalette
            If (Me![ImageFrame2].Picture <> fName) Then
               hideImageFrame2
               errormsg2.Caption = "Picture not found"
               errormsg2.Visible = True
            End If
        Else
            hideImageFrame2
            errormsg2.Caption = "Click Add/Change to add picture"
            errormsg2.Visible = True
        End If
End Sub

Sub showErrorMessage()

    If Not IsNull(Me!Photo1) Then
        errormsg1.Visible = False
    Else
        errormsg1.Visible = True
    End If

    If Not IsNull(Me!Photo2) Then
        errormsg2.Visible = False
    Else
        errormsg2.Visible = True
    End If
End Sub
Function IsRelative(fName As String) As Boolean     
    IsRelative = (InStr(1, fName, ":") = 0) And (InStr(1, fName, "\\") = 0)
End Function
Sub hideImageFrame1()
    Me![ImageFrame1].Visible = False
End Sub
Sub showImageFrame1()
    Me![ImageFrame1].Visible = True
End Sub
Sub hideImageFrame2()
    Me![ImageFrame2].Visible = False
End Sub
Sub showImageFrame2()
    Me![ImageFrame2].Visible = True
End Sub
Private Sub Form_RecordExit(Cancel As Integer)
    errormsg1.Visible = False
    errormsg2.Visible = False
End Sub
Private Sub ImagePath1_AfterUpdate()
    On Error Resume Next
        showErrorMessage
        showImageFrame1
        If (IsRelative(Me!ImagePath1) = True) Then
            Me![ImageFrame1].Picture = path & Me![ImagePath1]
        Else
            Me![ImageFrame1].Picture = Me![ImagePath1]
        End If
End Sub
Private Sub ImagePath2_AfterUpdate()
    On Error Resume Next
        showErrorMessage
        showImageFrame2
        If (IsRelative(Me!ImagePath2) = True) Then
            Me![ImageFrame2].Picture = path & Me![ImagePath2]
        Else
            Me![ImageFrame2].Picture = Me![ImagePath2]
        End If
End Sub
Sub getFileName1()
    Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Select Employee Picture"
        .Filters.Add "All Files", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 1
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me![ImagePath1].Visible = True
            Me![ImagePath1].SetFocus
            Me![ImagePath1].Text = fileName
            Me![cbCode].SetFocus
            Me![ImagePath1].Visible = False
        End If       
    End With
End Sub
Sub getFileName2()
    Dim fileName As String
    Dim result As Integer
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Select Employee Picture"
        .Filters.Add "All Files", "*.*"
        .Filters.Add "JPEGs", "*.jpg"
        .Filters.Add "Bitmaps", "*.bmp"
        .FilterIndex = 1
        .AllowMultiSelect = False
        .InitialFileName = CurrentProject.path
        result = .Show
        If (result <> 0) Then
            fileName = Trim(.SelectedItems.Item(1))
            Me![ImagePath2].Visible = True
            Me![ImagePath2].SetFocus
            Me![ImagePath2].Text = fileName
            Me![cbCode].SetFocus
            Me![ImagePath2].Visible = False
        End If       
    End With
End Sub
7 @R05563
ใน Private Sub Form_Current()

ใต้คำสั่ง showImageFrame?
ให้เพิ่มคำสั่ง errormsg?.Visible = False


ให้เพิ่มทั้งจุดของหมายแลข 1 และจุดของหมายเลข 2
8 @R05566
ต้องขอรบกวนอาจาร์อีกแล้ว ขอโทษจริงๆ ครับ ผมได้ทำตามที่อาจารย์แนะนำมาแล้วแต่ว่า...

-คือตอนที่เปิดฟอร์มมาขณะที่มีภาพค้างอยู่มันจะใช้งานได้ตามปกติ(กด remove errormsg ก็ขึ้นมา กด add มันก็หายไป)

-แต่ถ้าเปิดฟอร์มขณะที่ภาพนั้นว่างเปล่าอยู่ พอ add ภาพเข้าไป errormsg จะไม่ยอมซ่อนตัว ต้องปิดฟอร์มแล้วเปิดขึ้นมาใหม่ถึงจะใช้ได้ตามปกติ

9 @R05567
ก็คำสั่งมันมีแค่นั้นแหละครับ
errormsg?.Visible = False

คุณต้องไล่หาไปใส่ในแต่ละเหตุการณ์เอาเองครับ คุณเขียนโค้ดฝั้งเหตุการณ์อะไรบ้าง แต่ละเหตุการณ์ลำดับกันอย่างไร ขัดแย้งกันไหม คุณต้องไล่เลียงเอาเองครับ

ไม่ใช่ว่า
งานเดียวกัน (คือคลิ๊กเดียว) คุณให้มันทำงาน 4 เหตุการณ์
โดยให้เหตุการณ์ที่1 สั่ง visible=true
เหตุการณ์ที่ 2 สั่ง visible=false
ที่3 ให้ true
แล้วที่4 ให้ false
แค่คลิ๊กเดียว มี4เหตุการณ์ คุณสั่งกระทำกับคอนโทรลเดียวกัน ย้อนไปย้อนมาจนงง ไปเองหรือเปล่า ต้องไล่เลียงเอาเอง

คุณบอกว่า พอ Add เข้าไปแล้วไม่ซ่อนตัว
คำว่า "พอ Add" ของคุณมันคือเหตุการณ์อะไรล่ะ ก็ไปไล่ดูหาดูซิครับ ต้องรู้จักหา ต้องรู้จักโค้ดของเราเอง รู้ว่าลำดับงานมันอย่างไร
ต้องหาเองครับ (แค่นี้ก็ใบ้ให้เยอะแล้ว)
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.4346s