Bình chọn: Bạn thấy chủ đề này thế nào
Hay
Không hay
Cần bổ sung thêm
[Hiển thị kết quả]
 
Chú ý: Đây là một bình chọn công cộng, những người khác sẽ có thể thấy những gì bạn bình chọn.
Đánh giá chủ đề:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Thủ Thuật] [Yêu cầu Hàm] Ý tưởng & Nơi yêu cầu thủ thuật
#11
014 haha...lúc đầu tôi cũng test trên Immediate và thấy ra tầm bậy rồi nhưng nghĩ cho nó qua trung gian thử và ok.
- Còn vụ Progress bar % thì bó tay rồi. Đối với code xử lý các action query bằng câu lệnh SQL (như bạn Minh Tiên có đề cập) thì không biết làm các nào đếm số record đã cập nhật. Tôi có thử mấy cách như: dùng rs.RecordAffected nhưng nó chỉ cho kết quả sau khi chạy query xong, dùng DCount để đếm số record trong table vừa Append cũng ko đc. 

- Demo phân quyền version 1 thì đã OK quá rồi, trực quan, dễ sử dụng. Có phiên bản nâng cấp nữa thì tuyệt vời.

Chờ các bản demo của Dân để học hỏi đây.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan
#12
(13-10-16, 02:00 AM)ongke0711 Đã viết: Cách 1 dùng FileSystemObject tôi làm vẫn lấy được tên file tiếng việt có dấu (unicode) mà maidinhdan.
Import nó vô table trước đã.

Link demo: http://www.mediafire.com/file/w6jf257h90ticvu/LayTenFile.mdb

Dùng ADO Recordset thay cho table luôn đi bác

Mã:
Public Sub ListFilesInFolder(ObjBox As Object, strFolderPath As String, _
    Optional strFilter As String)
    On Error GoTo ErrorHandler
    Dim strFileExt As String
    Dim objFSO As Object, objFolder As Object, objFile As Object
    Dim rstADO As Object
    
    If strFolderPath = vbNullString Then Exit Sub
    
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder(strFolderPath)
    Set rstADO = CreateObject("ADODB.RecordSet")
    
    Const adLongVarWChar = 203
    Const adFldMayBeNull = &H40
    Const adOpenForwardOnly = 0
    Const adUseClient = 3
    Const adLockPessimistic = 2
    
    With rstADO
       .Fields.Append "TenFile", adLongVarWChar, 255, adFldMayBeNull
       .CursorType = adOpenForwardOnly
       .CursorLocation = adUseClient
       .LockType = adLockPessimistic
       .Open
    End With

    
    For Each objFile In objFolder.Files
        If strFilter = vbNullString Then
            rstADO.AddNew "TenFile", objFile.Name
        Else
            strFileExt = Mid$(objFile.Name, InStrRev(objFile.Name, ".") + 1)
            If InStr(strFilter, strFileExt) > 0 Then rstADO.AddNew "TenFile", objFile.Name
        End If
    Next
    Set ObjBox.Recordset = rstADO
   
Exit_ErrorHandler:
    Set objFSO = Nothing
    Set objFolder = Nothing
    Set objFile = Nothing
    Set rstADO = Nothing
    Exit Sub

ErrorHandler:
    MsgBox "Err Number: " & Err.Number & vbCrLf & Err.Description, , "Error: ListFilesInFolder"
    Resume Exit_ErrorHandler
End Sub

MTNQ mượn cái Demo của bác, thêm vào cái text box để chọn kiểu file cần lấy:

http://www.mediafire.com/file/x8d4pivd4u...nFile2.rar

.
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn ongke0711 , jeck09nt , Minh Tiên
#13
Dùng ADO Recordset này hay thật. Tôi chưa nghiên cứu về nó 007
Theo vd này tôi hiểu thì ADO Recordset sẽ lưu giữ các records trong bộ nhớ tạm. Nếu vậy khi cần load những Recordset lớn thì có bất lợi gì không MTNQ?
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên
#14
(15-10-16, 01:12 PM)ongke0711 Đã viết: Dùng ADO Recordset này hay thật. Tôi chưa nghiên cứu về nó 007
Theo vd này tôi hiểu thì ADO Recordset sẽ lưu giữ các records trong bộ nhớ tạm. Nếu vậy khi cần load những Recordset lớn thì có bất lợi gì không MTNQ?

Với lượng RAM của các máy bây giờ thì chắc không ảnh hưởng gì mấy  015
Recordset nào cũng dùng đến bộ nhớ tạm, ADO khác ở chỗ có thể ngắt kết nối (hoặc không kết nối) với nguồn dữ liệu  nên thêm các trường (field) thoải mái.

-Trong ví dụ trên MTNQ thêm vào một trường "TenFile" với kiểu  adLongVarWChar. Kiểu dữ liệu này hỗ trợ bảng mã Unicode nên có thể hiển thị Tiếng Việt

-Hàm trên chỉ lọc kiểu file một cách tương đối. Nếu bạn nào muốn lọc chính xác thì sửa lại nhé  007
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn Minh Tiên , ongke0711
#15
(10-10-16, 05:36 PM)maidinhdan Đã viết: Tình hình là muốn phát triển 1 Demo liên quan đến chia sẽ file, Rất mong mọi người giúp đỡ và đóng góp hàm này

Tên hàm: Chia sẽ thư mục bằng Code
Nội dung:
Em có thư mục "D:\ThumucA"

Em muốn khi tạo ra 1 nút click để ThumucA sẽ Shared với 1 tên trong cú pháp hàm

Xin cảm ơn.

Trong post trước cũng đề tài này tôi có đóng góp 1 cách dùng hàm SHELL để gọi Cmd.exe chạy cấp quyền cho Users sử dụng Folder nhưng thực sự chưa đúng yêu cầu là “Share folder”.
Lần này tôi post 1 cái demo dùng để share folder đúng nghĩa. Cũng dùng tool cmd.exe để thực hiện lệnh share. Vì tôi cũng chỉ làm trên máy cá nhân, không có máy trong mạng LAN cty để test nên cũng chưa biết nó có phát sinh gì nữa không. Các bạn test hộ và đóng góp giải pháp luôn giùm nhé.  007
Một số thông tin liên quan:
- Máy tôi dùng Windows 7.
- Khi bật chế độ UAC cao nhất khi chạy cmd.exe nó sẽ hiện cảnh báo để bạn có cho quyền cmd.exe chạy hay không. Nếu tắt UAC, chương trình sẽ chạy, máy tính sẽ không hỏi gì cả.
- Tôi chạy trên quyền Administrator của laptop.

[Hình: 29962180514_0e97bd0888_z.jpg]

[Hình: 29962180224_767f1df7d2_z.jpg]

Cái này là UAC của Windows sẽ hỏi, bạn chỉ cần bấm OK cho chạy là được.

[Hình: 29962180334_0503cff671_n.jpg]



Link file demo: http://www.mediafire.com/file/1np1e21oq9...Folder.mdb
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn Minh Tiên , maidinhdan , huuduy.duy
#16
(27-10-16, 03:19 PM)ongke0711 Đã viết: Trong post trước cũng đề tài này tôi có đóng góp 1 cách dùng hàm SHELL để gọi Cmd.exe chạy cấp quyền cho Users sử dụng Folder nhưng thực sự chưa đúng yêu cầu là “Share folder”.
Lần này tôi post 1 cái demo dùng để share folder đúng nghĩa. Cũng dùng tool cmd.exe để thực hiện lệnh share. Vì tôi cũng chỉ làm trên máy cá nhân, không có máy trong mạng LAN cty để test nên cũng chưa biết nó có phát sinh gì nữa không. Các bạn test hộ và đóng góp giải pháp luôn giùm nhé.  007
Một số thông tin liên quan:
- Máy tôi dùng Windows 7.
- Khi bật chế độ UAC cao nhất khi chạy cmd.exe nó sẽ hiện cảnh báo để bạn có cho quyền cmd.exe chạy hay không. Nếu tắt UAC, chương trình sẽ chạy, máy tính sẽ không hỏi gì cả.
- Tôi chạy trên quyền Administrator của laptop.
Link file demo: http://www.mediafire.com/file/1np1e21oq9...Folder.mdb

Thật là tuyệt vời, Đã test chạy trên WinXp, Window8 ( Login với quyền Administrator nhé, quyền khác nó không chạy )

Góp ý thì không có nó rất hay rồi, chủ yếu chỉnh nút BrowseFolder cho dể dùng thôi.

Đề xuất dùng hàm này luôn.
Mã PHP:
Private Sub cmdBrowse_Click()
Dim dlgopen As FileDialog
Dim strFolder 
As String
Set dlgopen 
Application.FileDialog(msoFileDialogFolderPicker)
strFolder "Chưa chọn folder nào cả"
With dlgopen
    
If .Show = -1 Then
        strFolder 
dlgopen.SelectedItems(1)
        Me.txtPath strFolder
    End 
If
End With
End Sub 
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn ongke0711
#17
(27-10-16, 09:48 PM)maidinhdan Đã viết: Đề xuất dùng hàm này luôn.
Mã PHP:
Private Sub cmdBrowse_Click()
Dim dlgopen As FileDialog
Dim strFolder 
As String
Set dlgopen 
Application.FileDialog(msoFileDialogFolderPicker)
strFolder "Chưa chọn folder nào cả"
With dlgopen
    
If .Show = -1 Then
        strFolder 
dlgopen.SelectedItems(1)
        Me.txtPath strFolder
    End 
If
End With
End Sub 

Trong demo mình dùng cái Shell.Application của windows luôn để khỏi phải khi báo thư viện "Microsoft Office 14.0 Object Library".
Nếu dùng FileDialog như bác Dân gợi ý thì mình sửa chút, đổi sang late binding cũng để tránh khai báo thư viện.


Mã PHP:
Dim dlgopen As Object 'FileDialog'
Dim strFolder As String
Set dlgopen 
Application.FileDialog(4'(msoFileDialogFolderPicker) 
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] xin hỗ trợ bằng Thủ thuật VBA Trần Linh 3 235 13-07-16, 09:06 PM
Bài mới nhất: ongke0711
  [Thủ Thuật] Thủ thuật winshock trong access vba đơn giản thucgia 8 1,064 13-04-15, 09:56 PM
Bài mới nhất: thucgia
  [Hỏi] Xin hỏi Access 2003 Không có biểu tượng Common Dialog Control? ttqt30 0 389 21-10-14, 11:24 AM
Bài mới nhất: ttqt30
  Thuật toán xếp hạng Heiro7 0 681 15-06-12, 07:22 AM
Bài mới nhất: Heiro7
  [Giúp] lấy đường dẫn tương đối cho các Shell dieuchinhlu 1 1,926 18-06-11, 01:07 AM
Bài mới nhất: hieuvn

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