Xây dựng chương trình quản lý bán hàng bằng VBA có thực sự "ổn" không? (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhnghi07

Thành viên mới
Tham gia
17/3/14
Bài viết
23
Được thích
0
Xin các Thầy và các anh chị đi trước dành chút thời gian gợi ý giùm em với ạ:

Em đang xây dựng 1 chương trình bán hàng cho cửa hàng em: Có khoảng 1000 phiếu thanh toán mỗi tháng, khoảng 3000 mặt hàng trong kho. Em dùng Access làm Cơ Sở Dữ Liệu.
Em dùng 3 loại máy in, và máy quét mã vạch.
Tất cả em đều dùng code VBA excel để điều khiển, hiện tại chúng đang chạy ổn. Tuy nhiên, mỗi ngày em bổ sung thêm các tiện ích và phát sinh thêm nhiều code.

Xin cho em hỏi là code VBA có bị hạn chế khi phát triển lớn chương trình quản lý ?

Có nên ngừng nghiên cứu VBA và học một loại ngôn ngữ lập trình khác để dễ quản lý Dữ liệu?

Kính mong các thầy và anh chị chia sẻ giúp ạ! Em cảm ơn!
 
Theo tôi nghĩ, nếu bạn tạo CSDL chuẩn và các thuật toán trong VBA hợp lý thì có phát triển thêm cũng không có vấn đề gì cả.
Vấn đề nan giải là việc bảo mật code của VBA Excel rất không an toàn.
 
Xin các Thầy và các anh chị đi trước dành chút thời gian gợi ý giùm em với ạ:

Em đang xây dựng 1 chương trình bán hàng cho cửa hàng em: Có khoảng 1000 phiếu thanh toán mỗi tháng, khoảng 3000 mặt hàng trong kho. Em dùng Access làm Cơ Sở Dữ Liệu.
Em dùng 3 loại máy in, và máy quét mã vạch.
Tất cả em đều dùng code VBA excel để điều khiển, hiện tại chúng đang chạy ổn. Tuy nhiên, mỗi ngày em bổ sung thêm các tiện ích và phát sinh thêm nhiều code.

Xin cho em hỏi là code VBA có bị hạn chế khi phát triển lớn chương trình quản lý ?

Có nên ngừng nghiên cứu VBA và học một loại ngôn ngữ lập trình khác để dễ quản lý Dữ liệu?

Kính mong các thầy và anh chị chia sẻ giúp ạ! Em cảm ơn!
Đã dùng CSDL Access thì làm luôn trong Access đi. Tận dụng công cụ Query của nó để truy vấn dữ liệu đỡ tốn cả đống code VBA. Có thể thiết kế ứng dụng cho nhiều người dùng (mạng LAN) nhập liệu đồng thời. Bảo mật code thì xài luôn các tính năng có sẵn của nó không cần thêm code. Dữ liệu ngày càng lớn thì nâng cấp lên dùng SQL Server làm Back-end.
 
Đã dùng CSDL Access thì làm luôn trong Access đi. Tận dụng công cụ Query của nó để truy vấn dữ liệu đỡ tốn cả đống code VBA. Có thể thiết kế ứng dụng cho nhiều người dùng (mạng LAN) nhập liệu đồng thời. Bảo mật code thì xài luôn các tính năng có sẵn của nó không cần thêm code. Dữ liệu ngày càng lớn thì nâng cấp lên dùng SQL Server làm Back-end.
Em cảm ơn! Em sẽ tìm hiểu ngay
 
Nếu mức độ quản lý sản phẩm cần chi tiết thì với 3000 mặt hàng có nhiều tính chất khác nhau chẳng hạn tivi sẽ có những thuộc tính như cỡ màn hình, độ phân giải, công nghệ màn hình... còn xe đạp sẽ có cỡ bánh, chủng loại, size... chắc phải cỡ NoSQL hay PostgreSQL (hỗ trợ json) mới đủ sự linh động.
CSDL quan hệ như Access phù hợp khi quản lý mặt hàng với thông tin cơ bản chung chung (giá, xuất xứ, trọng lượng..)
 
Nếu mức độ quản lý sản phẩm cần chi tiết thì với 3000 mặt hàng có nhiều tính chất khác nhau chẳng hạn tivi sẽ có những thuộc tính như cỡ màn hình, độ phân giải, công nghệ màn hình... còn xe đạp sẽ có cỡ bánh, chủng loại, size... chắc phải cỡ NoSQL hay PostgreSQL (hỗ trợ json) mới đủ sự linh động.
CSDL quan hệ như Access phù hợp khi quản lý mặt hàng với thông tin cơ bản chung chung (giá, xuất xứ, trọng lượng..)
Em cảm ơn! Mỗi linh kiện bên em có khoảng 2 đên 4 thuộc tính, Cảm ơn anh gợi ý để em liệu!
 
Tôi khuyên bạn nên học Javascript viết ứng dụng dựa trên nền tảng Electron và một ngày nào đó bạn sẽ nghĩ đến việc viết đồng bộ với Ứng dụng Android hay IOS thì không có gì khó khăn.

Thời đại công nghệ nên hãy lựa chọn theo công nghệ.
VBA mãi mãi chết chân ở hệ điều hành Windows.

Bạn nghĩ xem Google Drive Desktop, Google Spreadsheets, Facebook Messenger Desktop, Github Desktop, Discod Desktop,...nhiều lắm, đều dựa trên nền tảng Electron.
Vì nó quá đỉnh, và dễ học.

Lựa chọn này là tốt nhất hiện tại.
 
Tôi khuyên bạn nên học Javascript viết ứng dụng dựa trên nền tảng Electron và một ngày nào đó bạn sẽ nghĩ đến việc viết đồng bộ với Ứng dụng Android hay IOS thì không có gì khó khăn.

Thời đại công nghệ nên hãy lựa chọn theo công nghệ.
VBA mãi mãi chết chân ở hệ điều hành Windows.

Bạn nghĩ xem Google Drive Desktop, Google Spreadsheets, Facebook Messenger Desktop, Github Desktop, Discod Desktop,...nhiều lắm, đều dựa trên nền tảng Electron.
Vì nó quá đỉnh, và dễ học.

Lựa chọn này là tốt nhất hiện tại.
Cảm ơn anh với gợi ý thật đẹp! em cảm ơn
 
Cảm ơn anh với gợi ý thật đẹp! em cảm ơn
tôi bày cho 1 cách tạm keo là Ngon - bổ - rẻ
1/ tạo 1 Data.accdb chỉ xử lý những vấn đề cần tạo mối liên hệ

2/ tạo vài cái như mục số 1 chỉ lưu dữ liệu thô mà ko thực hiện +-*/ lằng nhằng trong đó vì lách cái giới hạn Access chỉ 2G

3/ xong từ Excel làm cái Form trên Form hay Form trên Sheet cứ thế mà truy xuất dữ liệu từ Access
...
khá hơn chút thì làm Data.sqlite = lưu hết cuộc đời luôn may ra nó đầy dữ liệu

nhiều tiền chút + khả năng kiến thức khá thì Ms Server + ....

Và luôn nghỉ tới cái mình có khả năng ... đừng nghỉ tới cái trên cung trăng mà khả năng mình ko thực hiện được

Nếu nhiều tiền thì thuê : yêu cầu vậy = làm được không = tiền ? = ok chốt = thế thôi
 
2/ tạo vài cái như mục số 1 chỉ lưu dữ liệu thô mà ko thực hiện +-*/ lằng nhằng trong đó vì lách cái giới hạn Access chỉ 2G

Một file Database Access giới hạn 2G là đúng rồi nhưng ứng dụng Access có thể kết nối (linked Table) với nhiều Database một lúc nhé bạn.
Còn các phần +-*/ như bạn nói (Query, Form, Report. Module) nếu thiết kế giao diện lung linh cũng chiếm chừng 5-10M thì có là bao so với 2G.

3/ xong từ Excel làm cái Form trên Form hay Form trên Sheet cứ thế mà truy xuất dữ liệu từ Access
Truy vấn (query) từ nội tại không phải nhanh hơn là truy vấn từ bên ngoài à?
 
Một file Database Access giới hạn 2G là đúng rồi nhưng ứng dụng Access có thể kết nối (linked Table) với nhiều Database một lúc nhé bạn.
Còn các phần +-*/ như bạn nói (Query, Form, Report. Module) nếu thiết kế giao diện lung linh cũng chiếm chừng 5-10M thì có là bao so với 2G.


Truy vấn (query) từ nội tại không phải nhanh hơn là truy vấn từ bên ngoài à?
tùy có cái nhanh có cái ko nhanh... vấn đề là ai thiết kế cái gì và như thế nào thôi
VD sau
1/ khi tôi xuất hàng đi thì cái cột hàng còn tồn nó trừ đi tương ứng với cột số lượng
2/ khi nhập vào thì nó cộng thêm tương ứng
3/ khi tồn còn 100 mà tối xuất 120 nó ko cho xuất
4/ Excel làm Form trên Sheet ... còn Data = Access
....
...
nhiều tay viết phần mêm chào tôi ... tôi yêu cầu 3 mục trên = tịt đấy

sơ bộ thế thôi ... còn nhiều ko nói nữa ... đó là tận dụng excel

1632544305794.png
 
Lần chỉnh sửa cuối:
tôi bày cho 1 cách tạm keo là Ngon - bổ - rẻ
1/ tạo 1 Data.accdb chỉ xử lý những vấn đề cần tạo mối liên hệ

2/ tạo vài cái như mục số 1 chỉ lưu dữ liệu thô mà ko thực hiện +-*/ lằng nhằng trong đó vì lách cái giới hạn Access chỉ 2G

3/ xong từ Excel làm cái Form trên Form hay Form trên Sheet cứ thế mà truy xuất dữ liệu từ Access
...
khá hơn chút thì làm Data.sqlite = lưu hết cuộc đời luôn may ra nó đầy dữ liệu

nhiều tiền chút + khả năng kiến thức khá thì Ms Server + ....

Và luôn nghỉ tới cái mình có khả năng ... đừng nghỉ tới cái trên cung trăng mà khả năng mình ko thực hiện được

Nếu nhiều tiền thì thuê : yêu cầu vậy = làm được không = tiền ? = ok chốt = thế thôi
Một file Access có giới hạn là 2G vậy thì thay vì nhiều Table trong một file Access ta cứ tạo mỗi Table là một file thì xài chắc mệt nghỉ luôn hen anh.
 
VD sau
1/ khi tôi xuất hàng đi thì cái cột hàng còn tồn nó trừ đi tương ứng với cột số lượng
2/ khi nhập vào thì nó cộng thêm tương ứng
3/ khi tồn còn 100 mà tối xuất 120 nó ko cho xuất
4/ Excel làm Form trên Sheet ... còn Data = Access
....
...
nhiều tay viết phần mêm chào tôi ... tôi yêu cầu 3 mục trên = tịt đấy


View attachment 266639

Cái chuyện tính tồn kho là bình thường và là tính năng cơ bản trong các ứng dụng bán hàng thôi mà bạn. Vấn đề là bạn gặp người không biết viết thôi. :D
Trong Access tôi chỉ viết cái hàm OnHand() và gọi khi chọn mã hàng là ra thôi.

Screen Shot 2021-09-25 at 12.55.24.png


Screenshot at Sep 25 12-47-24.png

Screen Shot 2021-09-25 at 12.40.07.png
 
xong từ Excel làm cái Form trên Form hay Form trên Sheet cứ thế mà truy xuất dữ liệu từ Access
Cảm ơn anh, em đang làm theo hướng anh nói. Vậy nên rất vui khi anh gợi ý thế. Tuy nhiên, sau khi nghe các anh gợi mở ở trên: em cũng dự tính sau này phải nhờ đến các chuyên gia chứ trình của chúng em không dám đi sâu quá!
 
Cái chuyện tính tồn kho là bình thường và là tính năng cơ bản trong các ứng dụng bán hàng thôi mà bạn. Vấn đề là bạn gặp người không biết viết thôi. :D
Trong Access tôi chỉ viết cái hàm OnHand() và gọi khi chọn mã hàng là ra thôi.

View attachment 266643


View attachment 266641

View attachment 266642
Thử sức viết đi nè nếu OK thì bán tôi mua cho hay tôi bán cho nhiều người khác cho

1/ Thiết kế 1 Files Main.acddb chỉ có Form xuất , Nhập hàng + truy xuất dữ liệu khi cần thiết theo yêu cầu
còn trên File đó ko lưu bất cứ dữ liệu gì

2/ Thiết kế 1 DataNHapXuat.accdb chỉ lưu dữ liệu thô khi mục số 1 nhập xuất lưu vào đó

3/ tùy bạn tao thêm mấy Data nữa thì tùy nhưng bắt buộc mục số 1 là không có lưu bất cứ dữ liệu gì lên đó ... chỉ là Form bán hàng

4/ Kiểm hàng xuất nhập trực quan như tôi mô tả bài trước ... thấy luôn còn tồn bao nhiều trên Form mục số 1

5/ khi bán hàng nó tự động tính chiết khấu theo giá trị đơn hàng
VD: tổng giá trị đơn hàng là 5 triệu thì nó tự động lấy chiết khấu là 3% còn 10 triệu là 4% xem hình dưới

1632552918807.png


VD đơn 10 triệu
1632553051834.png


5/ Mục chiết khấu có thể tự nhập = tay khi bán cho khách hàng quen mà lấy ít chiết khấu nó xuống 3% thay vì tự nhập là 4% ............... quan trọng nó tự kiểm chiết nhập vào
VD nhập vào là 4.45 % mà nhập tay là 6% = bán lỗ thì nó không cho nhập

Xem hình
1632553754096.png


Mục trên xử lý vấn đề phá sản khi bán mà quên
VD nhập về 4.5% mà mắt nhắn mắt mở nhâp chiết khấu bán 40 % ( bốn mươi)

..... còn nữa ... hay thử mấy mục mô tả đó trước xem khả năng tới đâu xong tính


Quan trọng và bắt buộc mục số 1 chỉ có Form Bán - Nhập còn lại ko lưu bất cứ cái gì trong File đó ( chỉ thế + Code thôi )
 
Lần chỉnh sửa cuối:
Thử sức viết đi nè nếu OK thì bán tôi mua cho hay tôi bán cho nhiều người khác cho

1/ Thiết kế 1 Files Main.acddb chỉ có Form xuất , Nhập hàng + truy xuất dữ liệu khi cần thiết theo yêu cầu
còn trên File đó ko lưu bất cứ dữ liệu gì

2/ Thiết kế 1 DataNHapXuat.accdb chỉ lưu dữ liệu thô khi mục số 1 nhập xuất lưu vào đó

3/ tùy bạn tao thêm mấy Data nữa thì tùy nhưng bắt buộc mục số 1 là không có lưu bất cứ dữ liệu gì lên đó ... chì là Form bán hàng

4/ Kiểm hàng xuất nhập trực quan như tôi mô tả bài trước ... thấy luôn còn tồn bao nhiều trên Form mục số 1

5/ khi bán hàng nó tự động tính chiết khấu theo giá trị đơn hàng
VD: tông giá trị đơn hàng là 5 triệu thì nó tự động lấy chiết khấu là 3% còn 10 triệu là 4% xem hình dưới
VD đơn 10 triệu
5/ Mục chiết khấu có thể tự nhập = tay khi bán cho khách hàng quen mà lấy ít chiết khấu nó xuống 3% thay vì tự nhập là 4% ............... quan trong nó tự kiểm chiết nhập nhập vào VD là 5 % mà nhập tay là 6% = bán lỗ thì nó không cho nhập

Xem hình
Mục trên xử lý vấn đề phá sản khi bán mà quên VD nhập về 4.5% mà mắt nhắn mắt mở nhâp chiết khấu bán 40 % ( bốn mươi)

..... còn nữa ... hay thử mấy mục mô tả đó trước xem khả năng tới đâu xong tính


Quan trọng và bắt buộc mục số 1 chỉ có Form bán - nhap còn lại ko lưu bất cứ cái gì trong File đó ( chỉ thế + Code thôi )

Bạn tức cười quá! Viết ứng dụng tính tiền chứ đâu có viết thử chơi, thử sức.
Nhưng vấn đề tự động chiết khấu, bẫy lỗi nhập sai, tự động áp chương trình khuyến mãi tuỳ thời điểm vô nó chuyện là bình thường.
Cái form Phiếu Xuất như hình của tôi ở trên đã có hầu như đầy đủ các bẫy lỗi như bạn đề cập. Đây là cái module bán hàng cơ bản. Nó còn phải tích hợp code, tổ chức lưu dữ liệu sẳn để sau này người ra mua thêm module kế toán thì nó sẽ móc nối dữ liệu, tài khoản, định khoản qua để tổng hợp các báo cáo kế toán, tính tồn kho, tồn kho bình quân gia quyền, báo cáo thuế v.v.. nữa bạn à.
Còn chuyện thiết kế CSDL ra làm sao thì tự chuyên môn của họ tổ chức xây dựng CSDL chứ ai lại đi qui định bạn. Cái mục số 1, số 2 là cách thiết kế cơ bản của Access rồi đó bạn và đó là thế mạnh của Access. Dùng từ đúng là Backend Database chỉ lưu Table, Frontend Database lưu các đối tượng còn lại (Query, Form, Report, Module).
Túm lại là tôi không tìm được lý do gì để hứng thú, để viết ở đây cả. :)
 
