Đánh giá chủ đề:
  • 1 Votes - 5 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA
#41
(20-06-12, 06:51 PM)lehongduc Đã viết: Chào các Bạn,

Hôm nay tôi muốn trao đổi với các Bạn về vấn đề "Sử dụng Class Module và Kết nối dữ liệu SQL SERVER trong Access VBA" như một giải pháp tối ưu cho các ứng dụng được thiết kế với VBA trong Microsoft Access. Trao đổi này có đính kèm file nguồn để làm ví dụ minh họa.

Để lấy một ví dụ cụ thể, ở đây giả định ta có nhu cầu thiết kế 1 ứng dụng Microsoft Access dùng để quản lý 1 danh bạ điện thoại.

Ứng dụng của chúng ta sẽ bao gồm 1 file dữ liệu và 1 file ứng dụng. Các Bạn có thể tạo File dữ liệu bằng Microsoft Access hoặc SQL SERVER. Ở đây tôi tạo file dữ liệu bằng SQL SERVER.
File dữ liệu đã được nạp trên 15.000 mẫu tin.
Khi file ứng dụng được nạp, ta sẽ cho kết nối với file dữ liệu bằng thủ tục Log-In.

Mục đích của tôi thông qua cách thiết kế trên nhằm:
+ minh họa khả năng của Access VBA có thể lập trình theo hướng đối tượng;
+ kết nối được với nguồn dữ liệu ngoài, ở đây là nguồn SQL SERVER;
+ có thể tạo được những Unbound Form nhằm đáp ứng nhu cầu truy xuất dữ liệu với nhiều người dùng qua mạng máy tính, đồng thời cải thiện được tốc độ xử lý dữ liệu.


Về Cấu trúc của file dữ liệu:
Với ứng dụng này ta chỉ cần có 1 file dữ liệu với 1 bảng dữ liệu. Tất nhiên các Bạn có thể tùy biến thêm nếu thấy cần.
- Tôi đặt tên file dữ liệu này là danhba
- Và tạo 1 bảng dữ liệu có tên là tblDanhsach, với các cột dữ liệu như sau:
+ Ten: tên của 1 người cụ thể trong danh bạ, kiểu dữ liệu Text
+ HoChulot: họ và chữ lót, kiểu dữ liệu Text
+ Gioitinh: xác định giới tính, kiểu dữ liệu Yes/No (mặc định là Nam, với giá trị là True)
+ Ngaysinh: ngày sinh, kiểu dữ liệu Date
+ Dtdd: số điện thoại di động, kiểu dữ liệu Text
+ Dtnha: số điện thoại ở nhà riêng, kiểu dữ liệu Text
+ Dtvp: số điện thoại ở văn phòng làm việc, kiểu dữ liệu Text

Với ứng dụng làm ví dụ sẽ cho ta biết cách:
1. Kết nối với nguồn dữ liệu bên ngoài MS. Access, ở đây là SQL SERVER
2. Viết 1 Class module như thế nào
3. Tạo 1 Unbound Form và gắn kết dữ liệu trên đó như thế nào

Trong bài sau tôi sẽ trình bày tiếp vào nội dung chính của chuyên đề này.
Rất mong các Bạn cùng tham gia nghiên cứu và trao đổi.

Nội dung các file đính kèm:
1. File ứng dụng MS. Access với định dạng mdb có mã nguồn
2. File SQL (Text) dùng để tạo database trên SQL SERVER cục bộ (local) nếu các Bạn muốn tạo.

Cũng xin trao đổi rõ thêm: File ứng dụng và file dữ liệu nêu trên mới chỉ là "sườn" còn "thô", để nó trở thành 1 ứng dụng hoàn chỉnh, chúng ta còn phải tinh chỉnh nhiều thứ; đó cũng chính là công việc mà tôi muốn mời các Bạn cùng tham gia trao đổi, qua đó chúng ta thu hoạch được những kiến thức căn bản chắc chắn hơn về chuyên đề này.

Tài liệu tham khảo:
Tài liệu tôi dùng để tham khảo chính để viết loạt bài này (bao gồm ứng dụng làm ví dụ) là loạt sách:
Beginning Access 2003 VBA, Beginning Access 2007 VBA
của Denise M. Gosnell

Chào các Bạn,
Xin nói thêm về chuyện ứng dụng và dữ liệu còn "thô":

Nói chúng "thô" bởi lẽ:

1. File dữ liệu SQL SERVER chỉ mới có các bảng dữ liệu thôi. Như vậy chúng chỉ mới là chỗ để lưu dữ liệu phát sinh, chưa làm được việc xử lý dữ liệu (ta dễ thấy một phần những việc đơn giản trong việc xử lý dữ liệu này như: lưu, xóa, trích xuất thông tin, lọc thông tin).
Bản thân SQL SERVER là 1 hệ thống quản trị cơ sở dữ liệu mạnh, chứ không chỉ đơn thuần là nơi để lưu dữ liệu. Ta sẽ bàn tới cách giao nhiệm vụ xử lý dữ liệu cho cái file dữ liệu SQL SERVER đã tạo ở trên. Hiện nay việc xử lý dữ liệu vẫn còn do file ứng dụng đãm trách thông qua các câu lệnh SQL trong các module.

