Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    lỗi vòng for xóa dữ liệu trùng trên datatable

    Em có vấn đề này cần hỏi các bác.
    Giả sử em có 1 DataTable ( chỉ chứa 1 cột ).Nó được e trích ra từ cột của 1 datatable khác.Trên cột đó thỉnh thoảng có dữ liệu trùng nhau.Bây giờ em đổ dữ liệu đó vào ComboBox các dòng trùng nhau đó vẫn hiện ra.Em muốn xóa các dòng có dữ liệu trùng nhau trên cột mà chưa biết làm thế nào.
    Em nghĩ ra chạy vòng for để xóa,nhưng chạy báo lỗi.Bác nào tìm chỗ sai và fix lỗi giúp em với

    Mã:
    Dim BangDuLieu As New DataTable
            ' Em da tao du lieu cho bang nay
            For i As Integer = 0 To BangDuLieu.Rows.Count - 1
                For j As Integer = 0 To BangDuLieu.Rows.Count - 1
                    If BangDuLieu.Rows(i)(0) = BangDuLieu.Rows(j)(0) Then
                        BangDuLieu.Rows.RemoveAt(i)
                    End If
                Next
            Next
    Mìn gõ nhầm dòng so sánh đó là If BangDuLieu.Rows(i)(0) = BangDuLieu.Rows(j)(0) Then
    Thực sự mình chưa tìm ra lỗi sai.Mong anh em sớm giúp mình lỗi này
    Em đang viết trên vb.net.Các bác giúp em code C# hay vb.net đều được
    Cảm ơn các bác rất nhiều

    View more random threads:


  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi billsang
    Em có vấn đề này cần hỏi các bác.
    Giả sử em có 1 DataTable ( chỉ chứa 1 cột ).Nó được e trích ra từ cột của 1 datatable khác.Trên cột đó thỉnh thoảng có dữ liệu trùng nhau.Bây giờ em đổ dữ liệu đó vào ComboBox các dòng trùng nhau đó vẫn hiện ra.Em muốn xóa các dòng có dữ liệu trùng nhau trên cột mà chưa biết làm thế nào.
    Em nghĩ ra chạy vòng for để xóa,nhưng chạy báo lỗi.Bác nào tìm chỗ sai và fix lỗi giúp em với

    Mã:
    Dim BangDuLieu As New DataTable
            ' Em da tao du lieu cho bang nay
            For i As Integer = 0 To BangDuLieu.Rows.Count - 1
                For j As Integer = 0 To BangDuLieu.Rows.Count - 1
                    If BangDuLieu.Rows(i)(0) = BangDuLieu.Rows(i)(0) Then
                        BangDuLieu.Rows.RemoveAt(i)
                    End If
                Next
            Next
    Em đang viết trên vb.net.Các bác giúp em code C# hay vb.net đều được
    Cảm ơn các bác rất nhiều
    Mình ko biết nữa. Mình nghĩ có lẽ đây là một lỗi sai
    BangDuLieu.Rows(i)(0) = BangDuLieu.Rows(i)(0) ' Sao lại so sánh 2 biểu thức giống nhau?

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    1 lỗi như bạn trên đã nói. mình xin góp ý thế này. khi bạn đã remove nó đi thì row.count nó phải giảm xuống 1 rồi mới chạy tiếp for. để tránh out of range

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Bạn remove đi thì Acceptchanges thì chắc là ok nhỉ[IMG]images/smilies/biggrin.png[/IMG]

  5. #5
    Cái này bác chạy 1 vòng for từ Count-1 đến 0;

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •