Phát triển bài toán tổng hợp xuất nhập tồn hàng hóa bằng các ngôn ngữ lập trình khác

Liên hệ QC
Quý vị đang thi đấu với nhau về nghề lập trình hay xây dựng phần mềm vậy?
Cái chỉ tiêu (metrics) mà quý vị đưa ra là tốc độ. Từ thuở biết lập trình đến giờ, tôi chỉ thấy mấy phần mềm chuyên real-time (như đặt vé, xoát vé,...) mới cần tốc độ. Báo cáo là công việc rất ít cần tốc độ.

Chỉ tiêu chung của phần mềm ứng dụng CSDL là dễ dùng và chỉnh sửa. "Phát triển" (nhìn tiêu đề) theo tôi có nghĩa là:
1. người dùng có sự tin tưởng rằng phần mềm đáp ứng được nhu cầu của mình (rất tiếc rằng dân hỏi bài ở đây đã được làm quen với "tốc độ", cho nên họ chỉ chú ý đến điểm này)
2. người viết phần mềm hiểu rõ phạm vi và giới hạn của phần mềm. Khi cần triển khai, người ta nhanh chóng nhận định rằng phần mềm có thể chỉnh sửa hay phaiur dùng phầnn mềm khác.
3. cả người dùng và người viết đều có sự tin tưởng rằng giao diện (xuất nhập dữ liệu sang các nơi khác) đáp ứng đầy đủ.

Điển hình, đối với tôi thì cuộc thi "phát triển ngôn ngữ" này của các bạn đã thất bại hoàn toàn ở đây:
Tinh thần của bài này là học hỏi, không có thi đấu gì đâu anh.
Vì thời gian gần đây em thấy mọi người hay nói đến Delphi, Python (bài lấy dữ liệu tỷ giá từ website của Vietcombank), có thể sẽ giải bài này tốt hơn Power Query thôi anh.

Link bài anh gửi em cũng có trả lời. Nói chung không có một bài nào để ứng dụng cho tất cả, chỉ chung chung giải pháp vậy thôi
 
...

Link bài anh gửi em cũng có trả lời. Nói chung không có một bài nào để ứng dụng cho tất cả, chỉ chung chung giải pháp vậy thôi
Đối với tôi, phát triển cho cả đống nhưng không thể ứng dụng là thất bại.

Đó là lý do tại sao tôi không góp ý nào về "ngôn ngữ" hay "giải thuật" nào cả ở đây.
Kiểm soát vật tư (Inventory Control) chủ yếu là quy trình. Quy trình không rõ rệt thì phần mềm chỉ là chắp vá.
Đồ chắp vá rất khó so sánh nhau. Mỗi CSDL có điểm mượt của chúng đối với từng thiết kế phần mềm. Phải dựng được một mô hình (prototype) áp dụng cho khoảng 70% trường hợp thì mới so sánh được.
 
Lần chỉnh sửa cuối:
Đối với tôi, phát triển cho cả đống nhưng không thể ứng dụng là thất bại.

Đó là lý do tại sao tôi không góp ý nào về "ngôn ngữ" hay "giải thuật" nào cả ở đây.
Kiểm soát vật tư (Inventory Control) chủ yếu là quy trình. Quy trình không rõ rệt thì phần mềm chỉ là chắp vá.
Đồ chắp vá rất khó so sánh nhau. Mỗi CSDL có điểm mượt của chúng đối với từng thiết kế phần mềm. Phải dựng được một mô hình (prototype) áp dụng cho khoảng 70% trường hợp thì mới so sánh được.
Có thể ứng dụng được anh, nếu người dùng thay đổi dữ liệu đầu vào.
Một ứng dụng gọi là ăn liền khi mà dữ liệu đầu vào phải đồng nhất/hoặc phải chế biến cho nó về đồng nhất. Chứ không thì ứng dụng cũng sẽ thất bại.
 
Có thể ứng dụng được anh, nếu người dùng thay đổi dữ liệu đầu vào.
Một ứng dụng gọi là ăn liền khi mà dữ liệu đầu vào phải đồng nhất/hoặc phải chế biến cho nó về đồng nhất. Chứ không thì ứng dụng cũng sẽ thất bại.
Tôi khẳng định là "không ứng dụng được".
Quý vị bàn sâu quá về tốc độ nên chủ quan, lãng quên nhu cầu của người dùng.
Chả có "người dùng" nào đọc thớt này mà tin rằng một trong những giải pháp trong thớt có thể ứng dụng cho mình.

