@ ประกาศใช้งานเว็บบอร์ดใหม่คลิกลิ้งได้ที่โลโก้ ไท.Access หรือกด --> บอร์ดเรียนรู้ Access สำหรับคนไทย 
โพสต์ถาม,ตอบที่บอร์ดใหม่ แล้วจะใส่ลิ้งอ้างมาที่บอร์ดนี้หรือไม่ก็ตามสะดวกครับ


Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ ระบบฐานข้อมูล
Access : จุดเริ่มต้นที่ง่ายที่สุดสำหรับการเรียนรู้ การเขียนโปรแกรม
Access : เป็นได้ทั้งตัวเก็บฐานข้อมูล และตัวจัดการฐานข้อมูล
Thai Access : บอร์ดเสริมการเรียนรู้ Access ด้วยภาษาไทย


Back to Board : Thai Access Webboard
สอบถามการจำกัดขนาดของไฟล์แนบครับ

Topic by Message Posted : on : 11/10/2560 11:48:13
Prajak  ถ้าผมต้องการจำกัดขนาดของไฟล์รูปภาพที่จะแนบ ว่าไม่ให้ขนาดเกินกี่ kb
จะต้องกำหนดค่าตรงไหนครับ เนื่องจากในการใช้งานจริง จะต้องมีการแนบรูปจำนวนมาก แทบทุก item กลัวฐานข้อมูลจะมีขนาดใหญ่เกินไปครับ รบกวนด้วยนะครับ



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

Reply by Message on : 11/10/2560 15:37:55
ธัชชัย
(R24190)
น่าจะใช้วิธีใส่เฉพาะชื่อไฟล์รูปเข้าไปในฐานข้อมูลนะครับ แล้วเก็บรูปไว้ที่โฟลเดอร์ต่างหาก ทำแบบนี้ฐานข้อมูลก็จะไม่ใหญ่ครับ
Back to Top
Reply by Message on : 11/10/2560 15:41:08
Prajak
(R24191)
555 ทำยังไงอะครับ
แต่ถ้าต้องการทำอย่างที่ผมว่า มันต้องจำกัดตรงไหนครับ
Back to Top
Reply by Message on : 11/10/2560 15:59:59
ธัชชัย
(R24192)
อันนี้เป็น Code ที่ใช้จำกัด Size ของ Attached File นะครับ
(ลอกเขามา ไม่ได้คิดเอง)

Public Function SelectFileWithSizeCheck(lngFileSize) As String
'Requires Office XP (2002) or higher
'Requires references to the Microsoft Office Object Library and
'the Scripting Runtime Library
'Created by Helen Feddema 24-Oct-2009
'Last modified 24-Oct-2009

On Error GoTo ErrorHandler

   Dim fd As Office.FileDialog
   Dim fso As New Scripting.FileSystemObject
   Dim fil As Scripting.File
   Dim varSelectedItem As Variant
   Dim strFileNameAndPath As String
   
   'Create a FileDialog object as a File Picker dialog box.
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
   
   With fd
      'Set AllowMultiSelect to True to allow selection of multiple files
      .AllowMultiSelect = False
      .Title = "Browse for File"
      .ButtonName = "Select"
      .Filters.Clear
      .Filters.Add "Documents", "*.doc; *.txt", 1
      .InitialView = msoFileDialogViewDetails
      If .Show = -1 Then
        'Get selected item in the FileDialogSelectedItems collection
        'Have to use collection even if just one item is selected
        For Each varSelectedItem In .SelectedItems
            strFileNameAndPath = CStr(varSelectedItem)
        Next varSelectedItem
      Else
        Debug.Print "User pressed Cancel"
        strFileNameAndPath = ""
      End If
   End With
   
   Set fil = fso.GetFile(strFileNameAndPath)
   Debug.Print "File size: " & fil.Size
   If fil.Size <= lngFileSize Then
      SelectFileWithSizeCheck = strFileNameAndPath
   Else
      MsgBox "File exceeds the allowed size; can't import"
      SelectFileWithSizeCheck = ""
   End If
   
ErrorHandlerExit:
   Set fd = Nothing
   Exit Function

ErrorHandler:
   MsgBox "Error No: " & Err.Number & "; Description: " & Err.Description
   Resume ErrorHandlerExit

