我在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
答案 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有不同的场景。