允许在MS Access Form的文本框中添加数据但不允许删除

问题描述

我不确定是否可以这样做,但是我希望能够限制任何人更改/删除文本框中的当前文本,但允许他们添加吗?这样就不会意外删除数据,但是如果出现问题,用户可以添加信息/说明。

我尝试使用KeyDown和KeyPress事件来执行此操作(如下所示):

<div class="form-row">
    <div class="medical-question-btns btn-group btn-group-toggle btn-group-vertical"
        data-toggle="buttons">


        <!-- ============= LABEL ============= -->


        <label class="btn btn-primary my-2 pl-5" id="label_q18_a1">

            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>

            <input type="checkBox" name="q18_a1" id="q18_a1"
                autocomplete="off">
            <p>Any condition where sex is not advised</p>
        </label>

        

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a2">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a2" id="q18_a2"
                autocomplete="off">
            <p>Kidney problems including having had a kidney transplant</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a3">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a3" id="q18_a3"
                autocomplete="off">
            <p>Liver problems</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a4">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a4" id="q18_a4"
                autocomplete="off">
            <p>Neurological problems like multiple sclerosis or motor neuron
                disease</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a5">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a5" id="q18_a5"
                autocomplete="off">
            <p>HIV</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a6">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a6" id="q18_a6"
                autocomplete="off">
            <p>Spinal injury or paralysis</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a7">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a7" id="q18_a7"
                autocomplete="off">
            <p>PrevIoUs surgery on your prostate or pelvis</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a8">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a8" id="q18_a8"
                autocomplete="off">
            <p>Radiation therapy to your pelvis</p>
        </label>

        <label class="btn btn-primary my-2 pl-5" id="label_q18_a9">
            <svg class="check-Box-outline-blank icon-left icon-circle"
                id="label_q18_a1" xmlns="http://www.w3.org/2000/svg"
                width="100%" viewBox="0 0 24 24">
                <path
                    d="M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z" />
            </svg>

            <svg class="check-Box-checked icon-left icon-check-circle"
                xmlns="http://www.w3.org/2000/svg" width="100%"
                viewBox="0 0 24 24" class="bi bi-check-circle-fill">
                <path
                    d="M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z" />
            </svg>
            <input type="checkBox" name="q18_a9" id="q18_a9"
                autocomplete="off">
            <p>None apply</p>
        </label>

        <!-- ============= LABEL ============= -->
    </div>
</div>

但是由于它不会在键入每个字符之后触发,所以它不起作用(即.OldValue =“ Hello”和.Value =“ Good Bye”-不正确!)

我真的在寻找一个有创意的想法,因为我认为使用事件是行不通的。

解决方法

在控件的“获取焦点”事件中,检查控件是否为空。

使用伪代码:

If Control Is Empty Then Exit
Else Set Enabled = No and Locked = Yes

应该这样做。如果要对多个控件执行此操作,只需将上面的过程设置为接受当前控件作为参数的过程,然后从事件处理程序中调用该过程。如果将其设为函数,则可以将函数调用直接放在属性表中,例如“ = LockControl(Me!CurrentControl)”。我更喜欢使用事件处理程序。

这是我检查空控件的方法:

Public Function IsEmptyControl(ctl As Variant) As Boolean
 
' ****************************************************************************
' PURPOSE: Determines if control is empty,that is,either all blanks or null
'
' AUTHOR: Paul Strauss
'         Paul@PStrauss.net
'
' DATE:   December 31,2000
'
' NOTES: Returns True if control is empty
'
' CHANGE LOG:
'
' ****************************************************************************
 
On Error GoTo Err_IsEmptyControl

IsEmptyControl = IsNull(ctl) Or (Len(Trim(ctl)) = 0)

Exit_IsEmptyControl:
 
   Exit Function
 
Err_IsEmptyControl:
 
   Select Case Err.Number
 
      Case Else
 
         Call ErrHandler(Object:=CodeProject.Name,procedure:="IsEmptyControl",ErrNum:=Err.Number,ErrDesc:=Err.Description)

         Resume Exit_IsEmptyControl
 
   End Select

结束功能