End Function
Back to Top
Reply by Message on : 12/10/2560 9:38:17
Prajak
(R24199)
ไม่ทราบเอาไปใช้ยังไง 555 งง
Back to Top
Reply by Message on : 12/10/2560 11:09:17
ธัชชัย
(R24200)
1. กดปุ่ม Alt+F11
2. Copy Code นี้ลงไปวาง (ผมแก้ไขให้เลือกไฟล์รูป jpg กับ png แล้ว)

Public Function SelectFileWithSizeCheck(lngFileSize) As String
'Requires Office XP (2002) or higher
'Requires references to the Microsoft Office Object Library and
'the Scripting Runtime Library
'Created by Helen Feddema 24-Oct-2009
'Last modified 24-Oct-2009

On Error GoTo ErrorHandler

   Dim fd As Office.FileDialog
   Dim fso As New Scripting.FileSystemObject
   Dim fil As Scripting.File
   Dim varSelectedItem As Variant
   Dim strFileNameAndPath As String
    
   'Create a FileDialog object as a File Picker dialog box.
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
    
   With fd
      'Set AllowMultiSelect to True to allow selection of multiple files
      .AllowMultiSelect = False
      .Title = "Browse for File"
      .ButtonName = "Select"
      .Filters.Clear
      .Filters.Add "Documents", "*.jpg; *.png", 1
      .InitialView = msoFileDialogViewDetails
      If .Show = -1 Then
        'Get selected item in the FileDialogSelectedItems collection
        'Have to use collection even if just one item is selected
        For Each varSelectedItem In .SelectedItems
            strFileNameAndPath = CStr(varSelectedItem)
        Next varSelectedItem
      Else
        Debug.Print "User pressed Cancel"
        strFileNameAndPath = ""
      End If
   End With
    
   Set fil = fso.GetFile(strFileNameAndPath)
   Debug.Print "File size: " & fil.Size
   If fil.Size <= lngFileSize Then
      SelectFileWithSizeCheck = strFileNameAndPath
   Else
      MsgBox "File exceeds the allowed size; can't import"
      SelectFileWithSizeCheck = ""
   End If
    
ErrorHandlerExit:
   Set fd = Nothing
   Exit Function

ErrorHandler:
   MsgBox "Error No: " & Err.Number & "; Description: " & Err.Description
   Resume ErrorHandlerExit

End Function


3. อย่าเพิ่งปิดหน้าต่างที่ใส่ Code ให้เลือก Tools>References แล้วเลือก Microsoft Office Object Library และ Microsoft Scripting Runtime Library
4. กด Ctrl+S ตามด้วย Alt+F4
5. จะกลับมาที่หน้าต่าง Access ให้เปิดฟอร์มในมุมมองออกแบบ
6. เลือก Expression Builder ที่ On Click ของออบเจ็กต์ที่ต้องการ Attached
7. เลือก Functions>ชื่อไฟล์ Access>ชื่อ Function จะอยู่ใน Box ขวาสุด
8. กำหนด «lngFileSize» เป็นขนาดไฟล์ที่ต้องการ
9. บันทึกไฟล์แล้วลองใช้งานดูครับ
Back to Top
Reply by Message on : 12/10/2560 11:14:25
ธัชชัย
(R24201)
ไฟล์ตัวอย่างครับ

ที่นี่
Back to Top
Reply by Message on : 13/10/2560 9:13:11
Prajak
(R24204)
ทำตามขั้นตอนแล้วครับ แต่ตรงที่ Function ขวามือสุดไม่มีอะไรให้เลยเลย




Back to Top
Reply by Message on : 13/10/2560 11:04:05
TTT
(R24205)
อื่ม! แชร์ให้ฟังนะครับ ถ้ามีการเก็บรูปภาพเป็นจำนวนมากๆ จริงๆ ไม่แนะนำให้เก็บเป็น Attachment นะครับ เพราะไฟล์ Access มีข้อจำกัดขนาดอยู่ที่ 2GB ถ้าเป็นรูปเข้าไปในไฟล์จะเต็มเร็วมากครับ หรือหากคิดว่าจะใช้การเก็บไฟล์ Attachment แบบใช้ไฟล์ Access หลายๆไฟล์ แล้วนำตารางมา Union กัน สำหรับฟิลด์ที่เป็น Attachment ก็ไม่รองรับอีกต่างหาก (ผมเคยคิดนะทำแบบนั้นแต่ก็ไม่สำเร็จ) ดังนั้นหากต้องการเก็บรูปภาพแบบ Attachment จริงๆ และต้องการให้ประหยัดเนื้อที่มากที่สุด คงต้องย่อขนาดภาพให้เล็กลงก่อนตามขนาดและคุณภาพที่ไม่สูงนักโดยใช้คำสั่งแบบเป็น Command ไฟล์ หาจากเน็ทมีหลายตัวให้ใช้ได้ครับ ส่วนตัวผมใช้ของ ImageMagick ไฟล์ชื่อ Convert.exe มีพารามิเตอร์ให้ปรับแต่งภาพได้ค่อนข้างครบ แต่จะมีความยุ่งยากอยู่ตรงที่การเขียนโค้ด คือต้องเขียนตรวจสอบว่าภาพเป็นสี่เหลี่ยมแบบไหน แนวนอนหรือตั้งก่อนเพราะเราต้องการย่อด้านที่ยาวที่สุดเป็นหลัก และย่อตามอัตราส่วนด้วย ซึ่งมันต้องใช้คำสั่งหลายคำสั่งมากอยู่

