MS Access Tag属性 - 如何识别更新和插入操作?

时间:2016-10-02 11:52:56

标签: ms-access access-vba

我尝试在MS Access表单上创建添加,更新,删除操作。我在互联网上找到了这个代码,其中插入和更新发生在同一个按钮上。我没有得到下面一行中正在发生的事情以及它如何识别它是用于更新还是插入。

没有得到以下行:= Me.txtid.Tag& “”=“”

请在下面找到符合要求的完美代码。

'当我们点击按钮添加时,有两个选项

'1. for insert
'2. for update

If Me.txtid.Tag & "" = "" Then
    ' this is for insert new
    ' add data in table

CurrentDb.Execute "insert into student(stdid,stdname,gender,phone,address)" & _
    " values(" & Me.txtid & ",' " & Me.txtname & " ',' " & Me.cmbgender & " ','" & _
     Me.txtphone & "', '" & Me.txtaddress & "')"
 'refresh data in list on form
subform_student.Form.Requery

否则

CurrentDb.Execute "UPDATE student " & _
    " set stdid = " & Me.txtid & _
    ", stdname = '" & Me.txtname & "' " & _
    ", gender = '" & Me.cmbgender & " ' " & _
    ", phone = ' " & Me.txtphone & " ' " & _
    ", address = ' " & Me.txtphone & " ' " & _
    " WHERE stdid = " & Me.txtid.Tag

结束如果

2 个答案:

答案 0 :(得分:4)

.Tag property是VBA / VB6中每个表单和控件对象的通用字符串属性。它是开发人员提供放置东西的地方。支持他们的应用程序的运作。

您从中复制样本的原始代码必须在加载记录时向Me.txtid.Tag写入一个值(例如,可能以Current事件的形式)以指示是否记录是现有记录或新记录(空="新",非空="现有")。这条线

If Me.txtid.Tag & "" = "" Then

只需检查.Tag属性是否为空,然后相应地执行INSERT或UPDATE。

顺便说一下,重新:

  

以下代码根据要求完美运作

不,它没有。尝试添加[stdname]为Tam O'Shanter的记录并亲自查看。您应该放弃动态SQL 并使用

之一
  • 一种约束形式(如古斯塔夫建议的那样),
  • 参数化查询或
  • 记录集更新。

答案 1 :(得分:3)

忘记/删除所有这些代码并将表单绑定到表格Student,以使这一切自动发生。

如果您不熟悉绑定表单,请浏览"从Microsoft Access开始的教程"等等。