Bạn tức cười quá! Viết ứng dụng tính tiền chứ đâu có viết thử chơi, thử sức.
Nhưng vấn đề tự động chiết khấu, bẫy lỗi nhập sai, tự động áp chương trình khuyến mãi tuỳ thời điểm vô nó chuyện là bình thường.
Cái form Phiếu Xuất như hình của tôi ở trên đã có hầu như đầy đủ các bẫy lỗi như bạn đề cập. Đây là cái module bán hàng cơ bản. Nó còn phải tích hợp code, tổ chức lưu dữ liệu sẳn để sau này người ra mua thêm module kế toán thì nó sẽ móc nối dữ liệu, tài khoản, định khoản qua để tổng hợp các báo cáo kế toán, tính tồn kho, tồn kho bình quân gia quyền, báo cáo thuế v.v.. nữa bạn à.
Còn chuyện thiết kế CSDL ra làm sao thì tự chuyên môn của họ tổ chức xây dựng CSDL chứ ai lại đi qui định bạn. Cái mục số 1, số 2 là cách thiết kế cơ bản của Access rồi đó bạn và đó là thế mạnh của Access. Dùng từ đúng là Backend Database chỉ lưu Table, Frontend Database lưu các đối tượng còn lại (Query, Form, Report, Module).
Túm lại là tôi không tìm được lý do gì để hứng thú, để viết ở đây cả. :)
Tôi đặt hàng như thế đấy ... xét thấy viết được theo yêu cầu thì báo giá ... còn ko thì thôi
rất đơn giản thế thôi
 
