我撞墙了,我完全茫然。
所以我在MS Access中有一个表格。在其中,我有一个文本框和一个按钮。当我在文本框中输入数字,然后单击按钮时,它将打开一个公共子目录,然后运行一些查询,更新数据库,显示文本框,然后清除文本框。这一切都完美地工作。
我的问题是尝试通过在文本框中单击Enter来执行完全相同的操作。最奇怪的是,在我打开表格后,代码可以正常工作,但是所有后续尝试都会产生以下错误,直到我关闭表格并重新打开它:
Data type mismatch in criteria expression.
为了我的一生,我无法弄清楚为什么它第一次做到了我想要的,然后分崩离析。
这里是完整的VBA代码供参考:
Option Compare Database
Public Sub Cut_Update()
On Error GoTo Cut_Update_Err
DoCmd.OpenQuery "UPDATE_WIP_Cut", acViewNormal, acEdit
DoCmd.OpenQuery "UPDATE_LastRun", acViewNormal, acEdit
MsgBox "Database Updated"
[Forms]![Portal_02_Cut]![WO_Num].Value = ""
Cut_Update_Exit:
Exit Sub
Cut_Update_Err:
MsgBox Error$
Resume Cut_Update_Exit
End Sub
'------------------------------------------------------------
' Return in Textbox
'
'------------------------------------------------------------
Private Sub WO_Num_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Call Cut_Update
Me.Refresh
End If
End Sub
'------------------------------------------------------------
' Command2_Click
'
'------------------------------------------------------------
Private Sub Command2_Click()
Call Cut_Update
End Sub
我唯一的猜测是更新正在尝试使用非数字值进行更新。让我知道
Option Compare Database
Public Sub Cut_Update()
On Error GoTo Cut_Update_Err
'' Make sure it is numeric
If IsNumeric([WO_Num].Value) Then
DoCmd.OpenQuery "UPDATE_WIP_Cut", acViewNormal, acEdit
DoCmd.OpenQuery "UPDATE_LastRun", acViewNormal, acEdit
MsgBox "Database Updated"
[Forms]![Portal_02_Cut]![WO_Num].Value = ""
End If
Cut_Update_Exit:
Exit Sub
Cut_Update_Err:
MsgBox Error$
Resume Cut_Update_Exit
End Sub
'------------------------------------------------------------ ' Return in Textbox '
'------------------------------------------------------------
Private Sub WO_Num_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 13 Then
Call Cut_Update
Me.Refresh
End If
End Sub
'------------------------------------------------------------ ' Command2_Click '
'------------------------------------------------------------
Private Sub Command2_Click()
Call Cut_Update
End Sub
您在两次调用之间的唯一操作是:
[Forms]![Portal_02_Cut]![WO_Num].Value = ""
因此,请尝试:
[Forms]![Portal_02_Cut]![WO_Num].Text = ""
或:
[Forms]![Portal_02_Cut]![WO_Num].Value = Null