2015-06-02 2 views
0

Как удалить дублированные записи, отображаемые в DataGridView? Когда я пытаюсь выполнить поиск записи, например, с ключевым словом «dev», DataGridView отобразит все записи с «dev» в них, строки с 1 по 15 имеют в них «dev», НО, после 15-й строки, это еще один набор записей, который точно совпадает с первой строкой до 15-й строки. Как я могу удалить их?Дублированные записи в DataGridView - закрыты


Все изображение является конфиденциальным, поэтому я подрезал его до минимального размера.

Imports System.Data.OleDb 
Imports System.IO 
Imports System.Drawing.Printing 
Public Class Form1 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
     'TODO: This line of code loads data into the 'Database1DataSet.Tasks_Of_Offices' table. You can move, or remove it, as needed. 
     Me.Tasks_Of_OfficesTableAdapter.Fill(Me.Database1DataSet.Tasks_Of_Offices) 
     'TODO: This line of code loads data into the 'Database1DataSet.Roadmap' table. You can move, or remove it, as needed. 
     Me.RoadmapTableAdapter.Fill(Me.Database1DataSet.Roadmap) 
     'TODO: This line of code loads data into the 'Database1DataSet.Project' table. You can move, or remove it, as needed. 
     Me.ProjectTableAdapter.Fill(Me.Database1DataSet.Project) 
     'TODO: This line of code loads data into the 'Database1DataSet.OPR' table. You can move, or remove it, as needed. 
     Me.OPRTableAdapter.Fill(Me.Database1DataSet.OPR) 
     Me.WindowState = FormWindowState.Maximized 
    End Sub 
    Private Sub btnserch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnserch.Click 
     Search_Record() 
    End Sub 
    Private Sub Search_Record() 
     Dim conn As New OleDbConnection 
     Dim cmd As New OleDbCommand 
     Dim da As New OleDbDataAdapter 
     Dim dt As New DataTable 
     Dim ds As New DataSet 
     Dim sSQL As String = String.Empty 
     'try catch block is used to catch the error 

     Try 
      'get connection string declared in the Module1.vb and assign it to conn variable 
      conn = New OleDbConnection(Get_Constring) 
      conn.Open() 
      cmd.Connection = conn 
      cmd.CommandType = CommandType.Text 
      sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Name like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Manager like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Office like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      sSQL = "SELECT ContactNr, Researcher FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where ContactNr like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Researcher like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Initiatives like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

      Me.projectdg.DataSource = dt 
      If dt.Rows.Count = 0 Then 
       MsgBox("No Record Found") 
      End If 

     Catch ex As Exception 
      MsgBox(ErrorToString) 
     Finally 
      conn.Close() 
     End Try 
    End Sub 

ответ

0

Итак, ожидая ответа, волосы стали белыми. Я уже нашел ответ на свой вопрос. поэтому я добавить код в этой части

sSQL = "SELECT ID, Name, Manager, Office, ContactNr, Researcher, Initiatives FROM [Project]" 
      If Me.cbSearch.Text = "Project" Then 
       sSQL = sSQL & "where Name like '%" & Me.sbox.Text & "%'" 
       projectdg.Visible = True 
       oprdg.Visible = False 
       rmdg.Visible = False 
       toodg.Visible = False 
      Else 
       MsgBox("No Record Found") 
      End If 
      cmd.CommandText = sSQL 
      da.SelectCommand = cmd 
      da.Fill(dt) 

который является RemoveDuplicateRows (дт, «nameofcolumn») и добавили еще один код, который этот,

Public Function RemoveDuplicateRows(ByVal dTable As DataTable, ByVal colName As String) As DataTable 
     Dim hTable As New Hashtable() 
     Dim duplicateList As New ArrayList() 
     For Each dtRow As DataRow In dTable.Rows 
      If hTable.Contains(dtRow(colName)) Then 
       duplicateList.Add(dtRow) 
      Else 
       hTable.Add(dtRow(colName), String.Empty) 
      End If 
     Next 
     For Each dtRow As DataRow In duplicateList 
      dTable.Rows.Remove(dtRow) 
     Next 
     Return dTable 
    End Function 
Смежные вопросы