Cái chuyện tính tồn kho là bình thường và là tính năng cơ bản trong các ứng dụng bán hàng thôi mà bạn. Vấn đề là bạn gặp người không biết viết thôi. :D
Trong Access tôi chỉ viết cái hàm OnHand() và gọi khi chọn mã hàng là ra thôi.

View attachment 266643


View attachment 266641

View attachment 266642
Nhìn rất đẹp và hoành tráng, nhưng một chương trình như thế mà bị mất điểm bởi cái MsgBox không hiển thị được bằng tiếng Việt.
 
Nhìn rất đẹp và hoành tráng, nhưng một chương trình như thế mà bị mất điểm bởi cái MsgBox không hiển thị được bằng tiếng Việt.

Cái file ở dưới có msgbox là Access 2003, viết cách đây hơn chục năm rồi. Lúc đó mới lò dò tập viết thôi. Đây là hình của 2 file khác nhau. Tôi post lên để nói rằng là ứng dụng viết lúc sơ khai cũng đã có vụ kiểm tra tồn kho khi nhập liệu rồi.
Nhìn hình thấy liền phong cách thiết kế lúc đầu nó nhà quê cỡ nào ngay. Lúc đó chưa quan tâm UI, UX gì cả.
 
Lần chỉnh sửa cuối:
Nhìn rất đẹp và hoành tráng, nhưng một chương trình như thế mà bị mất điểm bởi cái MsgBox không hiển thị được bằng tiếng Việt.
thực ra họ cho vào trong chớp mắt ... chắc file đó viết lâu rồi nên làm biếng hay quên cho vào cho nó đẹp chút thôi
 
thực ra họ cho vào trong chớp mắt ... chắc file đó viết lâu rồi nên làm biếng hay quên cho vào cho nó đẹp chút thôi
Em biết chứ, nhưng nếu còn xài thì cũng nên cập nhật code, hủy bỏ những code rườm rà, thay vào những code ngắn gọn và hiệu quả hơn, chạy nhanh hơn, thiết kế lại giao diện cho bắt mắt. Đó là quan điểm của em.
 
Lần chỉnh sửa cuối:
Em biết chứ, nhưng nếu còn xài thì cũng nên cập nhật code, hủy bỏ những code rườm rà, thay vào những code ngắn gọn và hiệu quản hơn, chạy nhanh hơn, thiết kế lại giao diện cho bắt mắt. Đó là quan điểm của em.
cho cái Msgbox có ICON lấy theo Windows mà nghĩa úp mấy năm trước ấy là rất sinh động
 
cho cái Msgbox có ICON lấy theo Windows mà nghĩa úp mấy năm trước ấy là rất sinh động
Em nhớ là năm 2015 em có bài viết:

Tặng Hàm MsgBox Việt hóa font Unicode tuyệt đẹp! (Phần 2 - 32bit/64bit)

Tuy nhiên đó là viết trên Excel chứ trên Access em chưa biết code viết thế nào.

