Từ 1 tới 9 trên tổng số 9 kết quả

Đề tài: Lỗi Index was out of range trên DataGridView

  1. #1
    Ngày gia nhập
    10 2011
    Nơi ở
    Hell On The Earth
    Bài viết
    3

    Mặc định close

    close .
    Đã được chỉnh sửa lần cuối bởi Scorpius DLord : 01-03-2015 lúc 01:53 PM.

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    267

    Lỗi này là do vượt quá giới hạn của mảng.
    dtLayMaDocGia.Rows[0][0].ToString() hoặc tbTenSach.Rows[j][0].ToString().

    Cậu xem thử đi. cái này tbTenSach.Rows[j][0].ToString() là nguy cơ sai cao nhất

  3. #3
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Hehe, bác DLord. Xóa thì bạn dùng vòng for chạy ngược lại từ dgView.Count và chạy lùi về 0 nhé.
    Code:
    for (int j = tbTenSach.Rows.Count-1; j >=0 ; j--).

  4. #4
    Ngày gia nhập
    03 2009
    Bài viết
    173

    2 cái bảng chi tiết của bạn nên để 1 primary key là mã phiếu , các trường còn lại bao gồm mã sách và mã độc giả thì bỏ primary đi
    Còn out of range thì mỗi lần thực hiện xóa hoặc thêm mới bạn nên reload gridview để cập nhật quá trình vừa thực hiện

  5. #5
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Trích dẫn Nguyên bản được gửi bởi nautilux Xem bài viết
    2 cái bảng chi tiết của bạn nên để 1 primary key là mã phiếu , các trường còn lại bao gồm mã sách và mã độc giả thì bỏ primary đi
    Còn out of range thì mỗi lần thực hiện xóa hoặc thêm mới bạn nên reload gridview để cập nhật quá trình vừa thực hiện
    Đúng phải là bỏ mã độc giả lên phiếu mượn và phiếu trả, ở chi tiết phiếu mượn và phiếu trả chỉ có thông tin số phiếu trả(mượn) và mã sách thôi. Cả 2 đồng thời là primary và mỗi cái riêng biệt là foreign key.
    Mỗi phiếu được dùng cho một độc giả nên để mã độc giả ở chi tiết là không hợp lý.
    Còn cái lỗi là do các biến khi chạy for vượt khỏi giá trị index cột hoặc dòng của grid

  6. #6
    Ngày gia nhập
    08 2011
    Bài viết
    27

    Mặc định Góp ý thiết kế CSDL

    Theo nhận xét của tôi CSDL này thiết kế không được ổn, tại sao lại phải làm động tác xóa phiếu mượn liên quan khi độc giả trả sách, như vậy khi độc giả đến trả sách lại phải nhập vào một phiếu trả? (chưa kể khi muốn tìm lại thông tin về ngày mượn, nhân viên cho mượn thì cũng không còn)

    Gợi ý bạn nên bỏ 2 bảng phiếu trả & chi tiết phiếu trả. Bảng phiếu mượn bổ sung thêm 2 cột ngày trả, tình trạng. Ghi nhận xem sách này đã trả chưa và thời gian trả... (tùy bạn có thể thêm vài thông tin khác). Khi người ta đến trả sách thì tìm đến phiếu mượn cập nhật các thông tin này vào như vậy các phiếu mượn nào mà có các thông tin này thì coi như người ta đã trả sách.

    Bạn thấy đấy phần thiết kế là rất quan trọng nó ảnh hưởng đến coding rất nhiều, có khi chỉ cần thay đổi nhỏ thôi cũng sẽ giúp cho phần coding giảm được một lượng công việc và các vấn đề cần giải quyết rất đáng kể.
    Đã được chỉnh sửa lần cuối bởi HuyenTran2011 : 17-11-2011 lúc 03:33 PM.

  7. #7
    Ngày gia nhập
    03 2009
    Bài viết
    173

    Lúc bạn thực hiện xóa thì trong code bạn đặt 1 messageBox xem có execute đúng câu lệnh không , lúc đó sẽ biết sai ở đâu mà sửa :|
    còn vấn đề CSDL là chỉ là giúp bạn thiết kế tốt hơn thôi

  8. #8
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Trích dẫn Nguyên bản được gửi bởi Scorpius DLord Xem bài viết
    Lỗi: đó là ở cái combobox Mã Độc Giả ở trên form phiếu trả, khi mình xóa theo thứ tự ( tức là xóa từ trên xuống dưới các text ở trong combobox) thì nút Lưu thực hiện đúng chức năng xóa phiếu mượn, thêm phiếu trả. Nhưng nếu mình xóa ko theo thứ tự thì nó chỉ thêm phiếu trả, ko xóa phiếu muộn, kết quả là một độc giả đã trả sách nhưng trong phiếu mượn vẫn còn

    Hix, ko ai sửa giúp mình cái lỗi này à :((
    Thực ra thì việc xóa phiếu mượn là không đúng, trên chi tiết phiếu mượn bạn cho thêm 1 trường kiểu bit để kiểm tra xem quyển sách đó đã được trả hay chưa(Nếu mình không nhầm thì có thể trả sách nhiều lần cho 1 phiếu mượn), và lập phiếu trả như bình thường, khi trả sách thì set trường kia trong phiếu mượn thành true là được. Từ đấy có thể report được sách mượn trả như thế nào, chứ xóa đi rồi sau báo cáo bằng gì :(

  9. #9
    Ngày gia nhập
    04 2009
    Bài viết
    108

    Cái này bạn check e.RowInxe >-1 nhé !
    Ai đã gieo vào lòng Ai nỗi nhớ
    Để vì Ai sóng vỗ những đêm dài
    Ai có biết vì Ai-Ai không ngủ
    Trằn trọc hoài nỗi nhớ của riêng Ai.

Các đề tài tương tự

  1. lỗi index out of range exception was unhandled by user code
    Gửi bởi dongtrien trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 7
    Bài viết cuối: 12-07-2012, 11:33 AM
  2. Lỗi Index was out of range khi dùng dropdownlist với gridview
    Gửi bởi starting trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 2
    Bài viết cuối: 22-05-2012, 11:46 PM
  3. Lấy danh sách index của những cột được chọn trên datagridview ?
    Gửi bởi beginner.nguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 28-08-2011, 01:35 AM
  4. ADO.NET Lỗi Index was out of range khi lấy chỉ số dòng, cột trên datagridview
    Gửi bởi haui91 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 25-08-2011, 10:38 AM
  5. Lấy Index row sau khi sắp xếp trên datagridview
    Gửi bởi beginner.nguyen trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 25-08-2011, 08:29 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn