-
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
maidinhdan > 24-10-17, 12:25 AM
(22-10-17, 10:22 PM)phungminhluan Đã viết: Hôm nay xin nhờ ace giúp đỡ như sau: mình muốn tạo code cho nút lệnh chọn file hình ảnh dùng hàm getfile nhưng sau khi chọn file xong thì copy file đã chọn qua thư mục chỉ định đồng thời đổi tên file đó theo cấu trúc tên định sẵn là mã đối tượng+ các chữ cái đầu trong tên đối tượng +năm sinh của đối tượng liên quan trong cùng record, sau đó mới lấy đường dẫn của file mới đổi tên lưu vào textBOx
Cuối tuần nếu rãnh thì Deomo cho, vì đang đi học.
Thân mến và chúc sức khỏe.
-
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
ongke0711 > 24-10-17, 01:02 PM
(22-10-17, 10:22 PM)phungminhluan Đã viết: Hôm nay xin nhờ ace giúp đỡ như sau: mình muốn tạo code cho nút lệnh chọn file hình ảnh dùng hàm getfile nhưng sau khi chọn file xong thì copy file đã chọn qua thư mục chỉ định đồng thời đổi tên file đó theo cấu trúc tên định sẵn là mã đối tượng+ các chữ cái đầu trong tên đối tượng +năm sinh của đối tượng liên quan trong cùng record, sau đó mới lấy đường dẫn của file mới đổi tên lưu vào textBOx
Ý tưởng này của bạn cũng rất hay. Đang thất học nên rảnh làm demo cho bạn thay bạn maidinhdan.
- Bạn đã dùng FileSystemObject cho hàm getFile thì dùng phương thức CopyFile của nó luôn cho việc copy file từ folder này sang folder khác luôn.
- Hàm tự tạo CopyFileHinh(). Dùng phương thức fso.CopyFile.
Mã PHP:Function CopyFileHinh(strImagePath As String, strFolderPath As String)
Dim answer As Integer
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(strFolderPath) Then
answer = MsgBox("File da ton tai o foleder nay. " _
& "Ban co muon tiep tuc? Neu tiep luc Luu, " _
& "file cu se bi xoa!", _
vbInformation + vbYesNo)
If answer = vbNo Then
Exit Function
End If
Kill strFolderPath
End If
CopyFileHinh = fso.CopyFile(strImagePath, strFolderPath, True)
Set fso = Nothing
End Function
- Code cho nút lệnh copy file ảnh. Trong code này tôi có sử dụng hàm ConvertToUnsign() để chuyển ký tự tiếng Việt có dấu thành không dấu để lưu vào tên file như bạn yêu cầu (để tránh lỗi phát sinh). Vd: nhân viên tên Đức -> ký tự đầu là "Đ" -> chuyển thành "D".
Mã PHP:Private Sub cmdThemHinh_Click()
Dim strHinh As String
Dim strFolderLuuHinh As String
Dim strHinhLuu As String
Dim strTenFileHinh As String
Dim strTen As String
strTen = ConvertToUnSign(Mid(Me.txtTenNV, InStrRev(Me.txtTenNV, " ") + 1, 1)) 'Chuyen sang tieng Viet khong dau de tranh loi'
strTenFileHinh = Me.txtMaNV & strTen & Format(Me.txtNamSinh, "ddmmyyyy") & ".jpg"
strHinh = getFile
If strHinh = "" Then
MsgBox "Ban khong chon file nao.", vbCritical, "Canh bao"
Exit Sub
End If
If MsgBox("Chon Folder de luu anh nhân viên", vbInformation + vbOKCancel, "Chon Folder luu") = vbCancel Then
Exit Sub
Else
strFolderLuuHinh = getFolder
If strFolderLuuHinh = "" Then
MsgBox "Ban khong chon Folder nao de luu.", vbCritical, "Canh bao"
Exit Sub
Else
strHinhLuu = strFolderLuuHinh & "\" & strTenFileHinh
CopyFileHinh strHinh, strHinhLuu
Me.txtHinh = strHinhLuu
'Debug.Print strHinh & vbCrLf; strFolderLuuHinh & vbCrLf; strHinhLuu
End If
End If
End Sub
- Hàm chuyển thành tiếng Việt không dấu - ConvertToUnSign().
Mã PHP:Function ConvertToUnSign(ByVal sContent As String) As String
Dim i As Long
Dim intCode As Long
Dim sChar As String
Dim sConvert As String
ConvertToUnSign = AscW(sContent)
For i = 1 To Len(sContent)
sChar = Mid(sContent, i, 1)
If sChar <> "" Then
intCode = AscW(sChar)
End If
Select Case intCode
Case 273
sConvert = sConvert & "d"
Case 272
sConvert = sConvert & "D"
Case 224, 225, 226, 227, 259, 7841, 7843, 7845, 7847, 7849, 7851, 7853, 7855, 7857, 7859, 7861, 7863
sConvert = sConvert & "a"
Case 192, 193, 194, 195, 258, 7840, 7842, 7844, 7846, 7848, 7850, 7852, 7854, 7856, 7858, 7860, 7862
sConvert = sConvert & "A"
Case 232, 233, 234, 7865, 7867, 7869, 7871, 7873, 7875, 7877, 7879
sConvert = sConvert & "e"
Case 200, 201, 202, 7864, 7866, 7868, 7870, 7872, 7874, 7876, 7878
sConvert = sConvert & "E"
Case 236, 237, 297, 7881, 7883
sConvert = sConvert & "i"
Case 204, 205, 296, 7880, 7882
sConvert = sConvert & "I"
Case 242, 243, 244, 245, 417, 7885, 7887, 7889, 7891, 7893, 7895, 7897, 7899, 7901, 7903, 7905, 7907
sConvert = sConvert & "o"
Case 210, 211, 212, 213, 416, 7884, 7886, 7888, 7890, 7892, 7894, 7896, 7898, 7900, 7902, 7904, 7906
sConvert = sConvert & "O"
Case 249, 250, 361, 432, 7909, 7911, 7913, 7915, 7917, 7919, 7921
sConvert = sConvert & "u"
Case 217, 218, 360, 431, 7908, 7910, 7912, 7914, 7916, 7918, 7920
sConvert = sConvert & "U"
Case 253, 7923, 7925, 7927, 7929
sConvert = sConvert & "y"
Case 221, 7922, 7924, 7926, 7928
sConvert = sConvert & "Y"
Case Else
sConvert = sConvert & sChar
End Select
Next
ConvertToUnSign = sConvert
End Function
Link file demo: http://www.mediafire.com/file/8uyli055p1...Folder.mdb -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
maidinhdan > 25-10-17, 10:21 PM
(24-10-17, 01:02 PM)ongke0711 Đã viết:
Link file demo: http://www.mediafire.com/file/8uyli055p1...Folder.mdbMã PHP:Function CopyFileHinh(strImagePath As String, strFolderPath As String)
Dim answer As Integer
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
If fso.FileExists(strFolderPath) Then
answer = MsgBox("File da ton tai o foleder nay. " _
& "Ban co muon tiep tuc? Neu tiep luc Luu, " _
& "file cu se bi xoa!", _
vbInformation + vbYesNo)
If answer = vbNo Then
Exit Function
End If
Kill strFolderPath
End If
CopyFileHinh = fso.CopyFile(strImagePath, strFolderPath, True)
Set fso = Nothing
End Function
Xin góp ý cho hàm CopyFileHinh như sau:
Mã PHP:Function CopyFileHinh(strImagePath As String, strFolderPath As String)
Dim answer As Integer
Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")
If strImagePath<> strFolderPath then CopyFileHinh = fso.CopyFile(strImagePath, strFolderPath, True)
Set fso = Nothing
End Function
Lý do: Nếu file Chọn cùng với thư mục chọn thì sẽ gây lỗi, bởi hàm Kill strFolderPath đã xóa mất file đó rồi thì nhảy đến lệnh CopyFileHinh = fso.CopyFile(strImagePath, strFolderPath, True) không tim thấy hình để copy.
Vì vậy ở trường hợp này chỉ cần so sánh strImagePath khác với strFolderPath là cho Copy ngay.
Góp ý 2, là Chỉnh tên trong đối số hàm CopyFileHinh;
strImagePath: LinkFileChon hoặc đồi thành từ strFilePathOld
strFolderPath: LinkFileNoiLuu ( tránh dùng strFolderPath gây hiểu nhầm là chỉ có đường dẫn Folder mà không có tên file hoặc đổi thành từ strFilePathNew) -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
phungminhluan > 26-11-17, 01:24 PM
Mình chưa ứng dụng thử nhưng xin cảm ơn 2 bạn rất nhiều! -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
phungminhluan > 23-04-18, 01:37 PM
Hoạt động hoàn hảo luôn, cảm ơn mọi người rất nhiều! -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
bvchauthanh > 14-10-19, 03:59 PM
Tiêu đề: Cách lưu hình ảnh vào trong table
Nội dung:
Hiện mình muốn tạo form để lưu hình ảnh vào trong table với trường có kiểu attachment. Mong mọi người giúp đỡ. Chân thành cám ơn
p/s: lưu trực tiếp từ table mình làm được, nhưng muốn tạo form để chọn file ảnh để lưu giống như lưu đường dẫn file ảnh vậy đó -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
ongke0711 > 14-10-19, 05:36 PM
(14-10-19, 03:59 PM)bvchauthanh Đã viết: Tiêu đề: Cách lưu hình ảnh vào trong table
Nội dung:
Hiện mình muốn tạo form để lưu hình ảnh vào trong table với trường có kiểu attachment. Mong mọi người giúp đỡ. Chân thành cám ơn
p/s: lưu trực tiếp từ table mình làm được, nhưng muốn tạo form để chọn file ảnh để lưu giống như lưu đường dẫn file ảnh vậy đó
Bạn xem bài này: https://thuthuataccess.com/forum/post-29...l#pid29691
Tôi dùng Image Control và lưu đường dẫn (Text) ảnh vào table chứ không dùng Field kiểu OLE Object hoặc Attachment.
- Lưu đường dẫn thì sẽ không làm file CSDL nặng thêm.
- Lưu kiểu Attachment, OLE là lưu trực tiếp vào Table. Làm dung lượng file accbd, mdb sẽ phình lên nếu nhiều hình. -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
bvchauthanh > 14-10-19, 08:19 PM
(14-10-19, 05:36 PM)ongke0711 Đã viết: Bạn xem bài này: https://thuthuataccess.com/forum/post-29...l#pid29691
Tôi dùng Image Control và lưu đường dẫn (Text) ảnh vào table chứ không dùng Field kiểu OLE Object hoặc Attachment.
- Lưu đường dẫn thì sẽ không làm file CSDL nặng thêm.
- Lưu kiểu Attachment, OLE là lưu trực tiếp vào Table. Làm dung lượng file accbd, mdb sẽ phình lên nếu nhiều hình.
Tks ongke0711 đã trả lời, vì mình chỉ cần lưu vài hình + tránh người dùng lỡ tay xóa => mất file, nên lấy ý tưởng nhét hình vào database, lục internet cả buổi chiều cuối cùng cũng có cách, nhưng giờ muốn hiển thị file Attachment đó lên control Image đang gặp khó, có cao nhân nào giúp mình 1 tay với! tks all! -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
bvchauthanh > 14-10-19, 09:38 PM
(14-10-19, 08:19 PM)bvchauthanh Đã viết:
(14-10-19, 05:36 PM)ongke0711 Đã viết: Bạn xem bài này: https://thuthuataccess.com/forum/post-29...l#pid29691
Tôi dùng Image Control và lưu đường dẫn (Text) ảnh vào table chứ không dùng Field kiểu OLE Object hoặc Attachment.
- Lưu đường dẫn thì sẽ không làm file CSDL nặng thêm.
- Lưu kiểu Attachment, OLE là lưu trực tiếp vào Table. Làm dung lượng file accbd, mdb sẽ phình lên nếu nhiều hình.
Tks ongke0711 đã trả lời, vì mình chỉ cần lưu vài hình + tránh người dùng lỡ tay xóa => mất file, nên lấy ý tưởng nhét hình vào database, lục internet cả buổi chiều cuối cùng cũng có cách, nhưng giờ muốn hiển thị file Attachment đó lên control Image đang gặp khó, có cao nhân nào giúp mình 1 tay với! tks all!
Đã tìm ra được phương án cho ý tưởng này, sẵn đây share luôn cho ace nào cần dùng
Vui lòng tham khảo tại đây! -
RE: [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
ongke0711 > 14-10-19, 10:48 PM
(14-10-19, 09:38 PM)bvchauthanh Đã viết: Đã tìm ra được phương án cho ý tưởng này, sẵn đây share luôn cho ace nào cần dùng
Vui lòng tham khảo tại đây!
- Bạn cũng nên để ý chút là Field dạng Attachment có thể lưu nhiều file vào cùng 1 Record, do đó nên viết code xoá file ảnh cũ rồi thêm ảnh mới.
- Người dùng đôi khi không quen dùng menu chuột phải để xử lý (thêm/xoá) vào field Attachment (và là tiếng Anh) nên cũng nên thiết kế nút lênh thay cho menu chuột phải.