我不是程序员,但我正试图获得一个小型数据收集数据库。我需要根据输入找到记录。我有两个标准,我希望它找到,如果两者都没有找到,它应该创建一个新的记录(填写两个字段,以防止重复对)。第一个标准是它需要寻找一个日期。我已经知道了一个,这里是代码。
<Button text="polygon" style="background-color: magenta; border-width:2; border-color: red; clip-path: polygon(20% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50% 70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);" row="3" />
像魅力一样工作。现在,我尝试添加第二个标准。第二个标准来自列表框,无论是白天还是黑夜。然后,它应该在我的Data上的列表框中搜索我的数据字段中的相同条件!形式。
Dim Date1 As String
Date1 = Text6.Value
DoCmd.OpenForm "Data", , , "Data![ShiftDate] = #" & Date1 & "#"
msgbox只是为了验证它是在白天或晚上拉出正确的单词。一切都很好,但不是在正确的日期拉一个记录,而是在正确的转变,我得到空白的记录。我尝试取出where语句的前半部分来隔离移位部分,但仍然无法让它找到记录。我不知道我做错了什么。
答案 0 :(得分:0)
好像你已经有了表格。
我建议您尝试这样做: 向表单添加一个带有单击事件的按钮,并将以下代码添加到click事件中:
dim rs as dao.recordset
set rs = currentdb.openrecordset ("SELECT * FROM [yourtable] WHERE ('ShiftDate' = '" & [yourParameter] & "' AND 'Shift' = '" & [your2ndParameter] & "')")
if rs.eof then
' here NO record is found
currentdb.execute ("INSERT INTO [yourtable] ('ShiftDate', 'Shift') VALUES ('" & [yourParameter] & "', '" & [your2ndParameter] & "')")
else
' here a record is found
endif
由于您的ShiftDate是一个日期,您需要将日期转换为SQL日期格式,如下所示:
Function SQLDatum(Datumx) As String
If IsDate(Datumx) Then
SQLDatum = Format(CDate(Datumx), "\#yyyy-mm-dd\#", vbMonday, _
vbFirstFourDays)
Else
SQLDatum = ""
End If
End Function
答案 1 :(得分:0)
在你的命令中
DoCmd.OpenForm "Data", , , "Data![ShiftDate] = #" & Date1 & "# AND ...
您打开表单Data
,但同时通过引用使用Data![ShiftDate]
打开的表单来指定过滤器。这很奇怪,因为必须将过滤器应用于数据源。我只想写
DoCmd.OpenForm "Data", , , "ShiftDate= #" & Date1 & "# AND Shift= '" & Shift1 & "'"
引用数据源的表格列(=
左侧)。
请注意,列Shift
必须是文本列。如果是某个数字,则必须删除单引号并将其传递给相应的ID。