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
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 ạ.
thì mấy na9m trước tôi quây nát nó rồi ... xong kết quả là chạy nhanh và lẹ
 
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.
Mình dùng từ 'online' chưa chuẩn.
Theo như bạn nêu thì là tầm vực/ phạm vi hệ thống mạng mà thôi.

Ở phạm vi internet, như bài #75, hệ thống vài cửa tiệm tạm hóa chẳng hạn, chỉ cần xây dựng ban đầu là xong. Phần giao diện web có phần cho khách hàng vào đặt hàng, có phần cho người quản trị vào kiểm tra kho hàng.
Tại mỗi cửa hàng nhập, xuất hàng thì dữ liệu đều về một database. Xem báo cáo là tức thời luôn.

Quy mô lớn hơn thì có các phần mềm ERP dùng qua internet, cho LAN (như bạn nói) đều được.

Phạm vi ở đây, có thể mọi người quen thuộc với Access, Excel nên cứ bám theo vậy. Như phương án trên thì Excel chỉ là các bảng dữ liệu tạm mà thôi, có thể còn không dùng gì tới Excel.
 
Cài cái ms Server bản Free đi mà dùng cho khỏe bản Free = 10 GB lưu cũng nhiều lắm đấy
Bài đã được tự động gộp:

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
giờ có cái SQLTCP/IP rồi thì cách này vị trí của nó trong thùng RÁC rùi ... ko cần tìm nữa
 
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.
Như tôi đã nói ở bài trên, dữ liệu chủ đề này được lấy từ 1 chủ đề khác, mà chủ đề đó lại là chủ đề "thi tốc độ", nên nó không phải là 1 prototype áp dụng cho 70% trường hợp được. Hà huống tác giả lại không phải chuyên ngành quản lý kho :p :p
Có thể tác giả chủ đề đang muốn tham khảo cách tính toán của ngôn ngữ khác (ghi trong bài 1 là Python, Delphi, SQL, ...), cũng bởi vì xài Power query mất tới 4 phút.
Báo cáo hiện tại thì Sếp ko cần refresh gì đâu bạn, bạn gửi Báo cáo cho sếp thì cái báo cáo đấy bạn phải tự refresh, Sếp chỉ coi report thôi,
Đó là ông sếp thụ động. Ông sếp chủ động phải tuyên bố: tôi muốn xem lúc nào là xem, muốn xem khoảng thời gian nào là xem, không phải là 1 báo cáo cố định của 1 tháng và khi nào nhân viên gởi mới xem được. Tôi lại phải hỏi và đốc thúc mới có báo cáo mà xem à?
Ông sếp ngon là còn đòi hỏi báo cáo real time nữa kia: lúc sáng tồn bằng này, phòng vật tư báo hàng về 9 giờ sáng, sao giờ này 17 giờ báo cáo tồn kho chưa thấy tăng lên?
 
Như tôi đã nói ở bài trên, dữ liệu chủ đề này được lấy từ 1 chủ đề khác, mà chủ đề đó lại là chủ đề "thi tốc độ", nên nó không phải là 1 prototype áp dụng cho 70% trường hợp được. Hà huống tác giả lại không phải chuyên ngành quản lý kho :p :p
Có thể tác giả chủ đề đang muốn tham khảo cách tính toán của ngôn ngữ khác (ghi trong bài 1 là Python, Delphi, SQL, ...), cũng bởi vì xài Power query mất tới 4 phút.

Đó là ông sếp thụ động. Ông sếp chủ động phải tuyên bố: tôi muốn xem lúc nào là xem, muốn xem khoảng thời gian nào là xem, không phải là 1 báo cáo cố định của 1 tháng và khi nào nhân viên gởi mới xem được. Tôi lại phải hỏi và đốc thúc mới có báo cáo mà xem à?
Ông sếp ngon là còn đòi hỏi báo cáo real time nữa kia: lúc sáng tồn bằng này, phòng vật tư báo hàng về 9 giờ sáng, sao giờ này 17 giờ báo cáo tồn kho chưa thấy tăng lên?
Nói đến cái đoạn giờ nữa thì em thấy Power Query nó Change Type ngày sang dạng Datetime, nếu chuẩn ra có thể tính chuẩn đến giờ phút giây luôn :) (Sếp choáng)
 
