如何知道何时有重复数据?

时间:2013-11-19 21:46:12

标签: .net sql-server database vb.net

我在SQL Server上有一个主数据库和另外两列的数据库,一个是日期,另一个是时间。

日期列可以多次重复其值,但时间不会重复。

我需要我的Visual Studio Windows窗体应用程序来读取数据库并告诉我何时重复Date值,然后让我在多个Times之间进行选择。我该怎么做?

对于我使用此代码的组合框填充,两者都是相同的

Public Sub FillCombo(ByVal ComboBox As ComboBox, ByVal sql As String)
    conectarbase()
    Try
        nConexion.Open()
        Dim cmd As New SqlCommand(sql, nConexion)

        Dim da As New SqlDataAdapter(cmd)

        Dim ds As New DataSet 
        da.Fill(ds) 
        ComboBox.DataSource = ds.Tables(0)
        ComboBox.DisplayMember = ds.Tables(0).Columns(0).Caption.ToString

    Catch ex As Exception
        MessageBox.Show(ex.Message.ToString, "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error)
    Finally
        If nConexion.State = ConnectionState.Open Then
            nConexion.Close()
        End If
    End Try
End Sub

向我显示此错误:

  

不允许更改'ConnectionString'属性。连接的当前状态是打开的。

在我使用的GUI中,对于第一个组合:

FillCombo(ComboBox1, "SELECT dateCol From MyTable where User='" + TextBox.Text + "' Group By dateCol ")

第二个:

Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    FillCombo(ComboBox2, "SELECT TimeCol from MyTable where DateCol='" + ComboBox1.SelectedText + "'")
End Sub

2 个答案:

答案 0 :(得分:2)

select date, time, count(*)
from table
group by date, time

count应始终为1(如果时间是唯一的),但你永远不会知道......

答案 1 :(得分:0)

您可以创建一个包含2个列表框(或网格视图)的应用程序。第一个列表框将从aquery中填充,如下所示:

SELECT dateCol, Count(*) From myTable Group By dateCol Having Count(*)>1

这将显示包含2个或更多重复日期的行及其在数据库中的编号。

点击其中任何一个日期,使用

等查询填充第二个列表框
SELECT key, dateCol, TimeCol where dateCol = SelectedDateFromListbox1

第二个列表框中的每一行都会显示完整的记录信息。

当然,GUI有不同的场景。