Ở diễn đàn này, quý vị đã nhồi sọ thành viên với tư tưởng "tốc độ" đã thành thói quen rồi. Trên thực tế, phát triển phần mềm đâu có như vậy.
Tốc độ, theo cách đo lường của quý vị (không phải cách đo của tôi) thì nó là cái quý vị làm được.
Các yếu tố khác, đối với quý vị chúng là xa lạ. Nói thẳng ra là do quý vị không biết đo, và không hề thấy nổ lực nào để học hỏi về khía cạnh này.

Bởi vậy, đối với tôi thì ở đây chỉ là trò chơi cho quý vị tán gẫu nhau. Nói "phát triển" (development) hơi quá đáng.
 
Tôi nghĩ thớt này thì người ứng dụng thì áp dụng được một phần rất nhỏ( coi mỗi nhập xuất tồn thôi), công ty nào vẫn quản lý bằng excel xíu xíu thì sẽ dùng được chút chút. Đa phần không áp dụng được, với kinh nghiệm xíu xíu của tôi khoảng 10 năm trong lĩnh vực Logistics và Quản lý chuỗi cung ứng thì cái này đúng là áp dụng thực tế không có được, đúng như anh @VetMini có nói, quản lý tồn kho, vật tư thì quy trình là thứ quyết định(Nó liên quan tới dòng chảy hàng hóa như nào, quy định từng thành phần trong chuỗi hoạt động ra sao,...). Chủ thớt chắc chỉ nói cải thiện cho một vấn đề cụ thể chứ cũng không tham vọng phát triển phần mềm, tôi hiểu là vậy.
 
Hình như cách này dữ liệu thay đổi liên tục onedrive nó thông báo gì đó và nó lưu có file tạm ... mấy na9m trước có vọc theo hướng này xong bỏ
Onedrive hay lỗi, thỉnh thoảng lại bắt lưu file khác,
Xong thì lại báo không upload được,
Dữ liệu làm trên OneDrive em cũng đang thấy bất an lắm,
Không biết mất gì còn gì. Mất lúc nào, lúc nào còn.
 
Tôi gửi chủ thớt gợi ý 1 chút ở góc độ sử dụng dữ liệu Online thôi

1/ Chuyển hết dữ liệu trên File Excel ở bài số 1 vào 1 File Access
2/ bạn viết code tính nhập xuất tồn kiểu gì là do bạn tự viết
3/ sau khi tính toán xong mục số 2 thì bạn muốn xuất nó ra cái gì thì do khả năng và phù sự hợp của bạn
4/ Sử dụng cái SQL TCP/IP của tôi Úp trên GPE này mà truy xuất dữ liệu Nhập - Xuất - Tồn ... sẻ rất nhanh vì khi tính toán NXT xong thì xuất dữ liệu ra rất ít chỉ cô đọng lại các chỉ mục của nó
5/ xong từ bất cứ máy nào có kết nối Internet cứ thế mà truy xuất dữ liệu theo Folder bạn đã chia Sẻ

Tôi tải Files Access + Excel trên này về chỉ mở lên thôi cũng rất lâu vì vậy từ máy chủ bạn làm hết mọi thao tác xong xuất ra NXT thì từ máy khác cái Data NXT đó nó rất ít + nhẹ thì truy xuất rất nhanh

Xem hình minh họa tôi lấy File trên thớt này thử tí

Còn lại những vấn đề khác liên quan thớt này tôi ko bàn ... chỉ khuyên thế dùng được thì dùng ko thì cho vào thùng RÁC = thế thôi

1633938484158.png
 
Lần chỉnh sửa cuối:
Onedrive hay lỗi, thỉnh thoảng lại bắt lưu file khác,
Xong thì lại báo không upload được,
Dữ liệu làm trên OneDrive em cũng đang thấy bất an lắm,
Không biết mất gì còn gì. Mất lúc nào, lúc nào còn.
Microsoft, Google, Facebook... không biết là chúng ta đang dùng họ hay là họ đang dùng chúng ta. Mới đây FB bị mất kết nối cả ngày, vì vậy cũng cần chấp nhận vào một ngày đẹp trời, vào tài khoản trắng băng thôi bạn.
 