Lần chỉnh sửa cuối:
Như tôi đã nói ở bài trên, dữ liệu chủ đề này được lấy từ 1 chủ đề khác, mà chủ đề đó lại là chủ đề "thi tốc độ", nên nó không phải là 1 prototype áp dụng cho 70% trường hợp được. Hà huống tác giả lại không phải chuyên ngành quản lý kho :p :p
Có thể tác giả chủ đề đang muốn tham khảo cách tính toán của ngôn ngữ khác (ghi trong bài 1 là Python, Delphi, SQL, ...), cũng bởi vì xài Power query mất tới 4 phút.

Đó là ông sếp thụ động. Ông sếp chủ động phải tuyên bố: tôi muốn xem lúc nào là xem, muốn xem khoảng thời gian nào là xem, không phải là 1 báo cáo cố định của 1 tháng và khi nào nhân viên gởi mới xem được. Tôi lại phải hỏi và đốc thúc mới có báo cáo mà xem à?
Ông sếp ngon là còn đòi hỏi báo cáo real time nữa kia: lúc sáng tồn bằng này, phòng vật tư báo hàng về 9 giờ sáng, sao giờ này 17 giờ báo cáo tồn kho chưa thấy tăng lên?
Không phải muốn là được đâu bạn nhìn ở góc độ excel dữ liệu ít thì không sao, dữ liệu lớn người ta chia ra nhiều tầng database để đảm bảo hệ thống trơn tru, từ database chuyển sang data lake cũng phải có lịch , xuống data pipeline hay warehouse cũng phải có lịch , sau đó mới tới hệ thống report thì cũng phải có lịch và nó chậm hơn mấy thằng data kia, bây giờ báo cáo người ta xem daily, dữ lắm là vài tiếng xem 1 lần chứ ai đâu mà coi liên tục, dữ liệu lớn refresh import liên tục thì database nào chịu nổi, sài direct hay live connect report nó quay vòng vòng hoài ai mà đợi được, sếp thì cũng phải theo tool, theo database hiện có, chỉ cần tăng số lần hay đổi giờ refresh phải phải xem xét hỏi It xem có ổn không xem có đụng thời gian refresh của các báo cáo khác không? cả một vấn đề chứ không hề đơn giản, nhất là mấy tool connect trực tiếp database mà doanh nghiệp không có data warehouse hay data lake
 
Nói đến cái đoạn giờ nữa thì em thấy Power Query nó Change Type ngày sang dạng Datetime, nếu chuẩn ra có thể tính chuẩn đến giờ phút giây luôn :) (Sếp choáng)
Lý thuyết nghe thì dễ vậy chứ thực tế nó đơn giản vậy đâu bạn. Bạn tưởng tượng bạn có 300 ngàn điểm bán nhỏ, công ty bạn bán hàng trăm sku, dăm bảy chục brand. Một tháng tính 26 ngày(trừ chủ nhật) thì mỗi ngày bạn sẽ nạp dữ liệu cho 12 ngàn điểm, mỗi điểm đó ví dụ tính dăm ba chục Sku thôi, chưa kể những điểm lớn 1 tuần bạn phải đi vài lần, bạn nhân số lượng đó cho việc đặt hàng, tính trưng bày, tính hàng tồn,....Chưa kể việc bạn quản lý tính chính xác của dữ liệu đầu vào không hề đơn giản. Bạn sẽ thấy dữ liệu một ngày nó lớn tới mức nào, bạn nhân 1 tháng, 1 năm sẽ thấy phải hệ thống khủng mới chơi được. Cho nên real time là việc ai cũng muốn nhưng để thực hiện nó không phải là chuyện cứ muốn mà được.
 
@Cá ngừ F1: Theo tôi việc để riêng hẳn 1 bảng số dư đầu năm là không hợp lý và làm cho việc truy vấn phức tạp hơn. Tại bảng danh mục, thêm 2 trường SLG và STIEN để ghi nhận số dư thì tốt hơn.
 
