我有以下数据库(注意:日期采用dd-mm-yyyy格式)
autoID name initialdate finaldate
1 john 01-01-2016 05-01-2016
2 michael 01-02-2016 05-02-2016
3 andrew 01-01-2016 10-01-2016
......
用户将通过简单的HTML表单插入新用户,例如
4 michael 01-03-2016 02-03-2016
返回OK,因为日期不重叠。
但是,如果他们引入这两个示例中的一个,我需要一个错误消息显示并且不添加记录:
4 michael 04-02-2016 10-02-2016 (note it starts on 04-02, which overlaps a record that already exists
或
4 michael 20-01-2016 02-02-2016 (same)
或
4 michael 02-02-2016 04-02-2016
或
4 michael 01-01-2016 20-02-2016
等等。
如何使用ASP.net和.mdb(访问)数据库进行操作?
答案 0 :(得分:0)
我设法找到了你的许多合乎逻辑的帮助。 那就是我要来的:
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Provider="Microsoft.Jet.OLEDB.4.0"
Conn.Open Server.MapPath("My_DB.mdb")
Set reg = Server.CreateObject("ADODB.Recordset")
checkit = "SELECT COUNT (*) as cnt FROM dados WHERE name = '" & TXTName & "' AND (dateinit <= " & TXTdateend & " AND " & TXTdateinit & " <= dateend)"
reg.Open checkit, Conn
if check <> 0 then
'code to use if dates overlap'
else
'code if dont'
end if
我不知道这样做是否正确,但它确实是我真正需要的。谢谢!
答案 1 :(得分:-1)
我会运行查询以检查相关记录。假设您的新记录被输入到名为txtName,txtInitialDate和txtFinalDate的文本框中。所以,你的查询看起来像这样:
SELECT *
FROM MyTable
WHERE Name = '" & Me.txtName & "'
AND (InitialDate BETWEEN #" & Me.txtInitialDate & "# AND #" & Me.txtFinalDate & "#
OR FinalDate BETWEEN #" & Me.txtInitialDate & "# AND #" & Me.txtFinalDate & "#)
这应该为您提供名称匹配的所有记录,并且输入的任何一个日期都在InitialDate和FinalDate之间。如果您输入的日期在这两个日期之间,则表示您有重叠。
现在,您所要做的就是计算此查询中的行数。如果RowCount&gt; 0,这是一个重叠的记录。如果RowCount = 0,则没有重叠。