Trong VBA Excel ngoài Việt hóa nội dung của MsgBox, em còn mã hóa luôn nút lệnh của nó thành tiếng Việt luôn.

Thực chất là em viết từ năm 2012, sau đó mới cải tiến thêm:

Tặng Hàm MsgBox Việt hóa bằng Unicode tuyệt đẹp!

1632558477097.png
 
Lần chỉnh sửa cuối:
Nhìn rất đẹp và hoành tráng, nhưng một chương trình như thế mà bị mất điểm bởi cái MsgBox không hiển thị được bằng tiếng Việt.
tự ảnh không sửa đó chứ :)

Anh thiết kế đẹp quá
Cái chuyện tính tồn kho là bình thường và là tính năng cơ bản trong các ứng dụng bán hàng thôi mà bạn. Vấn đề là bạn gặp người không biết viết thôi. :D
Trong Access tôi chỉ viết cái hàm OnHand() và gọi khi chọn mã hàng là ra thôi.
View attachment 266641

View attachment 266642
 
Em nhớ là năm 2015 em có bài viết:

Tặng Hàm MsgBox Việt hóa font Unicode tuyệt đẹp! (Phần 2 - 32bit/64bit)

Tuy nhiên đó là viết trên Excel chứ trên Access em chưa biết code viết thế nào.

Trong VBA Excel ngoài Việt hóa nội dung của MsgBox, em còn mã hóa luôn nút lệnh của nó thành tiếng Việt luôn.

View attachment 266657
Gợi ý cho nâng cấp nó lên 1 chút nữa nè
thêm cái hàm API sau nó vừa xử lý Unicode + tự đóng sau 1 khoãng thời gian mặc định xx giây
Mã:
Private Declare Function MessageBoxTimeout Lib "user32" _
          Alias "MessageBoxTimeoutW" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, _
          ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) As Long
 
Mình có thử máy cái chương trình của Ảnh viết rồi chỉn chu lắm :thumbs:
Mình cho rằng viết code thì phải chỉn chu, nên có thời gian chỉ là một ứng dụng Báo cáo thôi mình đã viết 3 thứ tiếng trên file của mình (lúc đó làm cho công ty Hàn Quốc):

1632560577890.png

1632560599475.png

1632560615952.png

Ngay cả MsgBox cũng phải là Tiếng Hàn mới chịu à nha!

1632560840320.png

Gợi ý cho nâng cấp nó lên 1 chút nữa nè
thêm cái hàm API sau nó vừa xử lý Unicode + tự đóng sau 1 khoãng thời gian mặc định xx giây
Mã:
Private Declare Function MessageBoxTimeout Lib "user32" _
          Alias "MessageBoxTimeoutW" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, _
          ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) As Long
Để em nghiên cứu, nhưng chờ ổng tự tắt lâu lắm, tự bấm tắt cho lành! Kakakaka.
 
Mình cho rằng viết code thì phải chỉn chu, nên có thời gian chỉ là một ứng dụng Báo cáo thôi mình đã viết 3 thứ tiếng trên file của mình (lúc đó làm cho công ty Hàn Quốc):

View attachment 266661

View attachment 266662

View attachment 266663


Để em nghiên cứu, nhưng chờ ổng tự tắt lâu lắm, tự bấm tắt cho lành! Kakakaka.
Giỏi vậy bạn biết 3 thứ tiếng luôn
 
Gợi ý cho nâng cấp nó lên 1 chút nữa nè
thêm cái hàm API sau nó vừa xử lý Unicode + tự đóng sau 1 khoãng thời gian mặc định xx giây
Mã:
Private Declare Function MessageBoxTimeout Lib "user32" _
          Alias "MessageBoxTimeoutW" (ByVal hWnd As Long, ByVal lpText As Long, ByVal lpCaption As Long, _
          ByVal wType As VbMsgBoxStyle, ByVal wlange As Long, ByVal dwTimeout As Long) As Long
Những tham số thời gian trong Windows API thường là MILI GIÂY (ms) chứ không phải GIÂY (s)

Truyền 10000 thì còn đọc được thông báo chứ truyền 10 thì bó tay.
 
Những tham số thời gian trong Windows API thường là MILI GIÂY (ms) chứ không phải GIÂY (s)

Truyền 10000 thì còn đọc được thông báo chứ truyền 10 thì bó tay.
cái đó là Hàm anh viết đấy ... còn Em Copy Úp ... 6000 = 6 s -0-0-0-
 
Em nhớ là năm 2015 em có bài viết:

Tặng Hàm MsgBox Việt hóa font Unicode tuyệt đẹp! (Phần 2 - 32bit/64bit)

Tuy nhiên đó là viết trên Excel chứ trên Access em chưa biết code viết thế nào.

Trong VBA Excel ngoài Việt hóa nội dung của MsgBox, em còn mã hóa luôn nút lệnh của nó thành tiếng Việt luôn.
À há, mình thử code trên Access VBA và hàm MsgBox Việt hóa của mình xài OK luôn nhé các bạn!

1632565028075.png

1632565724433.png
 
Lần chỉnh sửa cuối:
Quý vị đi ngược hết trơn rồi.
Một phần mềm quản lý phải bắt đầu bằng CSDL. Từ phân tích yêu cầu dẫn đến thiết kế.
Sau khi thiết kế và dựng được cái prototype (mẫu) để thử rồi thì người ta mới bắt đầu viết code. Mà cũng chỉ code mấy cái giao diện căn bản.
Sau khi chắc ăn rồi mới thêm mắm muối vào mấy cái giao diện cho nó đầy đủ hoa lá cành.