@Cá ngừ F1: Theo tôi việc để riêng hẳn 1 bảng số dư đầu năm là không hợp lý và làm cho việc truy vấn phức tạp hơn. Tại bảng danh mục, thêm 2 trường SLG và STIEN để ghi nhận số dư thì tốt hơn.
Phải có chứ anh.
Cái số liệu này là giả định. Anh thử tưởng tưởng số liệu nó liên tục năm nay qua năm khác. Việc tính tồn đầu phải tính những thứ nhập/xuất < ngày FromDate.
 
@Cá ngừ F1: Theo tôi việc để riêng hẳn 1 bảng số dư đầu năm là không hợp lý và làm cho việc truy vấn phức tạp hơn. Tại bảng danh mục, thêm 2 trường SLG và STIEN để ghi nhận số dư thì tốt hơn.
Theo tôi thì có bảng Tồn đầu riêng là hợp lý chỉ có cái là chưa đầy đủ. Phải có thêm cột Ngày và cứ cuối tháng sẽ làm nghiệp vụ kết chuyển Tồn đầu tháng đưa vô bảng này. Khi do sẽ giảm lượng dữ liệu cần truy xuất để tính NXT.
Ví dụ:

Screen Shot 2021-10-11 at 18.32.57.png
 
Theo tôi thì có bảng Tồn đầu riêng là hợp lý chỉ có cái là chưa đầy đủ. Phải có thêm cột Ngày và cứ cuối tháng sẽ làm nghiệp vụ kết chuyển Tồn đầu tháng đưa vô bảng này. Khi do sẽ giảm lượng dữ liệu cần truy xuất để tính NXT.
Ví dụ:

View attachment 267527
Tôi lại nghĩ khác. Nếu muốn đưa tồn đầu tháng vào thì chỉ việc thêm mỗi tháng 2 cột vào danh mục là ổn
1633954824817.png
 
Lý thuyết nghe thì dễ vậy chứ thực tế nó đơn giản vậy đâu bạn. Bạn tưởng tượng bạn có 300 ngàn điểm bán nhỏ, công ty bạn bán hàng trăm sku, dăm bảy chục brand. Một tháng tính 26 ngày(trừ chủ nhật) thì mỗi ngày bạn sẽ nạp dữ liệu cho 12 ngàn điểm, mỗi điểm đó ví dụ tính dăm ba chục Sku thôi, chưa kể những điểm lớn 1 tuần bạn phải đi vài lần, bạn nhân số lượng đó cho việc đặt hàng, tính trưng bày, tính hàng tồn,....Chưa kể việc bạn quản lý tính chính xác của dữ liệu đầu vào không hề đơn giản. Bạn sẽ thấy dữ liệu một ngày nó lớn tới mức nào, bạn nhân 1 tháng, 1 năm sẽ thấy phải hệ thống khủng mới chơi được. Cho nên real time là việc ai cũng muốn nhưng để thực hiện nó không phải là chuyện cứ muốn mà được.
Chắc bạn đang nói đến một đơn vị kinh doanh bán lẻ (kiểu siêu thị). Họ sẽ có app có khi vài triệu đô, chip qr/mã vạch hàng vào/ra mới quản lý được.
Còn excel ở đây ai cũng biết chỉ làm cỡ nhỏ gọn. Đến a Bill cũng chỉ cho sheet có hơn triệu dòng.
Bản thân tôi nếu data có lớn quá cũng phải chia nhỏ để làm. Trước thì chia theo quý, sau tháng, nở ra thì chia thành nửa tháng, rồi tuần một…
 