อีกแบบคือการเก็บไฟล์ไว้ภายนอก แล้วโหลดมาแสดงซึ่งจะง่ายกว่าซึ่งจะไม่ถูกจำกัดในเรื่องของขนาดไฟล์ภาพ แต่ก็จะมีผลทำให้ช้าในการโหลดหากภาพมีขนาดใหญ่มากๆ วิธีทำลองดูได้จากลิ้งค์นี้ครับ

คลิ๊กที่นี่
Back to Top
Reply by Message on : 13/10/2560 12:42:18
ธัชชัย
(R24207)
@Prajak

ต้องเพิ่มเข้าไปใน Module กลางครับ

Alt+F11 > คลิกขวา > Insert Module แล้วเอา Code ไปใส่ที่โมดูลกลางครับ

ถ้าเอาไปใส่ใน Form Module มันจะเรียกใช้ไม่ได้ครับ

ปล. ขอโทษที ผมนึกว่าไฟล์คุณมีโมดูลกลางอยู่แล้วครับ

อ้อ! วิธีของคุณ TTT จะดีกว่าวิธีที่ผมแนะนำนะครับ
Back to Top
Reply by Message on : 16/10/2560 12:37:52
Prajak
(R24209)
ขอบคุณทุกคำแนะนำเลยนะครับ เดี๋ยวผมจะลองทำดู
Back to Top
Reply by Message on : 9/11/2560 11:46:19
prajak
(R24270)
ขอบคุณ คุณTTT มากนะครับที่แนะนำ ( เดี๋ยวผมจะทดลองทำต่อครับ)
คุณธัชชัยครับ ถึงตรงนี้แล้ว ต้องไปกำหนดขนาดไฟล์ตรงไหนครับ ยกตัวอย่างเช่น
ผมต้องการให้รูปมีขนาดไม่เกิน 100 kb.



Back to Top
Reply by Message on : 9/11/2560 12:26:01
ธัชชัย
(R24271)
8. กำหนด «lngFileSize» เป็นขนาดไฟล์ที่ต้องการ
Back to Top
Reply by Message on : 10/11/2560 9:13:15
prajak
(R24274)
ถ้ากำหนดไม่เกิน 100 kb ต้องกำหนดประมาณนี้มั้ยครับ ลองแล้วไม่ได้ครับ


Back to Top
Reply by Message on : 10/11/2560 12:49:46
ธัชชัย
(R24275)
ส่งไฟล์มาให้ดูหน่อยครับ
Back to Top
Reply by Message on : 12/11/2560 9:33:43
prajak
(R24279)
ฝากช่วยดูให้ด้วยนะครับ คุณธัชชัย

https://wetransfer.com/downloads/da36a8dcd1c3b4e511222727c8639bff20171112021937/38910e3d3d16da30a57085423c52ff5620171112021937/2ca5ce
Back to Top
Reply by Message on : 13/11/2560 20:21:26

(R24282)
ปัญหาของคุณคือ เอา Module ไปใส่ที่ On Load ของฟอร์มครับ มันเลยไม่ทำงาน
Back to Top

                              @ ประกาศใช้งานเว็บบอร์ดใหม่คลิกลิ้งได้ที่โลโก้ ไท.Access หรือกด --> บอร์ดเรียนรู้ Access สำหรับคนไทย                              
โพสต์ถาม,ตอบที่บอร์ดใหม่ แล้วจะใส่ลิ้งอ้างมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ


Sorry, you can NOT post a reply.
+++ webboard source: ASPThai.Net Webboard 6.0 webbord +++++++ admin : yeadram +++