tranthanhan1962 > 17-03-21, 11:07 PM
ongke0711 > 18-03-21, 07:57 AM
Xuân Thanh > 18-03-21, 09:21 AM
tranthanhan1962 > 18-03-21, 03:07 PM
(18-03-21, 07:57 AM)ongke0711 Đã viết: Anh thử nâng dung lượng PageFile của Access lên xem có còn lỗi khi chạy query còn lỗi không.Vần đề chậm thì phải chấp nhận khi lượng record quá lớn. Khi số lượng record lớn nó sẽ báo lỗi ngay. Mình cũng phải tăng giá trị DWORD của Jet 4.0 trong Registry. Tuy nhiên vấn đề năm ở chỗ này.
Làm theo link này: https://docs.microsoft.com/en-us/office/...t-exceeded
Còn về việc xử lý chậm thì em nghĩ code xử lý vụ này cũng gần giống nhau. Nhớ trong mấy bài post lần trước cũng có test với dữ liệu của anh LedangVan (17k dòng) nó cũng chạy miệt mài mới xong.
ongke0711 > 18-03-21, 03:30 PM
(18-03-21, 03:07 PM)tranthanhan1962 Đã viết: Bạn sẽ thấy bài toán cũng không có gì phức tạp. Access cũng làm tốt công việc của nó. Bổng nhiên nó dừng lại và không xử lý các toán tử các số màu đỏ là dữ liệu được nhập vãn tồn tại nhưng không còn việc xử lý công thức nữa. Nếu số lượng records ít hơn thì sẽ không xảy ra chuyện gì.
tranthanhan1962 > 18-03-21, 03:44 PM
(18-03-21, 09:21 AM)Xuân Thanh Đã viết: Để giải quyết vấn đề này cũng có nhiều cách triển khai khi mà CSDL bị phình ra theo thời gian. Tôi thường dùng :Vấn đề này mình cũng có xử lý ở các trường hợp phần mềm kiểu nội bộ. Nhưng trường hợp phần mềm báo cáo tài chính của các công ty cho cơ quan thuế thì không đươc. Vì tất cả các chi tiết phải được lưu lại và chỉ cần một thay đổi ở các năm trước các giá trị phải được cập nhật cho các năm sau đó (kèm theo các báo cáo điều chỉnh cho cơ quan thuế) nên không thể tách ra 1 table chi tiết lưu mà khi lưu phải lưu toàn bộ CSDL. Thông thường định kỳ các doanh nghiệp được cơ quan thuế chiếu cố kiểm tra 1 lần sau 3 - 7 năm. Có nghĩa bất ngờ doanh nghiệp của bạn sẽ được thông báo trước từ 10 ngày cho đến 30 ngày đơn vị thuế sẽ cho người sờ gáy. Tất nhiên số lêu sẽ được kiểm tra tiếp tục từ lần kiểm tra trước, có nghĩa cách đây từ 3 - 7 năm cho đến thời điểm hiện tại. Những phát sinh nào OK (đúng luật thuế) thì được giữ lại, những phát sinh bị NO thì phải bỏ. Và tất nhiên dữ liệu phải được cập nhật. Cũng có khi các phát sinh bị NO được quay lại sau một số thủ tục "tình cảm". Dữ liệu cũng phải được cập nhật lại. Vì vậy khó mà tách riêng dữ liệu được. Tất nhiên sau một lần kiểm tra sẽ kết thúc các phát sinh và khóa sổ để mở CSDL mới. Nhưng không thể tách ra từng năm mà phải chờ cho đến đợt kiểm tra kế tiếp. Thank bạn
1/ Database chỉ chứa dữ liệu nhập xuất cho một năm
2/ Database chứa dữ liệu nhập xuất cho khoảng 3 năm
Trong các trường hợp trên cần có một table tồn đầu kỳ hàng tháng, Table này là table cố định, Table NhapXuat và TonKho là table tạm, dữ liệu sẽ bị xóa đi khi cập nhật mới. Mục đích nhằm giảm dung lượng file
Các dữ liệu của những năm trước được chuyển vào một DatabaseLuu, cần thì lấy ra phục vụ tính toán
Như vậy khi chạy code hoặc query chỉ cần lọc theo tháng cần tính toán thôi, sẽ giảm thiểu tối đa các vòng lặp, tốc độ truy xuất sẽ nhanh hơn. Khi tính tồn kho hoặc BQGQ lọc lấy tồn đầu kỳ tháng trước cộng với phát sinh nhập xuất của tháng này để tính toán Rất nhẹ
Thân mến
tranthanhan1962 > 18-03-21, 04:04 PM
(18-03-21, 03:30 PM)ongke0711 Đã viết: Vậy anh: Kiểm tra lại kiểu dữ liệu của biến khai báo trong vòng lặp xem có đủ sức chứa không? Biến nào liên quan đến số dòng: Integer -> LongVì đây là chương trình kế toán nên data type các file có giá trị số điều là double. Mình giả quyết bằng cách tạo form và cho 1 textbox năm. Sau khi vòng lập xử lý 1 năm sẽ thoát khỏi vòng lập, lưu giá trị tồn cuối lên table tạm cho 1 lệnh tào lao là textbox năm +1 để xử lý năm kế tiếp rồi lấy giá trị ở textbox tạm làm tồn đầu chạy tiếp vòng lập (cũng vẫn là code vòng lập đó) thì nó chạy rất OK. Đối với các công ty bán hàng tiêu dùng, số lượng record hàng ngày rất lớn, không xử lý năm được mà phải xử lý tháng. Có nghĩa vòng lập bị giới hạn theo số lượng record, phải thoát khỏi vòng lập xong mới chạy tiếp được. Mình cũng cố gắng tìm kiếm limit của nó và các cách nâng giới hạn của nó nhưng không tìm thấy.
Xuân Thanh > 18-03-21, 06:45 PM
(18-03-21, 03:44 PM)tranthanhan1962 Đã viết: Vấn đề này mình cũng có xử lý ở các trường hợp phần mềm kiểu nội bộ. Nhưng trường hợp phần mềm báo cáo tài chính của các công ty cho cơ quan thuế thì không đươc. Vì tất cả các chi tiết phải được lưu lại và chỉ cần một thay đổi ở các năm trước các giá trị phải được cập nhật cho các năm sau đó (kèm theo các báo cáo điều chỉnh cho cơ quan thuế) nên không thể tách ra 1 table chi tiết lưu mà khi lưu phải lưu toàn bộ CSDL. Thông thường định kỳ các doanh nghiệp được cơ quan thuế chiếu cố kiểm tra 1 lần sau 3 - 7 năm. Có nghĩa bất ngờ doanh nghiệp của bạn sẽ được thông báo trước từ 10 ngày cho đến 30 ngày đơn vị thuế sẽ cho người sờ gáy. Tất nhiên số lêu sẽ được kiểm tra tiếp tục từ lần kiểm tra trước, có nghĩa cách đây từ 3 - 7 năm cho đến thời điểm hiện tại. Những phát sinh nào OK (đúng luật thuế) thì được giữ lại, những phát sinh bị NO thì phải bỏ. Và tất nhiên dữ liệu phải được cập nhật. Cũng có khi các phát sinh bị NO được quay lại sau một số thủ tục "tình cảm". Dữ liệu cũng phải được cập nhật lại. Vì vậy khó mà tách riêng dữ liệu được. Tất nhiên sau một lần kiểm tra sẽ kết thúc các phát sinh và khóa sổ để mở CSDL mới. Nhưng không thể tách ra từng năm mà phải chờ cho đến đợt kiểm tra kế tiếp. Thank bạn
maidinhdan > 18-03-21, 08:58 PM
tranthanhan1962 > 18-03-21, 11:02 PM
(18-03-21, 08:58 PM)maidinhdan Đã viết: - Có thể em có câu trả lời cho cách xử lý theo yêu cầu của anh, nhưng phải cho em xem code công thức duyệt của anh.Thực là khó khi phải đưa cho Dân xủ lý 1 phần mềm không có dữ liệu mà vấn đề nó lại nằm trong số lượng record của dữ liệu. Tất nhiên dữ liệu kế toán của 1 công ty là bí mật riêng của công ty đó và không ai có quyền tự ý chia sẽ. Nhưng trong trường hợp này nếu không có dữ liệu thì làm mất thời gian của Dân, nên anh dã xin phép Xếp của công ty này cho phép chuyển dữ liệu đến forum. Tất nhiên cũng có chỉnh sửa một số. Về code thì do đây là một chương trình hoàn chỉnh nên việc tách riêng phần BQGQ của kho rất phức tạp và mất nhiều thời gian. Vả lại anh cũng không phải là người có thói quen dấu code. Nên anh sẽ chuyển lên đây toàn bộ phần mềm này (kể cả fornt end và back end)
- Có Demo càng tốt, em em viết trên đó để test cách xử lý cho anh. Không cần phải đính dữ liệu.
Gửi vào mail này: maidinhdan@gmail.com