Tôi lại nghĩ khác. Nếu muốn đưa tồn đầu tháng vào thì chỉ việc thêm mỗi tháng 2 cột vào danh mục là ổn
Đối với dữ liệu lớn và sử dụng hệ cơ sở dữ liệu như SQL server, MS SQL, ... sẽ dùng câu lện SQL để truy vấn, thì dùng bảng dọc như bạn @ongke0711 sẽ hợp lý hơn, bảng ngang như bạn thích hợp với excel hơn. Vì Excel thêm cột tùy ý, cứ thêm tháng là thêm cột cho đến chục năm chưa hết cột. Còn hệ CSDL thì số lượng cột tạo lập ban đầu là cố định.
Dù vậy, tôi quan niệm tách bảng số dư ra khỏi bảng danh mục vì:
- Bảng danh mục là bảng có biến động số dòng: mặt hàng luôn luôn có khai báo thêm, thỉnh thoảng loại bớt ra (loại bớt bằng cách đánh dấu chứ không phải xóa), do vậy số lượng record cứ tăng thêm. Những mặt hàng không dùng nữa thì loại bỏ ra cho các báo cáo kỳ hiện tại và tương lai.
- Bảng số dư thì không phải lúc nào cũng >0 cho tât cả mặt hàng, và biến động theo kiểu khác: một mặt hàng lúc thì tồn lúc thì hết. Những mặt hàng trước đây có tồn nhưng giờ không dùng nữa vẫn phải truy xuất số dư để làm báo cáo cho kỳ quá khứ, ...
 
Tôi lại nghĩ khác. Nếu muốn đưa tồn đầu tháng vào thì chỉ việc thêm mỗi tháng 2 cột vào danh mục là ổn
View attachment 267529
Nếu trích tồn ĐK tháng nào đó bạn sẽ phải tính ra số cột tương đương tháng, còn nếu có cột Ngày thì bạn chỉ cần điều kiện lọc Ngày, theo tôi sẽ truy vấn nhanh hơn. Tôi không biết Excel như thế nào chứ đối với các hệ CSDL nói chung thì ưu tiên phát triển theo dòng, chứ không theo cột vì tốc độ truy vấn sẽ ảnh hưởng rất nhiều nếu bảng dữ liệu quá nhiều cột, dòng thì không giới hạn.
 
Nếu trích tồn ĐK tháng nào đó bạn sẽ phải tính ra số cột tương đương tháng, còn nếu có cột Ngày thì bạn chỉ cần điều kiện lọc Ngày, theo tôi sẽ truy vấn nhanh hơn. Tôi không biết Excel như thế nào chứ đối với các hệ CSDL nói chung thì ưu tiên phát triển theo dòng, chứ không theo cột vì tốc độ truy vấn sẽ ảnh hưởng rất nhiều nếu bảng dữ liệu quá nhiều cột, dòng thì không giới hạn.
Tôi nghĩ kết hợp 2 bảng danh mục và tồn kho lại với nhau để đơn giản lệnh SQL. Còn với việc chỉ để lưu số tồn kho thì cũng chỉ có thêm 24 cột chứ không nhiều nhặn gì. Nhưng thôi, cách nào rồi cũng query được, hãy để mọi người quay lại với việc chính của thớt thôi.
 
Tôi nghĩ kết hợp 2 bảng danh mục và tồn kho lại với nhau để đơn giản lệnh SQL. Còn với việc chỉ để lưu số tồn kho thì cũng chỉ có thêm 24 cột chứ không nhiều nhặn gì. Nhưng thôi, cách nào rồi cũng query được, hãy để mọi người quay lại với việc chính của thớt thôi.
Bảng này lưu tồn kho ĐK qua các năm luôn chứ không phải 1 năm rồi xoá bạn.
 
Rất cảm ơn mọi người đã tham gia trao đổi ở Topic này.

Ngay từ đầu tôi chạy bằng PowerQuery mất 4-5 phút, thuật toán groupby và cộng với nhiều điều kiện (cả nhập/xuất và khoảng thời gian), nhưng sau bài của anh @ptm0412 và anh @excel_lv1.5 tôi học hỏi, thay đổi thuật toán, cần Filter khoảng thời gian trước rồi mới Groupby, thì thời gian cũng đã giảm 1 nửa.

