So sánh Access 2003 với Access 2007,Access 2010

tuannhcs

Member
Hội viên mới
Chào các bạn
-Mình có 1 vấn đề này đang muốn hỏi ý kiến các bạn
-Mình có viết ứng dụng bằng Access 2003,ứng dụng được tổ chức theo mô hình
Front End,Back End
-Nhưng khi mô hình đó chạy trong mạng LAN có 5 máy chạy thì file DuLieu.mdb rất hay bị lỗi,tốc độ rất chậm
và phải compact/repair thường xuyên,tóm lại chạy trong mạng LAN không ổn định
-Mình đang tính chuyển lên Access 2007 hoặc Access 2010,không biết có chạy ổn định cho 5 máy không
-Hay là bắt buộc phải chuyển lên CSDL là SQL SERVER,máy trạm là Access Project
-Bạn nào đã từng làm Access 2007 hoặc Access 2010 trong mô hình mạng LAN,cho giúp mình ý kiến
xem nó có chạy ổn định không và có nên dùng nó không
Rất mong ý kiến hỗ trợ từ các bạn
Xin Chân Thành Cảm ơn !
 

muontennguoi

Member
Thành viên BQT
Super Moderators
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Vấn đề không phải là do 2003 hay 2007.
Giải quyết xung đột giữa các người dùng cuối là chuyện phải tính đến khi viết chương trình.
Bạn phải tính toán phân quyền khóa dòng (record) khi cùng lúc nhiều người đang cập nhật dữ liệu.
Nếu bạn sử dụng các tool có sẵn của Access thì cần hiểu rõ cách thức hoạt động của nó.
Rất dễ xảy ra trường hợp 1 người đang cập nhật dữ liệu cho 1 dòng nhưng lại nắm quyền khóa toàn bộ CSDL.
Với Access 2000 đã có thể cho phép 31 người connect cùng lúc.
Bạn không cần phải compact hay repair CSDL của Access. Việc đó chỉ dùng khi bạn cần chép vào backup mà thôi. CSDL đang cập nhật hàng ngày thì cứ để Access tự quản.
Với 5 máy con thì SQL server hay Access cũng không làm thay đổi gì tình thế cả. Tùy thuộc vào sức mạnh của máy server thôi.
Tóm lại bạn xem xét lại chương trình của mình để tìm lỗi và tại sao nó chạy chậm (logic không hợp lý, vòng lặp quẩn...), nếu không thì dù bạn sử dụng phần mềm nào thì cũng thế thôi.
 

tuannhcs

Member
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Mình cảm ơn sự trợ giúp của bạn muontenguoi
Bạn có thể cho mình biết cách tính toán phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Bạn có thể cho mình biết dùng Tool nào của Access để phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Xin chân thành cảm ơn bạn
 

phatnq2002

Tích cực giảm cân...
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Mình cảm ơn sự trợ giúp của bạn muontenguoi
Bạn có thể cho mình biết cách tính toán phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Bạn có thể cho mình biết dùng Tool nào của Access để phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Xin chân thành cảm ơn bạn
Thật ra, việc nhanh chậm khi làm một application với Access là do:
Cách thiết kế cơ sở dữ liệu
Xử lý quá nhiều bằng code
Dữ liệu trong bảng nhiều quá, sẽ ảnh hưởng khi load data hoặc SELECT

Lỗi thường xảy ra trong trường hợp chạy ứng dụng nhiều người dùng là ở cái trùng khóa chính, hoặc do khi cùng lúc 2 người làm việc trên cùng record, người thứ nhất delete record đó rồi, người thứ hai sau đó update dữ liệu mới cho record đó. Nếu chúng ta ràng buộc được những tình huống này thì sẽ khá ổn.

VD:
Trong chương trình, khi insert một record mới, bạn thực hiện việc lấy ID cho khóa chính, sau đó mới insert vào table. Nếu có 2 người cùng insert, thì khi chưa lưu vào table, hai người đó đều sẽ nhận cùng một ID giống nhau. Nên nếu người thứ nhất lưu xong, người thứ hai lưu tiếp thì sẽ xảy ra lỗi trung khóa chính.

Trong trường hợp lưu một record mới vào table, bạn cần phải làm động tác table -lock, nghĩa là khóa table đó lại, và tìm trước xem có record nào đã nhận ID đó chưa, nếu có rồi thì bạn sẽ phải tạo ID khác để đưa vào. Lưu xong, bạn sẽ unlock table-lock.

Nếu sử dụng SQL Server, thì bạn có thể lợi dụng một số tính năng mạng của nó để hạn chế những rủi ro trên, ví dụ như bạn có thể sử dụng TRANSACTION.
 

tuannhcs

Member
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Xin cảm ơn bạn phatnq2002
-Trước đây mình cũng làm phần mềm quản lý bán hàng bằng access 2003
-Khi chạy 1 máy rất ổn định,nhưng khi chạy trong mạng LAN nhìn chung không ổn định
và mình chuyển lên SQL Server máy trạm là Access Project thì số người dùng là vô tư luôn
-Mô hình Access project +sql server chạy trong mạng LAN rất ổn định
-Nay mình muốn chuyển phần mềm kế toán bằng Access mdb sang Access Project+SQL server
nhưng phải sửa code tương đối nhiều
Bạn có cách nào chuyển toàn bộ code mdb sang Adp mà không cần sửa code không
Mình đã dùng mdb kết nối qua ODBC nhưng vẫn bị lỗi
Mình cũng dùng Tool Upsize lên sql server của access nhưng k được
Nhìn chung khi chuyển code mdb sang Adp phải sửa tương đối nhiều
Vậy có cách nào khắc phục tình trạng trên không
Rất mong sự trợ giúp của bạn
Xin chân thành cảm ơn
 

phatnq2002

Tích cực giảm cân...
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Xin cảm ơn bạn phatnq2002
-Trước đây mình cũng làm phần mềm quản lý bán hàng bằng access 2003
-Khi chạy 1 máy rất ổn định,nhưng khi chạy trong mạng LAN nhìn chung không ổn định
và mình chuyển lên SQL Server máy trạm là Access Project thì số người dùng là vô tư luôn
-Mô hình Access project +sql server chạy trong mạng LAN rất ổn định
-Nay mình muốn chuyển phần mềm kế toán bằng Access mdb sang Access Project+SQL server
nhưng phải sửa code tương đối nhiều
Bạn có cách nào chuyển toàn bộ code mdb sang Adp mà không cần sửa code không
Mình đã dùng mdb kết nối qua ODBC nhưng vẫn bị lỗi
Mình cũng dùng Tool Upsize lên sql server của access nhưng k được
Nhìn chung khi chuyển code mdb sang Adp phải sửa tương đối nhiều
Vậy có cách nào khắc phục tình trạng trên không
Rất mong sự trợ giúp của bạn
Xin chân thành cảm ơn
Bạn không nên quá "tín nhiệm" cái upsize của Access, mà bạn nên thủ công một chút. Cái gì "cũng có giá của nó mà".

Lúc này bạn phải đổi các thứ sau:

CurrentDB => CurrentProject
CurrentDB.Execute => CurrentProject.Connection.Execute

Do Access Project dùng ADODB bên bạn không thể khai báo: Dim rs As Recordset nữa vì nó hiểu là ADODB.Recordset. Do vậy, sẽ không thể dùng FindFirst, FindPrevious, FindNext, FindLast được nữa mà chỉ dùng Find mà thôi.

Nếu dùng Find thì đầu tiên phải đứng ở đầu recordset, sau đó dùng Find để tìm kiếm. Nếu rs.EOF thì có nghĩa là tìm không có (Chứ không còn là rs.NoMatch nữa).

v.v. và v.v

Muốn "lên đời" thì cũng phải chịu khó chút.
 

muontennguoi

Member
Thành viên BQT
Super Moderators
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Mình cảm ơn sự trợ giúp của bạn muontenguoi
Bạn có thể cho mình biết cách tính toán phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Bạn có thể cho mình biết dùng Tool nào của Access để phân quyền khoá dòng(record) khi cùng lúc nhiều người đang cập nhật dữ liệu
Xin chân thành cảm ơn bạn
Ở bảng Propreties sheet, tab Data bạn chọn giá trị cho Record Locks. Hoặc thiết lập mặc định từ Tool/Options/Advanced.

Form.RecordLocks Property
You can use the RecordLocks property to determine how records are locked and what happens when two users try to edit the same record at the same time. Read/write.
Syntax:
expression.RecordLocks
expression A variable that represents a Form object.
Remarks:
When you edit a record, Microsoft Access can automatically lock that record to prevent other users from changing it before you are finished. For forms, the RecordLocks property specifies how records in the underlying table or query are locked when data in a multiuser database is updated
The RecordLocks property only applies to forms, reports, or queries in a Microsoft Access database .
The RecordLocks property uses the following settings.

Setting :
0 No Locks- (Default): In forms, two or more users can edit the same record simultaneously. This is also called "optimistic" locking. If two users attempt to save changes to the same record, Microsoft Access displays a message to the user who tries to save the record second. This user can then discard the record, copy the record to the Clipboard, or replace the changes made by the other user. This setting is typically used on read-only forms or in single-user databases. It is also used in multiuser databases to permit more than one user to be able to make changes to the same record at the same time.
1 All Records: All records in the underlying table or query are locked while the form is open in Form view or Datasheet view . Although users can read the records, no one can edit, add, or delete any records until the form is closed.
2 Edited Record: (Forms and queries only) A page of records is locked as soon as any user starts editing any field in the record and stays locked until the user moves to another record. Consequently, a record can be edited by only one user at a time. This is also called "pessimistic" locking.

You can use the No Locks setting for forms if only one person uses the underlying tables or queries or makes all the changes to the data.
In a multiuser database, you can use the No Locks setting if you want to use optimistic locking and warn users attempting to edit the same record on a form. You can use the Edited Record setting if you want to prevent two or more users editing data at the same time.
In Form view or Datasheet view, each locked record has a locked indicator in its record selector.
To change the default RecordLocks property setting for forms, click Options on the Tools menu, click the Advanced tab on the Options dialog box, and then select the desired option under Default record locking.
Data in a form, report, or query from an Open Database Connectivity (ODBC) database is treated as if the No Locks setting were chosen, regardless of the RecordLocks property setting.

Example:

The following example sets the RecordLocks property of the "Employees" form to Edited Record (a page of records is locked as soon as any user starts editing any field in the record and stays locked until the user moves to another record).

Forms("Employees").RecordLocks = 2
 

tuannhcs

Member
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Xin cảm ơn bạn muontennguoi và phatnq2002
Giải pháp cuối cùng hiệu quả nhất vẫn là chuyển lên sql server và máy trạm là access project
Mình đành chịu khó bỏ ra 1 tháng để chuyển lên là ok
Theo mình dùng Access project+sql server là hiệu quả trong mạng LAN,tiến tới sẽ bỏ hẳn phiên bản làm trong mdb
Vậy theo các bạn dùng Access project+sql server trong mạng có còn nhược điểm gì cần chú ý không
Rất mong trợ giúp từ các bạn
 

ng2hien

Member
Hội viên mới
Ðề: So sánh Access 2003 với Access 2007,Access 2010

Nếu bạn nên xài Access 2007, nó chạy tốt và ít lỗi hơn 2003.
Chỉ có 5 người xài đồng thời thì không phải là nhiều.
Bạn hãy tách dữ liệu và giao diện thành các file riêng rồi sử dụng chức năng Linked Table để kết nối dữ liệu giữa 2 thành phần, đồng thời giảm tải cho tập tin Access.

Tất nhiên nếu chuyển qua được SQL Sever thì tốt nhất rồi. Nhưng mất công lắm đấy, đặc biệt có những thứ Access xài được mà SQL Svr không cho.
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top