2. Nếu chạy file ứng dụng đang có ta sẽ thấy khi mở Form "frmContact" (dùng để cập nhật và xem dữ liệu) sẽ còn mất 1 ít thời gian mà ta có thể cảm nhận được. Mục tiêu của chúng ta là phải làm sao cho nhanh đến mức không cảm thấy phải chờ một chút nào.
Tôi đã kiểm tra thử mở form nói trên với kết nối internet qua 1 USB 3G của Viettel (loại 7.2 Mbps) trên xe hơi đang chạy: thời gian nạp xong form mất khoảng 25 giây.

Có Bạn nào tìm được lý do nào khác không?

Link tải File ứng dụng minh họa, bản cập nhật ngày 15/7/2014:
http://www.mediafire.com/download/j5v854...150714.rar

Mình tạm gọi cách thức cài đặt của bạn là "truy cập lúc có nhu cầu" -> TCLCYC
Vậy bạn có thể phân tích cho mình điểm lợi hại ( về thực thi và công sức code ) của 2 phương pháp TCLCYC và phương pháp relink table theo truyền thống không?
Cám ơn bạn.
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#42
(18-07-12, 01:47 PM)lehongduc Đã viết: Chào các Bạn,

Để giúp các Bạn có căn cứ đánh giá và tối ưu hoá hiệu quả truy xuất dữ liệu của các thủ tục đang có trong file ứng dụng minh hoạ và các thủ tục do chính các Bạn viết hoặc hiệu chỉnh, tôi đã cho nạp vào file dữ liệu trên SQL SERVER:
+ Trên 12.000 chứng từ phát sinh (trong bảng "tblctunx")
+ Với trên 48.000 chi tiết hàng hoá phát sinh (trong bảng "tblctunxct")

Rất mong các Bạn cùng tham gia trao đổi để chúng ta cùng làm sáng tỏ những vấn đề đang thảo luận trong chuyên đề này.

Rất hay, cám ơn bạn.
Trong chuyên đề của bạn hình như chưa có phần phân trang (paging) ?
Nhân tiện cho mình hỏi tí về image : Trong access làm thế nào có thể up load file hình ảnh lên server ? (Không lưu trong database nghen)
thank.
Chữ ký của thucgia Hix, Access quả nhiên lợi hại !!!! http://vibigaba.esy.es/
ღღღღღTài sản của thucgia (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#43
Chào các Bạn,

Có rất nhiều Bạn hỏi tôi làm cách nào để có thể share được MS SQL SERVER qua internet, nhằm mục đích:

1. Phân phối ứng dụng Front-End viết bằng MS. Access đến các máy khách (client)
2. Cho phép truy xuất đến file dữ liệu MS SQL SERVER (Back-End) đặt tại 1 server cố định.

Bạn hoàn toàn có thể làm điều đó mà không cần phải thuê hosting để đặt file dữ liệu MS SQL SERVER lên đó.
Vậy làm bằng cách nào?
Chỉ cần hỏi anh bạn Google là ra thôi mà các Bạn. Và sau đây là 1 link do Google chỉ đến:
http://phanmem.nhagiao.edu.vn/HDCauHinhS...netweb.htm

Link tải tài liệu định dạng PDF: http://www.mediafire.com/download/5cdax5...terNet.pdf

Cũng xin nói để các Bạn yên tâm, chính tôi đã cung cấp cho rất nhiều khách hàng ứng dụng QUẢN LÝ BÁN HÀNG với giải pháp nêu trên. Các khách hàng này đều có quy mô không nhỏ (có khách hàng đến trên 50 chi nhánh, với khối lượng chứng từ phát sinh hàng ngày trên 1.000 chứng từ mỗi chi nhánh, trên 100 users kết nối liên tục) mà mọi việc vẫn trơn tru.

Bạn nào đang say mê MS. Access và muốn kiếm tiền từ nó, xin cứ yên tâm "tiến lên".

Chúc các Bạn thành công.
Chữ ký của lehongduc Lê Hồng Đức
Số ĐT: 0913.941.144
Email: lhongduc@gmail.com, lehongduc@ymail.com
Website: http://quantribanhang.vn
Reply
Những người đã cảm ơn ongke0711 , maidinhdan


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
Question [Help] Link tất các table trong một file.mdb bằng VBA MinhnHang 8 188 8 Giờ trước
Bài mới nhất: MinhnHang
  [Thủ Thuật] Tìm số thứ tự bị thiếu trong dãy toanle 8 204 07-12-16, 02:25 PM
Bài mới nhất: toanle
  Sựa khác nhau giữa Module và Class Module, phạm vi áp dụng của từng loại. MinhnHang 6 304 29-11-16, 09:11 PM
Bài mới nhất: ongke0711
  Tránh xung đột dữ liệu trong access quocdung9999 16 1,693 23-11-16, 11:13 AM
Bài mới nhất: quocdung9999
  [Hỏi] Kết nối nhiều lần hay kết nối 1 lần trong ADO ưu điểm hơn Minh Tiên 1 123 10-11-16, 10:41 AM
Bài mới nhất: maidinhdan

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ơ