Anh @VetMini nhận xét dùng từ "phát triển" là hơi quá. Thực tế chủ đề gốc chạy offline, giải pháp dùng VBA Dictionary. Thì giờ các giải pháp cũng trăm hoa đua nơ, nào Python, BI (Dax), Access, SQL... thì chứng tỏ qua thời gian GPE cũng phát triển hơn, không chỉ dùng VBA thuần túy. Chủ để gốc của anh @Nguyễn Duy Tuân và em vẫn đang chờ đợi một giải pháp bằng Delphi từ anh (hoặc bất kỳ ai). Có thể anh @VetMini nói "thi đấu" là đúng, đến Slogan của Olympic cũng là "Faster - Higher - Stronger, Together", cả thế giới vẫn luôn tìm những kỷ lục mới, còn "quy trình" là điều đương nhiên phải theo, không chỉ là bài toán xuất/nhập này.

Anh @befaint nhận xét bài này kỳ kỳ, thì tinh thần của em nói ngay từ đầu, dữ liệu gốc đẩy đâu đó trên 9 tầng mây. Một người ở bất kỳ đâu (có internet), refresh, đợi 2, 3 phút nhâm nhi cốc cafe, hút điếu thuốc là có một báo cáo đẹp, chỉnh chu. Có thể sau này phát triển thêm về cách đưa dữ liệu lên mạng, như a gơi ý có thể qua web chẳng hạn, giống như bài lấy tỷ giá ngoại tệ VCB (thì sẽ nhanh hơn).

TB: chúc mọi người một ngày làm việc hiệu quả.
 
Rất cảm ơn mọi người đã tham gia trao đổi ở Topic này.

Ngay từ đầu tôi chạy bằng PowerQuery mất 4-5 phút, thuật toán groupby và cộng với nhiều điều kiện (cả nhập/xuất và khoảng thời gian), nhưng sau bài của anh @ptm0412 và anh @excel_lv1.5 tôi học hỏi, thay đổi thuật toán, cần Filter khoảng thời gian trước rồi mới Groupby, thì thời gian cũng đã giảm 1 nửa.

Anh @VetMini nhận xét dùng từ "phát triển" là hơi quá. Thực tế chủ đề gốc chạy offline, giải pháp dùng VBA Dictionary. Thì giờ các giải pháp cũng trăm hoa đua nơ, nào Python, BI (Dax), Access, SQL... thì chứng tỏ qua thời gian GPE cũng phát triển hơn, không chỉ dùng VBA thuần túy. Chủ để gốc của anh @Nguyễn Duy Tuân và em vẫn đang chờ đợi một giải pháp bằng Delphi từ anh (hoặc bất kỳ ai). Có thể anh @VetMini nói "thi đấu" là đúng, đến Slogan của Olympic cũng là "Faster - Higher - Stronger, Together", cả thế giới vẫn luôn tìm những kỷ lục mới, còn "quy trình" là điều đương nhiên phải theo, không chỉ là bài toán xuất/nhập này.

Anh @befaint nhận xét bài này kỳ kỳ, thì tinh thần của em nói ngay từ đầu, dữ liệu gốc đẩy đâu đó trên 9 tầng mây. Một người ở bất kỳ đâu (có internet), refresh, đợi 2, 3 phút nhâm nhi cốc cafe, hút điếu thuốc là có một báo cáo đẹp, chỉnh chu. Có thể sau này phát triển thêm về cách đưa dữ liệu lên mạng, như a gơi ý có thể qua web chẳng hạn, giống như bài lấy tỷ giá ngoại tệ VCB (thì sẽ nhanh hơn).

TB: chúc mọi người một ngày làm việc hiệu quả.

Bài toán này chúng ta không cần bàn tới cấu trúc CSDL. Chủ đề là tìm giải pháp chạy online, tốc độ nhanh (theo mặc định dữ liệu là như vậy) nên ta chỉ dựa vào mẫu dữ liệu trên mây đó để tìm hay ngó nghiêng giải pháp công nghệ. Khi nào chúng ta tạo chủ đề như là "Thiết kế cơ sở dữ liệu quan hệ trong quản lý kho" thì chúng ta mới mổ sẻ cấu trúc sao cho hợp lý. Thời gian này anh đang vướng bận nên chưa thể làm demo trên Delphi. Sau này làm được với đúng yêu cầu online thì sẽ demo lên đây.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom