Lỗi Record new trong share csdl nhiều người dùng

chihienphuco

New Member
Hội viên mới
Mình tạo cdsl cho nhiều người dùng, nhưng khi nhiều máy cùng click vào record new để nhập liệu thì trong table nó bị trùng nhau và chỉ một người nhập được.

Có cách nào khắc phục tình trạng trên? mong giúp đở gấp!
 
Ðề: Lỗi Record new trong share csdl nhiều người dùng

Mình tạo cdsl cho nhiều người dùng, nhưng khi nhiều máy cùng click vào record new để nhập liệu thì trong table nó bị trùng nhau và chỉ một người nhập được.

Có cách nào khắc phục tình trạng trên? mong giúp đở gấp!

Table có chọn share database không? Có record lock không?
Table có primary key thì việc trùng có thể xảy ra. Access thông báo lỗi là đúng rồi.
 
Ðề: Lỗi Record new trong share csdl nhiều người dùng

Nút thêm mới viết như thế này:

Private Sub Command30_Click()
DoCmd.GoToRecord , , acNewRec
Dim CSDL As Database, TBL As Recordset
Set CSDL = CurrentDb
Set TBL = CSDL.OpenRecordset("T12 TCMAIN", dbOpenSnapshot)
If TBL.RecordCount <> 0 Then
TBL.MoveLast
MAQLTC = Format(Val(TBL!MAQLTC) + 1, "000000")
Else
MAQLTC = "000001"
End If
MANV = "A"
MADV = "B"
...
DoCmd.RunCommand acCmdSaveRecord
TBL.Close
CSDL.Close
MANV.SetFocus
MANV.Dropdown
End Sub

Ở nút phiếu mới mình dùng lệnh gán các field có khóa, sau đó dùng lệnh:

DoCmd.RunCommand acCmdSaveRecord

Để save Record thêm mới mà không bị lỗi chờ save nữa.

Topic xong.
 
Sửa lần cuối:
Ðề: Lỗi Record new trong share csdl nhiều người dùng

Nút thêm mới viết như thế này:

Private Sub Command30_Click()
DoCmd.GoToRecord , , acNewRec
Dim CSDL As Database, TBL As Recordset
Set CSDL = CurrentDb
Set TBL = CSDL.OpenRecordset("T12 TCMAIN", dbOpenSnapshot)
If TBL.RecordCount <> 0 Then
TBL.MoveLast
MAQLTC = Format(Val(TBL!MAQLTC) + 1, "000000")
Else
MAQLTC = "000001"
End If
MANV = "A"
MADV = "B"
...
DoCmd.RunCommand acCmdSaveRecord
TBL.Close
CSDL.Close
MANV.SetFocus
MANV.Dropdown
End Sub

Ở nút phiếu mới mình dùng lệnh gán các field có khóa, sau đó dùng lệnh:

DoCmd.RunCommand acCmdSaveRecord

Để save Record thêm mới mà không bị lỗi chờ save nữa.

Topic xong.

Bạn viết thế này thì làm sao mà chạy ở chế độ multi user được?
Giả sử có 2 người cùng thêm mới thì lúc đó sẽ cùng đến record Last và sẽ lấy về cái MAQLTC giống nhau, vì khi người thứ nhất lấy chưa lưu thì người thứ hai làm gì mà nhận được cái MAQLTC mới hơn được.
Trùng là cái chắc.

Có một mẹo nhỏ là bạn có một table ngoài chứa cái MAQLTC mới nhất. Khi người 1 thêm mới, họ sẽ vào đây lấy cái MAQLTC này để tạo ra cái MAQLTC mới, sau đó update lại cho table đó. Người sau cũng vậy, chắc chắn sẽ không bao giờ bị trùng, tuy nhiên cách này sẽ có một bất lợi là nếu không lưu và TCMAIN thì xem như MAQLTC đó sẽ bị "lủng".

Có nhiều cách, bạn có thể suy nghĩ thêm từ gợi ý của tôi.
 
Ðề: Lỗi Record new trong share csdl nhiều người dùng

Bạn viết thế này thì làm sao mà chạy ở chế độ multi user được?
Giả sử có 2 người cùng thêm mới thì lúc đó sẽ cùng đến record Last và sẽ lấy về cái MAQLTC giống nhau, vì khi người thứ nhất lấy chưa lưu thì người thứ hai làm gì mà nhận được cái MAQLTC mới hơn được.
Trùng là cái chắc.

Có một mẹo nhỏ là bạn có một table ngoài chứa cái MAQLTC mới nhất. Khi người 1 thêm mới, họ sẽ vào đây lấy cái MAQLTC này để tạo ra cái MAQLTC mới, sau đó update lại cho table đó. Người sau cũng vậy, chắc chắn sẽ không bao giờ bị trùng, tuy nhiên cách này sẽ có một bất lợi là nếu không lưu và TCMAIN thì xem như MAQLTC đó sẽ bị "lủng".

Có nhiều cách, bạn có thể suy nghĩ thêm từ gợi ý của tôi.

Đoạn mã trên đã chay ổn, do nó tạo mới hóa đơn xong là save luôn vào table nhờ đoạn lệnh này:
DoCmd.RunCommand acCmdSaveRecord

Nên 2 người hoặc nhiều hơn nhập vẫn có MAQLTC khác nhau mà không lỗi như hôm qua.

Cám ơn anh phát!
 
Sửa lần cuối:

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


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

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

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top