Quý vị chú trọng vào cái giao diện người dùng ngay từ đầu. Tuy trên lý thuyết, cái thiết kế CSDL không bắt buộc phải uốn theo. Trên thực tế thì chuyện ấy sẽ xảy ra. Bởi vì người thiết kế giao diện có khuynh hướng bảo vệ thiết kế của mình và sẵn sàng hy sinh thiết kế CSDL. Đấy là đi ngược.

@chủ thớt:
Không cần lo cái chuyện VBA có "ổn" không.
Nếu bạn đã phải hỏi câu này thì tầm vực vấn đề của bạn VBA thừa sức chạy.
Nếu tầm vực vấn đề của bạn ra vượt ngoài (*1) VBA thì bạn cần chuyên viên thiết kế và phát triển (design & develop) chứ không hỏi suông được đâu.

(*1) khái niệm "vượt ngoài" chỉ là tương đối. Ai cũng biết một chiếc xe heo chở 10 chuyến thì cũng hết cái công-ten-nơ. Nhưng làm việc như thế có hiệu quả hay không?
 
Tôi khuyên bạn nên học Javascript viết ứng dụng dựa trên nền tảng Electron và một ngày nào đó bạn sẽ nghĩ đến việc viết đồng bộ với Ứng dụng Android hay IOS thì không có gì khó khăn.

Thời đại công nghệ nên hãy lựa chọn theo công nghệ.
VBA mãi mãi chết chân ở hệ điều hành Windows.

Bạn nghĩ xem Google Drive Desktop, Google Spreadsheets, Facebook Messenger Desktop, Github Desktop, Discod Desktop,...nhiều lắm, đều dựa trên nền tảng Electron.
Vì nó quá đỉnh, và dễ học.

Lựa chọn này là tốt nhất hiện tại.

Tôi cũng là người tạo sản phẩm ứng dụng chuyên ngành. Đúng là người viết phải có cái nhìn rộng hơn, phù hợp tương lai hơn.
Tuy vậy vẫn gặp người dùng có sức ỳ lớn, ngại thay đổi. Ví dụ như vẫn nhiều người vẫn dùng Office 2003 đầy virus nhưng bảo nâng cấp thì bảo đáp ứng đủ rồi và viện đủ lý do từ chối.
 
Tôi cũng là người tạo sản phẩm ứng dụng chuyên ngành. Đúng là người viết phải có cái nhìn rộng hơn, phù hợp tương lai hơn.
Tuy vậy vẫn gặp người dùng có sức ỳ lớn, ngại thay đổi. Ví dụ như vẫn nhiều người vẫn dùng Office 2003 đầy virus nhưng bảo nâng cấp thì bảo đáp ứng đủ rồi và viện đủ lý do từ chối.
Nếu có phát triển thì phải nghĩ đến liên hệ với quản lý kho (không phải ba cái nhập xuất tồn lẻ tẻ mà là quản lý vốn lưu động - tức hàng tồn kho); liên hệ với khâu đặt hàng, giao hàng và đòi nợ.

Chỉ với tầm vực "quản lý bán hàng" này của thớt thì nhìn rộng với tương lai gì (*1). Cứ VBA mà tương tới.
Ba cái ngôn ngữ phát triển này nọ cho tương lai xa nhường cho người bán phần mềm.

(*1) có những vấn đề nhỏ quá thì cứ tới đâu hay tới đó. Nhìn xa quá chưa chắc đã tốt.
"In the long run we are all dead" (John Maynard Keynes)
 
1/ tôi thấy tay kiến trúc sư nó vẻ ra cái nhà thì mấy tay thợ hồ chỉ có làm theo ... trong chừng mục nào đó thì tay thợ hồ có thể góp ý chút chít trong quá trình thì công mà mình thấy được cho tay vẻ cái nhà kia ( hiếm lắm )

2/ Bỏ tiền ra thuê người quét Rác ... keo họ quét từ trong ra ... làm trái ý ư quét từ ngoài vào ... cho nghỉ việc

3/ bỏ tiền ra thuê có quyền thế này thế kia ... làm ko = ko làm = có người khác làm
thuê thì làm theo ý nó vẻ chứ ai lại ngược đời để cho người làm thuê vẻ cho mình theo ý nó trừ khi người thuê ko biết gì cả xong để cho nó vẻ voi vẻ cáo .... gì gì đó

còn nữa ....
 
Xin các Thầy và các anh chị đi trước dành chút thời gian gợi ý giùm em với ạ:

Em đang xây dựng 1 chương trình bán hàng cho cửa hàng em: Có khoảng 1000 phiếu thanh toán mỗi tháng, khoảng 3000 mặt hàng trong kho. Em dùng Access làm Cơ Sở Dữ Liệu.
Em dùng 3 loại máy in, và máy quét mã vạch.
Tất cả em đều dùng code VBA excel để điều khiển, hiện tại chúng đang chạy ổn. Tuy nhiên, mỗi ngày em bổ sung thêm các tiện ích và phát sinh thêm nhiều code.

Xin cho em hỏi là code VBA có bị hạn chế khi phát triển lớn chương trình quản lý ?

Có nên ngừng nghiên cứu VBA và học một loại ngôn ngữ lập trình khác để dễ quản lý Dữ liệu?

Kính mong các thầy và anh chị chia sẻ giúp ạ! Em cảm ơn!
Theo ngụ ý của mình là được và bạn cần phải xây dựng csdl chuẩn có thể dùng acccess để làm nhé.
Bài đã được tự động gộp:

Cái chuyện tính tồn kho là bình thường và là tính năng cơ bản trong các ứng dụng bán hàng thôi mà bạn. Vấn đề là bạn gặp người không biết viết thôi. :D
Trong Access tôi chỉ viết cái hàm OnHand() và gọi khi chọn mã hàng là ra thôi.

View attachment 266643


View attachment 266641

View attachment 266642
Cái này nhìn như là c# hoặc vb.net vậy
 
Lần chỉnh sửa cuối:
Theo ngụ ý của mình là được và bạn cần phải xây dựng csdl chuẩn có thể dùng acccess để làm nhé.
Bài đã được tự động gộp:


Cái này nhìn như là c# hoặc vb.net vậy
Cái phần mềm quản lý bán hàng anh viết đang sử dụng hàng ngày

1/ Trên Excel là Form ko lưu bất cứ cái dữ liệu gì hết ... chỉ có Form nhập - Xuất và các Form truy xuất dữ liệu theo mẫu lấy từ Access lên

2/ sử dụng 1 Data.accdb là nới lưu dữ liệu thô gồm nhập và xuất
3/ sử dụng 1 Data.accdb làm nơi tính toán sau khi xuất nhập
4/ sử dụng 1 data lưu khách hàng
mọi cái trên Excel cần thì ghi xuống + lấy lên và ko lưu cái gì cả nên File cực nhẹ ... mở lên load rất nhanh
...
...
Nhiều năm nay có đầy các cty phần mềm chào tôi bán ... tôi keo làm như mô tả mấy bài trước xong nó điều chạy cả... nhận câu trả lời là khó làm quá ... tôi keo Excel tôi làm nhẹ như cái kim sao mấy ông mang tiếng là cty phần mềm mà làm cái việc cỏn con không làm được là sao


... thật lòng nhiều lần thử sức viết trên EXE như mô tả thế mà mình cũng ko làm được ... mục đích keo họ làm như thế xong xem ý tưởng thôi ... nếu ok thì vẫn mua thêm sử dụng bình thường

Access cũng thế nhiều tay nói như con két ... xong tôi vẻ ra như vậy ===== 3 chân 4 cẳng chạy nhanh
 
Quý vị đi ngược hết trơn rồi.
Một phần mềm quản lý phải bắt đầu bằng CSDL. Từ phân tích yêu cầu dẫn đến thiết kế.
Sau khi thiết kế và dựng được cái prototype (mẫu) để thử rồi thì người ta mới bắt đầu viết code. Mà cũng chỉ code mấy cái giao diện căn bản.
Sau khi chắc ăn rồi mới thêm mắm muối vào mấy cái giao diện cho nó đầy đủ hoa lá cành.

Quý vị chú trọng vào cái giao diện người dùng ngay từ đầu. Tuy trên lý thuyết, cái thiết kế CSDL không bắt buộc phải uốn theo. Trên thực tế thì chuyện ấy sẽ xảy ra. Bởi vì người thiết kế giao diện có khuynh hướng bảo vệ thiết kế của mình và sẵn sàng hy sinh thiết kế CSDL. Đấy là đi ngược.

@chủ thớt:
Không cần lo cái chuyện VBA có "ổn" không.
Nếu bạn đã phải hỏi câu này thì tầm vực vấn đề của bạn VBA thừa sức chạy.
Nếu tầm vực vấn đề của bạn ra vượt ngoài (*1) VBA thì bạn cần chuyên viên thiết kế và phát triển (design & develop) chứ không hỏi suông được đâu.

(*1) khái niệm "vượt ngoài" chỉ là tương đối. Ai cũng biết một chiếc xe heo chở 10 chuyến thì cũng hết cái công-ten-nơ. Nhưng làm việc như thế có hiệu quả hay không?
Cảm ơn anh nhiều, đã được nghe anh góp ý mấy lần và rất hữu ích! Trân trọng cảm ơn!
 

Bài viết mới nhất

Back
Top Bottom