Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Nên dùng bảng tạm (TempTable) ngay trong file FE hay file .mdb tạm (TempTable.mdb)
#1
Chào các bạn,

Bạn nào đã trải nghiệm qua việc dùng bảng tạm trong ứng dụng của mình thì chia sẽ giùm cách nào tốt hơn.
- Mình thì thường chỉ tạo bảng tạm ngay trong chính file FE, sau khi xử lý xong sẽ xoá records để làm nhẹ file ứng dụng. Tránh việc xử lý linked table ra file bên ngoài.
- Nhưng cũng có quan điểm là tạo riêng một file .mdb để lưu bảng tạm này, không dính gì đến file FE, khi cần thì link table vô. Đối với file .mdb tạm bên ngoài này thì dễ dàng xoá nó, có thể tạo thêm table tuỳ thích mà không ảng hưởng gì đến file FE (không bị phình - bloat lên) của mình.

Phần trên là nói về CSDL Ms Access. Mở rộng ra mình cũng muốn tư vấn về dùng bảng tạm đối với CSDL là SQL server (Đang chuyển CSDL lên nó 007 ). Mục đích là để giảm lượng dữ liệu truyền liên tục qua mạng (network traffic) khi làm việc với SQL Server back-end và update hàng loạt (batch insert/update).
Các bạn chia sẻ kinh nghiệm việc thiết kế CSDL dạng này giùm nhé.
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn NguyenDungAnh
#2
Thông thường Bảng tạm mình để ở Front End (PE), không để ở Back End (BE) vì ACC chỉ hỗ trợ đối với file có trữ lượng dưới 2GB dữ liệu, trường hợp BE gần xấp xỉ 2GB dữ liệu khi đó tạo bảng tạm có nhiều khó khăn.
Chữ ký của cpucloi Tôi chỉ biết mỗi một điều là những điều tôi biết được còn quá ít 021


ღღღღღTài sản của cpucloi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tranthanhan1962 , NguyenDungAnh
#3
Cháu xin hỏi :
Database chứa vài Table (3 table), 2 Table chứa chục record, Table chính chứa hơn 20.000 records.
Chương trình hoạt động bình thường.
Do nhu cầu phát sinh cần điều chỉnh để nhập thêm dữ liệu mới, và trong VBA viết thêm code để nhập dữ liệu (Add new) với số dòng code thêm khoảng 70 dòng.
Sau khi cập nhật , chương trình khi thực hiện tạo record mới thường liên tục báo lỗi vượt quá dung lượng "...exceed ..." (cháu không nhớ rõ cụm từ, để cháu xem bản backup rồi ghi lại).
Như vậy việc viết code thêm làm cho dung lượng tăng phát sinh vượt quá duong lượng chương trình cho phép 2G (database này dung lượng cũng lớn mặc dù chỉ chứa table có hơn 20.000 records, code VBA với vòng lặp "If" rất nhiều) hay do code quá nhiều chương trình không xử lý được dẫn đế tràn bộ nhớ ?
Chữ ký của DooHoaangPhuuc DooHoaangPhuuc,gia nhập Thủ Thuật Access từ 27-06 -17.
ღღღღღTài sản của DooHoaangPhuuc (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
(28-08-18, 05:03 PM)cpucloi Đã viết: Thông thường Bảng tạm mình để ở Front End (PE), không để ở Back End (BE) vì ACC chỉ hỗ trợ đối với file có trữ lượng dưới 2GB dữ liệu, trường hợp BE gần xấp xỉ 2GB dữ liệu khi đó tạo bảng tạm có nhiều khó khăn.

007  Ý mình là tạo file database tạm (TempTable.mdb) ở máy khách, cùng folder với file FE chứ không phải lưu cùng BE. Khi FE xử lý nếu cần thì tự động tạo thêm 1 database chỉ để lưu các table tạm để xử rồi xoá nó luôn (hoặc xoá table tạm trong nó).
Tại sao mình hỏi vậy?  Vì có bài viết nói rằng việc Compact & Repair Database từ bản 2007  trở lên có thể gây ra các lỗi không mong muốn (Corrupt database) đặc biệt Access 2007 lên 2010. Do đó nếu giải pháp tạo Table tạm ngay trong FE, sau khi xử lý xong sẽ xoá nó + Compact để FE không bị phình lên có thể gây lỗi. Còn nếu dùng riêng một file database khác thì khỏi lo vụ Compact & Repair.


(29-08-18, 12:12 AM)DooHoaangPhuuc Đã viết: Cháu xin hỏi :
Database chứa vài Table (3 table), 2 Table chứa chục record, Table chính chứa hơn 20.000 records.
Chương trình hoạt động bình thường.
Do nhu cầu phát sinh cần điều chỉnh để nhập thêm dữ liệu mới, và trong VBA viết thêm code để nhập dữ liệu (Add new) với số dòng code thêm khoảng 70 dòng.
Sau khi cập nhật , chương trình khi thực hiện tạo record mới thường liên tục báo lỗi vượt quá dung lượng "...exceed ..." (cháu không nhớ rõ cụm từ, để cháu xem bản backup rồi ghi lại).
Như vậy việc viết code thêm làm cho dung lượng tăng phát sinh vượt quá duong lượng chương trình cho phép 2G (database này dung lượng cũng lớn mặc dù chỉ chứa table có hơn 20.000 records, code VBA với vòng lặp "If" rất nhiều) hay do code quá nhiều chương trình không xử lý được dẫn đế tràn bộ nhớ ?

- Dung lượng Code không thể gây vượt quá dung lượng mà là do mã code hoạt động gây tràn bộ nhớ. Cái này phát sinh có thể do code sai dẫn đến vòng lặp vô tận, nó cứ insert dòng liên tục, nếu không insert dòng thì cứ chạy cái lệnh nào đó không thoát được (kiểu giống như hiệu ứng chạy chữ vậy). Nó chạy 100% CPU chừng nào treo máy thì thôi. 
- Nếu code dư thừa quá nhiều hoặc code gì cũng đưa vô Module thì ứng dụng khởi động sẽ ì ạch vì chiếm bộ nhớ. Trong vòng lặp nếu tránh dùng If được thì tránh, đổi sang Select Case thì vba sẽ xử lý nhanh gọn hơn (nó không phải chạy từ trên xuống dưới hết các dòng If).  
- Do lỗi database. Tôi cũng đã gặp mấy file Access 2003 bị lỗi vậy. Sau khi xoá trắng tất cả Table, Query....,Module, Compact nó thì dung lượng file vẫn 8M, import sang file khác cũng như vậy. Khi đó chỉ có cách Export từng table, từng form...sang file mới thì được hoặc tốt nhất là export ra file text: 
Application.SaveAsText acForm,"frmMain","D:\Backup\frmMain.txt"
Application.LoadFromText acForm,"frmMain","D:\Backup\frmMain.txt"
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn DooHoaangPhuuc
#5
Mình hay dùng table tạm luôn trong FE, và thường là các table danh mục, mấy table này dữ liệu thường khai báo 1 lần rồi thôi, thêm cả cái compact on close nữa cũng đáp ứng được việc tự động compact vì thế FE ko bị phình to ra.
Chữ ký của mrsiro Xin chào, mình là mrsiro, Tham gia http://thuthuataccess.com/forum từ ngày 05-12 -14.
Reply
Những người đã cảm ơn
#6
(29-08-18, 07:13 PM)mrsiro Đã viết: Mình hay dùng table tạm luôn trong FE, và thường là các table danh mục, mấy table này dữ liệu thường khai báo 1 lần rồi thôi, thêm cả cái compact on close nữa cũng đáp ứng được việc tự động compact vì thế FE ko bị phình to ra.

Vậy định kỳ bao lâu hoặc cơ chế cập nhật định kỳ các table Danh mục của bạn như thế nào?
Chữ ký của ongke0711 If you BORN poor, it's not your mistake. But if you DIE poor, It's your mistake!
ღღღღღTài sản của ongke0711 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Help] chỉ dùm bôi đen text trong form textbox bo bin 3 86 6 Giờ trước
Bài mới nhất: Xuân Thanh
  Hướng Dẫn Hỏi cách tạo code phục hồi dữ liệu trong table sau khi backup doandinhtam 31 1,341 29-08-18, 03:54 PM
Bài mới nhất: doandinhtam
  Hỏi về bắt lỗi trong accc thanlaem 21 4,397 07-08-18, 11:02 PM
Bài mới nhất: vdttuan
  [Help] Tạo thông báo sắp đến niên hạn trong access kaivn 11 1,155 24-04-18, 03:14 PM
Bài mới nhất: kaivn
  [Hỏi] Sử dụng nút lăn chuột trong form phungminhluan 2 322 23-04-18, 01:26 PM
Bài mới nhất: phungminhluan

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ơ| PMA Nha Trang| Gỗ Acrylic Không Đường Line