Onedrive hay lỗi, thỉnh thoảng lại bắt lưu file khác,
Xong thì lại báo không upload được,
Dữ liệu làm trên OneDrive em cũng đang thấy bất an lắm,
Không biết mất gì còn gì. Mất lúc nào, lúc nào còn.
mấy năm trước tôi có để 1 cái Data.accdb trên OneDrive chi tiết là D:\OneDrive\Data.accdb
xong từ 2 máy tính tôi thử lưu liên tục vào đó xem sao .... thì nó tạo ra File Tạm + Thông báo +...
Tóm lại ko hiệu quả mà lỗi có khi mất dữ liệu xong bỏ cho nhanh
 
Đề bài này chỉ là một dạng cơ bản của cách tính nhập xuất tồn thôi và theo tôi chủ thớt chủ yếu để xem đối với các ngôn ngữ khác thực hiện cùng một cách giải có cải thiện được tốc độ xử lý dữ liệu thôi chứ không phải xây dựng nên một hệ thống tính NXT chuẩn mực đâu.
Bởi vì nếu là tôi, đơn giản tôi sẽ có thêm bảng tồn đầu kỳ mỗi tháng. Khi đó tính tồn thời điểm sẽ không cần phải truy vấn toàn bộ dữ liệu từ đầu đến thời điểm tính tồn, đó là một cách đơn giản để xây dựng dữ liệu tồn kho. Trong thực tế còn có thêm tính giá trị tồn kho theo giá nào, tính đơn giá xuất bình quân v.v...khi đó cũng sẽ tốn thêm nhiều thời gian để xử lý. Nói chung còn nhiều khoản mục liên quan mà đề bài này không tham vọng bao hết được đâu.
 
Thời gian tới tôi mới triển khai báo giá cho khác khàng online ... cho họ cái Addins SQLTCP/IP xong chỉ kích chọn là tải file báo giá về thôi ...rất đơn giản gọn nhẹ

Con tôi chỉ ngồi máy tính chơi và chuyện linh tinh vui vẻ thế thôi có gì chỉnh giá 1 phát là bất cứ đâu có kết nối Internet cứ thế truy xuất dữ liệu Online -0-0-0-
 
Onedrive hay lỗi, thỉnh thoảng lại bắt lưu file khác,
Xong thì lại báo không upload được,
Dữ liệu làm trên OneDrive em cũng đang thấy bất an lắm,
Không biết mất gì còn gì. Mất lúc nào, lúc nào còn.
Bất kỳ lưu trữ dữ liệu trên đâu điều phải có công tác lưu dự phòng định kỳ. Cty trước đây tôi làm có 1 cái két sắt riêng để lưu các ổ đĩa backup từ server ra ổ đĩa ngoài, định kỳ cuối tuần một lần.
Đám mây thì cũng có dịch vụ backup đám mây, vấn đề là tiền thôi.
 
Đề bài này chỉ là một dạng cơ bản của cách tính nhập xuất tồn thôi và theo tôi chủ thớt chủ yếu để xem đối với các ngôn ngữ khác thực hiện cùng một cách giải có cải thiện được tốc độ xử lý dữ liệu thôi chứ không phải xây dựng nên một hệ thống tính NXT chuẩn mực đâu.
Bởi vì nếu là tôi, đơn giản tôi sẽ có thêm bảng tồn đầu kỳ mỗi tháng. Khi đó tính tồn thời điểm sẽ không cần phải truy vấn toàn bộ dữ liệu từ đầu đến thời điểm tính tồn, đó là một cách đơn giản để xây dựng dữ liệu tồn kho. Trong thực tế còn có thêm tính giá trị tồn kho theo giá nào, tính đơn giá xuất bình quân v.v...khi đó cũng sẽ tốn thêm nhiều thời gian để xử lý. Nói chung còn nhiều khoản mục liên quan mà đề bài này không tham vọng bao hết được đâu.
Cảm ơn anh đã nói một cách khách quan,
Thực tế em chưa đủ kiến thức để làm một phần mềm nào đó, chủ đề gốc ban đầu cũng là chủ để hay để học hỏi về Dictionary.
Còn với bài này, phát triển đúng tinh thần là có thêm những giải pháp khác, học hỏi xem trên môi trường online có giải pháp nào tốt hơn để trải nghiệm.
 
