01/10/2018, 08:42

Giúp đỡ ngoại lệ SQL, C#

Mình đang làm LinQ to SQL thì gặp ngoại lệ ngày
Khi click vào nút sửa để cập nhật thông tin 1 nhân viên thì nó thông báo ngoại lệ này

Additional information: Value of member ‘manv’ of an object of type ‘Nhanvien’ changed.
A member defining the identity of the object cannot be changed.
Consider adding a new object with new identity and deleting the existing one instead.

Cụ thể mình dịch google nó ra
Thông tin bổ sung: Giá trị của thành viên ‘manv’ của một loại đối tượng ‘Nhanvien’ đã thay đổi.
Không thể thay đổi thành viên xác định danh tính của đối tượng.
Hãy xem xét thêm một đối tượng mới với nhận dạng mới và xóa một đối tượng mới thay thế.

Mình k hiểu ý chương trình muốn thông báo gì? Vì mã nhân viên mình đã cho giống nhau rỒi
Thông tin bổ sung: Giá trị của thành viên ‘manv’ của một loại đối tượng ‘Nhanvien’ đã thay đổi.
Không thể thay đổi thành viên xác định danh tính của đối tượng.
Hãy xem xét thêm một đối tượng mới với nhận dạng mới và xóa một đối tượng mới thay thế.

đây là hình cái form của mình.

Wake Of GOD viết 10:45 ngày 01/10/2018

Additional information: Value of member ‘manv’ of an object of type ‘Nhanvien’ changed.A member defining the identity of the object cannot be changed.Consider adding a new object with new identity and deleting the existing one instead.

Mình không hiểu ý bạn lắm nhưng bạn nên xem cái trigger thử xem có thể trigger chặn không cho cập nhật thông tin thành viên

Nguyễn Thanh viết 10:43 ngày 01/10/2018

Ôi… Mình chưa biết gì về trigger nữa
Cùng 1 bài đó mình viết 2 đoạn update cho 2 bảng khác nhau bảng đầu tiên thì k sao sang bảng thứ 2 lại bị…
Đoạn code cái đó đây… bạn xem giúp mình thử.
DataLinQDataContext data = new DataLinQDataContext();
Chitiet ct = (from Chitiet in data.Chitiets where (Chitiet.manv == txtmanv.Text && Chitiet.macv == cbmacv.Text select Chitiet).Single();

        ct.macv = cbmacv.Text;
        ct.ngay = txtngay.Text;
        ct.buoi = cbbuoi.Text;
      
        data.SubmitChanges();
        lich_load();
Đăng Trần viết 10:44 ngày 01/10/2018

Cách giải quyết mấy thứ này trong tương lai:

  1. Phải luôn nhớ, không nhớ thì ghi ra cột trong dữ liệu mình khai báo kiểu gì, giới hạn bao nhiêu, các ràng buộc…
  2. Nhập tay thử vào database.
  3. Viết hàm riêng để thêm, xóa, sửa dữ liệu từng table (từng trường luôn nếu cần). Xong test thử.
  4. Nếu không thêm được đa số do chuỗi nhập vào không đúng kiểu dữ liệu khai báo hoặc vượt giới hạn, trùng khóa… những thứ không xa xôi. Viết những truy vấn trong khối try/catch và print exception ra để đọc ngoại lệ.
  5. Làm cơ bản không có bug căng, tại ẩu thôi, lập trình già đầu vẫn còn bị bug (rất nhiều có khi bug tào lao luôn) nên yên tâm nó là bạn không phải thù, nó đang dạy mình.
Minh viết 10:43 ngày 01/10/2018

Bạn kiểm tra manv trong CSDL chưa… Có thể do dữ liệu trên dgv với CSDL không thống nhất do bạn chỉnh sữa ở đâu đó mà không để ý

Nguyễn Thanh viết 10:52 ngày 01/10/2018

ay thử vào database.

Cám ơn các bạn. Do cả 2 đều là khóa lên nó k cho sửa khóa…

Hung viết 10:50 ngày 01/10/2018

Tôi cũng không hiểu phải nhập để vào như thế nào . Ở trường dạy khác xa . Hy vọng những người học sau này tốt hơn .

Bài liên quan
0