cannguyen > 15-06-17, 02:48 PM
ongke0711 > 15-06-17, 05:45 PM
tranthanhan1962 > 15-06-17, 07:16 PM
cannguyen > 16-06-17, 12:47 AM
(15-06-17, 05:45 PM)ongke0711 Đã viết: Nếu bạn đang nhập bệnh nhân mới và chưa lưu record thì [BNCuoi] vẫn chưa thay đổi, khi đó máy khác cũng nhập thì nó sẽ lấy lại cùng mã [BNCuoi] để + 1 sau đó cùng lưu sẽ đụng với record bạn vừa nhập.
cannguyen > 16-06-17, 12:52 AM
(15-06-17, 07:16 PM)tranthanhan1962 Đã viết: Nếu nhập với nhiều máy để chắc chắn không trùng mã, bạn phải thêm vào mã máy mới chắc ăn (lúc này có thể xảy ra bệnh nhân trùng số thứ tự nhưng khác mã máy). Nếu muốn nhập với nhiều máy mà không thêm mã máy bạn có thể thiết đặt properties của form RecordLock = All Record (cấm nhập + cấm sửa) hoặt Edited Record (cấm nhập + cho sửa). Khi máy nào mở trước sẽ khóa quyền thêm bệnh nhân mới tất cả các máy khác. Lúc này dù nhiều máy, vẫn chỉ sử dụng được như một máy (máy nào mở form đầu tiên). Thường các bệnh viện chỉ sử dụng một máy để nhận bệnh nhân mới (một cửa), các máy khác thì truy cập và xử lý các phần còn lại.
tranthanhan1962 > 16-06-17, 05:15 AM
(16-06-17, 12:52 AM)cannguyen Đã viết: Cám ơn bác nhưng như vậy không được bác à. PK đông nên phải nhiều máy làm BN đỡ phải chờ. Em gửi link bác ngâm cứu thêm giúp nhéNếu tạo mã tự động, nguyên tắc xử lý là vậy, không thể khác được. Để tránh việc trùng mã, bạn phải chọn một trong 2:
Cám ơn bác
cannguyen > 16-06-17, 10:12 AM
(16-06-17, 05:15 AM)tranthanhan1962 Đã viết:(16-06-17, 12:52 AM)cannguyen Đã viết: Cám ơn bác nhưng như vậy không được bác à. PK đông nên phải nhiều máy làm BN đỡ phải chờ. Em gửi link bác ngâm cứu thêm giúp nhéNếu tạo mã tự động, nguyên tắc xử lý là vậy, không thể khác được. Để tránh việc trùng mã, bạn phải chọn một trong 2:
Cám ơn bác
Nhập 1 máy hoặc ưu tiên xử lý nhập cho máy mở form trước => Bảo đảm việc xử lý số thứ tự không cần mã của máy tham gia.
Nhập nhiều máy=> Chấp nhận sự tham gia của mã máy nhập, chập nhận trùng số thứ tự khi có máy nhập cùng thời điểm.
Tất nhiên còn một số cách xử lý:
1/Cuối ngày chạy lại mã: Bạn không thể dùng cách này vì sau khi đăng ký bệnh nhân mới, phải in ngay tem mã vạch để dán vào sổ khám bệnh. Việc chạy lại mã làm sai mã trên tem.
2/Xử lý kiểu hóa đơn đỏ: Tạo trước số lượng mã thừa trong ngày, phân phối cho từng máy. Ví dụ: có 5 máy, trung bình 400 người đăng ký / ngày, tạo 500 mã, phân phối máy 1= 1-100, máy 2 = 101-200, máy 3=201-300, việc này cũng sẽ có một số yếu điểm như mã thừa không sử dụng được qua ngày hôm sau nếu mã có thêm ngày. Ví dụ ngày 15/6/2017 còn thừa từ mã 20170615091 - 20170615100 sẽ không sử dụng được ngày hôm sau vì nó phải được bắt đầu từ 20170619001, trong khi đó các số 20170615101, 20170615102 đã được máy khác sử dụng. Muốn xử dụng kiểu này bạn chỉ được lấy STT mà không lấy ngày để ngày hôm sau có thể sử dụng các mã thừa. Kiểu này sẽ làm tăng ký tự mã vì số tứ tự sẽ tăng vô hạn.
3/Viết code khóa record kiểu đập - nhả, ai tạo lệnh record mới trước sẽ khóa record, sau khi tạo mã xong chuyển textbox khác sẽ mở form RecordLock = No cho máy khác tạo rồi điền các mục khác. Kiểu này vẫn có thể bị xung đột dữ liệu trong trường hợp 2 máy đều ra lệnh cùng thời điểm.
Theo mình cũng không nên quan trọng lắm số thứ tự. Cứ kèm mã máy vào số thứ tự là hay nhất, Ví dụ 01-201706151001, 02-201706151002, 03-201706151003, lỡ có trùng số thứ tự 04-201706151004, 05-201706151004 cũng chẳng sao. Việc tạo mã bệnh nhân không có nghĩa là đếm số thứ tự bệnh nhân mà chỉ nhằm tối ưu hóa để in tem mã vạch sổ khám bệnh
tranthanhan1962 > 16-06-17, 10:53 AM
cannguyen > 16-06-17, 11:48 AM
(16-06-17, 10:53 AM)tranthanhan1962 Đã viết: Mình chưa xem CSDL của bạn. Nhưng vấn đề để biết bao nhiêu bệnh nhân trong ngày không quá phức tạp như vậy đâu. Chỉ cần một total query là xong.
tranthanhan1962 > 16-06-17, 12:45 PM