mấy năm trước tôi có để 1 cái Data.accdb trên OneDrive chi tiết là D:\OneDrive\Data.accdb
xong từ 2 máy tính tôi thử lưu liên tục vào đó xem sao .... thì nó tạo ra File Tạm + Thông báo +...
Tóm lại ko hiệu quả mà lỗi có khi mất dữ liệu xong bỏ cho nhanh
Chắc chắn bạn thiết kế sai bài rồi. Người ta viết ứng dụng Access cho nhiều người dùng, kết nối qua internet bằng Cloud drive này dùng bao nhiêu năm rồi mà có bị vấn đề tạo ra file tạm đâu. Bạn nào mới viết, chưa khai thác đúng Access sẽ bị lỗi này. Còn cách xử lý, xin lỗi các bạn tự tìm hiểu nhé :D
 
Ngay từ đầu phương án có phần hơi kỳ cục rồi.
Nếu là lưu trữ file kiểu vậy thì cứ đồng bộ vào file đó, khi cần làm gì với nó cứ thong thả tải về rồi làm gì thì làm.

Muốn kiểu đúng chuẩn online, truy vấn tức thời thì người ta sẽ thuê/ dựng một cái server, tạo một database với các truy vấn, báo cáo các thể loại.
Về giao diện có thể là web, hoặc desktop app.
Có thể tạo thêm mớ API gì đó để phục vụ những tác vụ khác.
 
Bất kỳ lưu trữ dữ liệu trên đâu điều phải có công tác lưu dự phòng định kỳ. Cty trước đây tôi làm có 1 cái két sắt riêng để lưu các ổ đĩa backup từ server ra ổ đĩa ngoài, định kỳ cuối tuần một lần.
Đám mây thì cũng có dịch vụ backup đám mây, vấn đề là tiền thôi.
Em chưa nói đến đoạn backup, vì việc đó em đang làm hàng ngày.
Em chỉ nói đến sự an toàn ổn định của OneDrive thôi ạ.
Em dùng hàng ngày trên OneDrive, nhưng thỉnh thoảng lại báo lỗi, hôm sau mở ra thì không còn dữ liệu ngày hôm trước làm đâu.
Với bản free tình trạng này xảy ra thường xuyên hơn bản có phí,
Bản trả phí thì ít, nhưng vẫn có.
Độ tin tưởng trên Cloud em thấy không ổn bằng GG driver.
 
Ngay từ đầu phương án có phần hơi kỳ cục rồi.
Nếu là lưu trữ file kiểu vậy thì cứ đồng bộ vào file đó, khi cần làm gì với nó cứ thong thả tải về rồi làm gì thì làm.

Muốn kiểu đúng chuẩn online, truy vấn tức thời thì người ta sẽ thuê/ dựng một cái server, tạo một database với các truy vấn, báo cáo các thể loại.
Về giao diện có thể là web, hoặc desktop app.
Có thể tạo thêm mớ API gì đó để phục vụ những tác vụ khác.
Tôi còn đang tính rãnh sẽ chuyển cái data này lên SQL Server, để server nó xử lý rồi từ Excel, Access Font end kết nối qua internet tải về xem như thế nào nữa đây...:p
 
mấy năm trước tôi có để 1 cái Data.accdb trên OneDrive chi tiết là D:\OneDrive\Data.accdb
xong từ 2 máy tính tôi thử lưu liên tục vào đó xem sao .... thì nó tạo ra File Tạm + Thông báo +...
Tóm lại ko hiệu quả mà lỗi có khi mất dữ liệu xong bỏ cho nhanh
Em xem trên Onedrive nó hay sinh ra file tạm gì đó, Dữ liệu gốc có mấy trăm mb, mà trong onedrive lên tận mấy gb, hình như nó lưu từng bản chỉnh sửa của người dùng ạ.
Em đã từng ứng dụng thất bại 1 lần khi dùng OneDrive, nên phải quay về offline,
Giờ em đang dùng bản trả phí, tiếp tục ứng dụng lần nữa, nhưng độ bất an chỉ giảm đi, chứ không mất đi ạ.
 
Ngay từ đầu phương án có phần hơi kỳ cục rồi.
Nếu là lưu trữ file kiểu vậy thì cứ đồng bộ vào file đó, khi cần làm gì với nó cứ thong thả tải về rồi làm gì thì làm.

Muốn kiểu đúng chuẩn online, truy vấn tức thời thì người ta sẽ thuê/ dựng một cái server, tạo một database với các truy vấn, báo cáo các thể loại.
Về giao diện có thể là web, hoặc desktop app.
Có thể tạo thêm mớ API gì đó để phục vụ những tác vụ khác.
Hi anh,
On/Off cũng chỉ là khái niệm tương đối.
Nếu ai đó ứng dụng bài này, không nhất thiết cần đưa lên mạng. Giờ công ty ai cũng dùng mạng Lan, giả sử Data để trên một máy chủ nào đó.
Máy khách sửa đường dẫn đến File nguồn, chạy Report thì cũng có thể gọi là Online.
 
Bởi vì nếu là tôi, đơn giản tôi sẽ có thêm bảng tồn đầu kỳ mỗi tháng. Khi đó tính tồn thời điểm sẽ không cần phải truy vấn toàn bộ dữ liệu từ đầu đến thời điểm tính tồn, đó là một cách đơn giản để xây dựng dữ liệu tồn kho.
Bạn nói rất đúng ý tôi: Đó là giải pháp tôi xây dựng trong chủ đề "thi nhanh nhất" năm xưa. Cụ thể là file tôi sử dụng trong chủ đề này ở bài #2. Lúc đó có thảo luận về việc này do đề bài gốc của anh @Nguyễn Duy Tuân lưu trữ dữ liệu tồn ngay trong bảng dữ liệu nhập xuất hàng ngày dưới dạng "phiếu nhập trước ngày đầu tiên của bảng dữ liệu". Lúc đó tôi có hỏi nếu dữ liệu liên tục 5 năm, 10 năm cũng phải tính lại từ khi thành lập công ty hay sao.

Thuật toán VBA dựa trên bảng tồn gần nhất của tôi lúc đó được xem là nhanh nhất/ nhì của lúc đó. Sau khi kết thúc chủ đề thi tôi mới thực hiện lại được việc thêm bảng tồn từng tháng. Lý do dữ liệu bài thi có 50 ngàn dòng, lại không đủ cho tất cả các tháng mặc dù trải dài 2 năm. Tôi mới dùng cấu trúc đó tạo file giả lập 1 triệu dòng, đủ tất cả các ngày, các tháng của 1 năm.

Tuy vậy, cấu trúc dữ liệu của file này cũng còn cần phải bàn (có lẽ đã được anh Tuân rút gọn để chỉ dùng cho chủ đề thi, lại ghi chú "không sửa"). Các vấn đề của cấu trúc file này trong 1 phần mềm quản lý inventory là:
- Thông số kho lưu trữ bị bỏ qua, coi như chỉ có 1 kho
- Không có loại chứng từ chuyển kho từ kho này qua kho kia (cũng phải thôi, vì chỉ có 1 kho).
- Không có loại chứng từ điều chỉnh hàng tồn sau kiểm kê (điều chỉnh tăng, giảm do kiểm kê)
- Không có loại chứng từ hàng trả người bán, người mua trả hàng.
Các mục trên đây tôi bỏ qua mà không bàn, vì đối với thủ kho và kế toán kho, đơn giản là hàng tăng lên và hàng giảm xuống, tăng gọi là nhập và giảm gọi là xuất. Thủ kho chịu trách nhiệm về báo cáo số lượng, kế toán kho chịu trách nhiệm báo cáo giá trị thành tiền. Kế toán công nợ và kế toán tổng hợp mới quan tâm những vấn đề khác. Chỉ có gọi "tồn đầu" là nhập thì tôi mới thấy kỳ kỳ thôi.


Còn ở chủ đề này, tôi biết chủ đích của tác giả chủ đề là muốn tham khảo những cách thực hiện của những ngôn ngữ khác ngoài Power query, (có lẽ là để định hướng học thêm 1 ngôn ngữ mới chăng).
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom