กระทู้เก่าบอร์ด อ.Yeadram
1,808 7
URL.หัวข้อ /
URL
จะ บังคับเจาะจงให้รับไฟล์ .bmp เท่านั้นค่ะ
ขอเรียนถามอาจารย์ดังนี้นะคะ
หนูสร้างฟอร์ม ซึ่งมีฟิลด์ แบบ OLE Opject อยู่ โดยให้ใส่ภาพเฉพาะ .BMP เท่านั้น
ปัญหาคือ ผู้ใช้มักเผลอใส่ภาพแบบอื่นเข้าไป ทำให้เกิดปัญหาติดขัด
หนูจึงอยากหาวิธีบังคับ ให้รับเฉพาะไฟล์ภาพแบบ .bmp เท่านั้น ผิดจากนี้ ให้มีการแจ้งเตือน และปฏิเสธไม่รับไฟล์นั้นค่ะ
ขอรบกวนอาจารย์ด้วยนะคะ
หนูสร้างฟอร์ม ซึ่งมีฟิลด์ แบบ OLE Opject อยู่ โดยให้ใส่ภาพเฉพาะ .BMP เท่านั้น
ปัญหาคือ ผู้ใช้มักเผลอใส่ภาพแบบอื่นเข้าไป ทำให้เกิดปัญหาติดขัด
หนูจึงอยากหาวิธีบังคับ ให้รับเฉพาะไฟล์ภาพแบบ .bmp เท่านั้น ผิดจากนี้ ให้มีการแจ้งเตือน และปฏิเสธไม่รับไฟล์นั้นค่ะ
ขอรบกวนอาจารย์ด้วยนะคะ
7 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R10955
เรียนอาจารย์ yeadram
ไม่ได้ใช้ Dialog ใดๆเลยค่ะ ใช้เพียง Copy / Past เท่านั้นเองค่ะ
หนูจะเอาเฉพาะ Cancel = (right(Ucase(filename),4)<>".BMP") ไปประยุกต์ใช้
นะคะ
ขอบคุณอย่างยิ่งค่ะอาจารย์
ไม่ได้ใช้ Dialog ใดๆเลยค่ะ ใช้เพียง Copy / Past เท่านั้นเองค่ะ
หนูจะเอาเฉพาะ Cancel = (right(Ucase(filename),4)<>".BMP") ไปประยุกต์ใช้
นะคะ
ขอบคุณอย่างยิ่งค่ะอาจารย์
3 @R11166
มี Common Dialog VBA สำหรับ Access มาฝากครับ
ทำการสร้าง Module มา 1 ตัว ยัดใส่ เข้าไปใน Module
Option Compare Database
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.hWnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "A file was not selected!", vbInformation, _
"Select a file using the Common Dialog DLL"
Else
LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
End If
End Function
เวลาใช้ ก็ Variable = LaunchCD(ME)
ทำการสร้าง Module มา 1 ตัว ยัดใส่ เข้าไปใน Module
Option Compare Database
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Private Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.hWnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "A file was not selected!", vbInformation, _
"Select a file using the Common Dialog DLL"
Else
LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
End If
End Function
เวลาใช้ ก็ Variable = LaunchCD(ME)
4 @R11183
ขอเรียนถามเพิ่มเติมเพื่อเป็นความรู้นะคะ
โมดูลดังกล่าว มันให้ผลตอบสนองอย่างไรบ้าง และ
Variable = LaunchCD(ME) ตรงนี้ ต้องนำไปผูกกับส่วนไหนอย่างไรคะ
ขอบคุณค่ะ
โมดูลดังกล่าว มันให้ผลตอบสนองอย่างไรบ้าง และ
Variable = LaunchCD(ME) ตรงนี้ ต้องนำไปผูกกับส่วนไหนอย่างไรคะ
ขอบคุณค่ะ
5 @R11184
มันเป็น Function สร้าง Dialog box ให้เลือก File
คืนค่ามาเป็น ชื่อไฟล์ ที่ User เลือก
ต้อง ขอโทษด้วย
ส่วนนี้ ต้องแก้จาก
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
เป็น
sFilter = "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
ครับ
คืนค่ามาเป็น ชื่อไฟล์ ที่ User เลือก
ต้อง ขอโทษด้วย
ส่วนนี้ ต้องแก้จาก
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
เป็น
sFilter = "JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
ครับ
6 @R11185
ถ้าจะ บังคับ เป็น BMP ล้วนๆ
ก็ Filter
sFilter = "Picture Files (*.BMP)" & Chr(0) & "*.JPG" & Chr(0)
ก็ Filter
sFilter = "Picture Files (*.BMP)" & Chr(0) & "*.JPG" & Chr(0)
7 @R11186
อ๋อ..พอเข้าใจบ้างแล้วค่ะ
หนูจะลองนำไปศึกษา ค่อยๆหัดทำดูนะคะ
ขอบคุณค่ะ
หนูจะลองนำไปศึกษา ค่อยๆหัดทำดูนะคะ
ขอบคุณค่ะ
Time: 0.3728s
เท่าที่เห็นหลายๆ คนใช้ มันมีหลายตัวครับ
- บ้างก็ใช้ Dialog ที่แถมมากับ Access
- บ้างก็ใช้ Dialog ที่เขียนขึ้นเอง หรือไปหามาจากเน็ต (เขียนเป็นฟังก์ชั่นไว้ที่โมดูล)
- บางคน (โดยเฉพาะผม) ก็ใช้ common dialog ที่แถมมากับ vb6
แต่ไม่ว่าจะใช้ตัวไหนก็ตาม โดยส่วนใหญ่แล้ว ทุกๆ dialog จะสามารถใช้ฟิลด์เตอร์ได้ครับ คุณมาลีต้องหาวิธีใช้ฟิลด์เตอร์ให้เจอ แล้วก็ใช้ซะครับ กำหนดฟิลด์เตอร์ไปเลยครับ ให้เลือกเฉพาะไฟล์ .BMP เท่านั้น
นั่นเป็นขั้นแรกครับ
ต่อไป เพื่อป้องกัน ผู้ใช้ระดับที่สูงขึ้นไป (บางคนไม่เลือกจาก dialog แต่ใช้วิธีคีย์พาธและชื่อไฟล์เข้า textbox เราเลยก็ได้)
อันนี้ก็ต้องเขียนโค้ดกำกับ เพื่อตรวจสอบชื่อไฟล์อีกครับ
เอาง่ายๆ สั้นๆ เลยครับ ในเหตุการณ์ BeforeUpdate ก็ได้
Cancel = (right(Ucase(filename),4)<>".BMP")