检查记录是否存在

时间:2016-12-28 17:58:39

标签: asp.net database ms-access

我有以下数据库(注意:日期采用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(访问)数据库进行操作?

2 个答案:

答案 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,则没有重叠。