Tìm thủ thuật nhanh hơn với chức năng tìm trong Blog

29/8/10

Tùy chọn file Data để liên kết đến

Hỏi: Hiện tại mình đã viết xong một chương trình kế toán phục vụ cho công việc của mình. Có một điều mình muốn áp dụng cho nhiều doanh nghiệp, mỗi doanh nghiệp một file .mdb thấy không hay lắm. Bây giờ mình muốn : trong thư mục D:\KeToan có file ChuongTrinh.mdb (Là chương trình chính), mỗi một doanh nghiệp dữ liệu chứa riêng một file mdb khác ví dụ như Data01, Data02, Data03... (Chỉ có Table thôi). Mình muốn các bạn giúp mình thiết kế một form (trước khi giao diện của chương trình hiện lên) form này hiện lên danh sách các Data có trong thư mục cùng với ChuongTrinh.mdb để cho mình chọn Data… khi đó chương trình sẽ tự liên kết đến Data mà mình đã chọn.
Đáp:
Để làm được như bạn, đầu tiên bạn phải làm được những việc sau:
1/ Liệt kê tên những table nào cần liên kết.
2/Lấy về đường dẫn file Data cũa bạn
3/ Gọi 1 đoạn code cho phép bạn xóa table đang link, và link lại tới file mới!

Bước 1: bạn tự viết ra giấy nhé
Bước 2:
Để chọn được file, bạn phải khai báo bộ thư viện của Office bằng cách vào cửa sổ VBA, Menu Tool--> references, chọn Microsoft Office 11.0 library. (chọn 10.0 với AccessXP).
[Image: OfficeLib.JPG]

Tạo tạo 1 module và copy 2 đoạn code sau vào:

Code 1 dùng gọi hộp chọn file:
Function getFile(Tit As StringformatName As StringformatType As String)Dim dlgOpen As FileDialog
Set dlgOpen 
Application.FileDialog(msoFileDialogOpen)With dlgOpen
    
.Title Tit
    
.Filters.Clear
    
.Filters.Add formatNameformatType
    
.AllowMultiSelect False
    result 
= .Show
    
If (result <> 0Then
getFile 
Trim(dlgOpen.SelectedItems.Item(1))End IfEnd With

End 
Function 

Code 2: Dùng Relink table lại

Sub LinkTable(As Stringpath As String)' kiêÒm tra table, nêìu coì rôÌi thiÌ xoìa ði
On Error GoTo Err

DoCmd.DeleteObject acTable, T
Err:
'
link lai tablelink moi
DoCmd
.TransferDatabase acLink"Microsoft Access"pathacTableTT
End Sub 

Xong phần chuẩn bị code, giờ bạn tạo 1 Form, trên form vẽ 1 textbox tên là txtPath, 1 nút nhấn tên là cmdOpen, 1 nút nhấn tên là cmdreLink

Sự kiệnc click của cmdOpen nhập như sau:

Private Sub cmdOpen_Click()txtPath.Value getFile("Select Data File""data file""*.mdb")End Sub 

Sự kiện click của cmdOpen, nhập vào như sau:

Private Sub cmdreLink_Click()LinkTable "tblKhachhang"txtPath
LinkTable 
"tblTiendien"txtPath
LinkTable 
"tblTienNuoc"txtPath
  'Sửa tên các table tương ứng thành của bạn
msgbox 
" Đã nhập thành công dữ liệu  file " txtpath
End Sub 
[Image: chonfiledata.png]

Demo Download:

Để thảo luận thêm về chủ đề này, mời bạn vào : http://thuthuataccess.com/forum/thread-154-post-222.html

19/8/10

[Thông báo] Thử nghiệm diễn đàn Thủ Thuật Access

Noname chào các anh chị!
Cảm ơn các anh chị thời gian qua đã theo dõi và chia sẻ kinh nghiệm cùng Blog Thủ Thuật Access.
http://thuthuataccess.blogspot.com

Tuy nhiên, có nhiều thắc mắc mà trong phạm vi một blog không cho phép chúng ta chia sẻ kinh nghiệm, học hỏi và phát triển các vấn đề liên quan đến MS Access. Vì vậy, hôm nay Noname xin lập thêm 1 diễn đàn để hỗ trợ, chia sẻ cho các anh chị tốt hơn.
Diễn đàn hiện tại chỉ là thử nghiệm, nên tên miền và host free. Đợi sau này nếu hoạt động tốt, tạo được sân chơi cho các Accessor chúng ta, đồng thời có kinh phí thì No sẽ nghĩ đến chuyện mua tên miền chính thức và Host chính thức!
Tên miền hiện tại của diễn đàn:
http://www.thuthuataccess.co.cc

Tên miền phụ:
http://thuthuataccess.tk

Lưu ý:
- Vì là tên miền và host miễn phí, nên khả năng mất bài viết của quý vị là rất cao. Vì vậy, nếu bài nào thật sự thấy giá trị và tâm huyết, các anh chị nên lưu lại trên máy nhằm giảm rủi ro.
- Một lưu ý nữa là vì host miễn phí nên dung lương có giới hạn, các anh chị nên post file đính kèm lên:
http://www.mediafire.com/ hoặc 1 host miễn phí khác rồi chia sẻ link
Hình ảnh nên post trên http://photobucket.com hoặc 1 trang share hình nào đó rồi chèn vào forum!

Vì đây chỉ là forum thử nghiệm, đang trong quá trình xây dựng nên các anh chị thẳng thắng đóng góp ý kiến vào : http://www.thuthuataccess.co.cc/forum/forum-3.html để diễn đàn hoạt động tốt hơn!

Thân mến!
Noname