• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Cách so sánh 2 datatable trong vb.net

Các mẹo vặt linh tinh không thuộc các nhóm trên

Điều hành viên: tungcan5diop, QUANITGROBEST

ngocvinh
Guru
Guru
Bài viết: 690
Ngày tham gia: T.Tư 23/04/2008 8:14 am
Đến từ: Biên Hòa Đồng Nai
Been thanked: 111 time

Cách so sánh 2 datatable trong vb.net

Gửi bàigửi bởi ngocvinh » T.Ba 06/04/2010 10:28 am

Thủ thuật: Cách so sánh 2 datatable trong vb.net
Tác giả: ngocvinh
Mô tả: Cách so sánh 2 datatable trong vb.net


Mở data fill vào 2 table bằng Opendialog
[vbnet] Dim con, con1 As OleDb.OleDbConnection

Dim cmd2 As New OleDb.OleDbCommand()
Dim cmd1 As New OleDb.OleDbCommand()
Dim cmd3 As New OleDb.OleDbCommand()

Dim TB1 As New DataTable
Dim TB2 As New DataTable
Dim TB3 As New DataTable

Dim ds1 As New DataSet
Dim ds2 As New DataSet
Dim ds3 As New DataSet


Dim Dts As New DataSet
Dim da1 As New OleDbDataAdapter()
Dim da2 As New OleDbDataAdapter()
Dim da3 As New OleDbDataAdapter()

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try

TB2.Clear()
OpenFileDialog2.Filter = "Access (*.mdb)|*.mdb"
OpenFileDialog2.ShowDialog()
TextBox2.Text = OpenFileDialog2.FileName
Dim str1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" & TextBox2.Text & "';Persist Security Info=False"
con1 = New OleDb.OleDbConnection(str1)
con1.Open()
cmd2.Connection = con1
cmd2.CommandType = CommandType.Text
' cmd.CommandText = "SELECT * From Nhanvien "
da2.SelectCommand = cmd2
da2.Fill(TB2)


Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
TB1.Clear()
OpenFileDialog1.Filter = "Access (*.mdb)|*.mdb"
OpenFileDialog1.ShowDialog()
TextBox1.Text = OpenFileDialog1.FileName

' ----- Open the source file using XPath.
Dim str As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = '" & TextBox1.Text & "';Persist Security Info=False"
con = New OleDb.OleDbConnection(str)
con.Open()
cmd1.Connection = con
cmd1.CommandType = CommandType.Text
cmd1.CommandText = "SELECT * From Nhanvien"
da1.SelectCommand = cmd1
da1.Fill(TB1)
da1.Fill(ds1)
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

[/code]
So sánh 2 DataTable TB1 và TB2 ,TB3 copy từ TB1 , xóa những dòng trùng nhau từ TB3 còn lại là những dòng khác nhau
[code] Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Try
If TB1.Rows.Count < 2 Or TB2.Rows.Count < 2 Then
MsgBox("Bạn chưa chọn đủ 2 File cần so sánh ")
Exit Sub
End If
TB3.Clear()
TB3 = TB1.Copy
For i As Integer = 0 To TB1.Rows.Count - 1 'go all record TB1
For j As Integer = 0 To TB2.Rows.Count - 1 'go all record TB2
If TB1.Rows(i)("MaNV") = TB2.Rows(j)("MaNV")
TB3.Rows(i).Delete()
End If
Next j
Next i


gridview1.datasource = TB3



Catch ex As Exception
MsgBox(ex.Message)
End Try

End Sub
[/vbnet]


.NET

huydungktv
Bài viết: 8
Ngày tham gia: T.Tư 01/12/2010 8:26 pm

Re: Cách so sánh 2 datatable trong vb.net

Gửi bàigửi bởi huydungktv » T.Tư 01/12/2010 11:55 pm

Vậy bạn có cách nào cộng dồn hai TB1 và TB2 vào TB3 không
Tức là TB3 chứa tất cả các dòng của TB1 và TB2 ấy

Hình đại diện của người dùng
lungocqua
Guru
Guru
Bài viết: 1225
Ngày tham gia: T.Ba 18/08/2009 11:51 am
Đến từ: Phú Hữu - Nhơn Trạch - Đồng Nai
Been thanked: 5 time
Liên hệ:

Re: Cách so sánh 2 datatable trong vb.net

Gửi bàigửi bởi lungocqua » T.Năm 02/12/2010 7:09 am

Bài này thì chủ topic nên chuyển qua Box Bài viết hướng dẫn
Muốn dồn mấy bảng vào nhau thì cứ dùng lệnh Merge là được. Merge nghĩa là hợp nhất. Cái này chỉ dồn lại chứ không có kiểm tra trùng chi hết! :D
  1.         TB3.Merge(TB1)
  2.         TB3.Merge(TB2)
  3.         DataGridView1.DataSource = TB3
Ta đã trở lại và quên hết tất cả! :D

ngocvinh
Guru
Guru
Bài viết: 690
Ngày tham gia: T.Tư 23/04/2008 8:14 am
Đến từ: Biên Hòa Đồng Nai
Been thanked: 111 time

Re: Cách so sánh 2 datatable trong vb.net

Gửi bàigửi bởi ngocvinh » CN 16/06/2013 8:01 pm

Dồn 2 bảng vào 1 bảng có so sánh data 2 cột.
Tập tin đính kèm
WindowsApplication1.rar
(48.76 KiB) Đã tải 169 lần
.NET

ngocvinh
Guru
Guru
Bài viết: 690
Ngày tham gia: T.Tư 23/04/2008 8:14 am
Đến từ: Biên Hòa Đồng Nai
Been thanked: 111 time

Re: Cách so sánh 2 datatable trong vb.net

Gửi bàigửi bởi ngocvinh » CN 16/06/2013 10:21 pm

lungocqua đã viết:Bài này thì chủ topic nên chuyển qua Box Bài viết hướng dẫn
Muốn dồn mấy bảng vào nhau thì cứ dùng lệnh Merge là được. Merge nghĩa là hợp nhất. Cái này chỉ dồn lại chứ không có kiểm tra trùng chi hết! :D
  1.         TB3.Merge(TB1)
  2.         TB3.Merge(TB2)
  3.         DataGridView1.DataSource = TB3

Trộn 2 bảng có liên kết thì làm ntn: Chọn 2 cột có quan hệ Set primary key cho cột đó, sau đó trộn lại OK.
  1.   Dim keyCol(1) As DataColumn
  2.         ' Set primary key column.
  3.         keyCol(0) = TB1.Columns(0)
  4.         TB1.PrimaryKey = keyCol
  5.  
  6.         ' Set primary key column.
  7.         keyCol(0) = TB2.Columns(0)
  8.         TB2.PrimaryKey = keyCol
  9.         TB3.Merge(TB2)
  10.         TB3.Merge(TB1)
Tập tin đính kèm
Datatable.rar
(48.77 KiB) Đã tải 175 lần
.NET


Quay về “[.NET] Mẹo vặt khác”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.2 khách