Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将新记录添加到表单中,并使用您也可以编辑的if-else语句_Vba_Ms Access_Ms Access 2016 - Fatal编程技术网

Vba 将新记录添加到表单中,并使用您也可以编辑的if-else语句

Vba 将新记录添加到表单中,并使用您也可以编辑的if-else语句,vba,ms-access,ms-access-2016,Vba,Ms Access,Ms Access 2016,我只是猜测这是正确的VBA查询访问编码。我是C#developer,所以请容忍我。我现在有一个表和一个表单,还有一个事件过程,如果你点击表单中的框,你可以编辑特定的记录。当我点击关闭窗体按钮时,它将关闭、保存和更新。但是,现在我遇到了一个问题,我可以通过单击一个没有数据的框来添加一个新记录,但它会发送一个语法错误。我假设它是这样做的,因为我使用的VBA查询代码是要对其进行编辑,而不是添加新记录。我可以单击消息框上的X,仍然可以输入新记录。我的想法是添加一个IF-ELSE语句。我不能这样做吗?如果

我只是猜测这是正确的VBA查询访问编码。我是C#developer,所以请容忍我。我现在有一个表和一个表单,还有一个事件过程,如果你点击表单中的框,你可以编辑特定的记录。当我点击关闭窗体按钮时,它将关闭、保存和更新。但是,现在我遇到了一个问题,我可以通过单击一个没有数据的框来添加一个新记录,但它会发送一个语法错误。我假设它是这样做的,因为我使用的VBA查询代码是要对其进行编辑,而不是添加新记录。我可以单击消息框上的X,仍然可以输入新记录。我的想法是添加一个IF-ELSE语句。我不能这样做吗?如果需要编辑,我可以。还是我必须在其他地方做些改变?我还读到我可以编辑消息框说要添加新记录,点击角落里的X并继续添加新记录。这也是一个想法

If Me.CurrentRecord = "CalibrationKey" Then
DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormEdit, acDialog
Else: DoCmd.OpenForm "Calibration Detail", , , "[CalibrationKey]= " & Me.[CalibrationKey], acFormAdd, acDialog
End If
End Sub```


带或不带数据的框是表单中的字段?如果是这种情况,您的代码应该放在框(字段)的onclick事件下 使calibrationkey成为已单击框的名称

还可以按如下方式修改代码

如果不为空(CalibrationKey.value),则 DoCmd.OpenForm“Calibration Detail”、“[CalibrationKey]=”&Me.[CalibrationKey]、acFormEdit、acDialog 其他:DoCmd.OpenForm“Calibration Detail”、“[CalibrationKey]=”&Me.[CalibrationKey]、acFormAdd、acDialog 如果结束
End Sub`

如果要在添加模式下打开表单,请不要应用筛选条件。If条件没有意义。CurrentRecord是表单事件,而不是属性。是否应该改为引用字段名?例如:
如果为空([CalibrationKey]),则
。谢谢您,先生。这似乎奏效了。我学到了让数据库适应代码一段时间,然后提交以确保它不会崩溃的艰难方法