作者:浪漫的没天份 | 来源:互联网 | 2023-05-28 21:50
我将表单上未绑定文本框中的七个值拉入变量.五个变量是字符串类型,两个是double.然后我使用sql将数据附加到一个表使用where语句和一个全局变量,该变量包含我从另一个表中使用的外键,因为我不确定如何使用opentogs与browseto ...
Option Compare Database
Private Sub Form_Load()
Dim rowN, rowR, mat, crew, perCom As String
Dim budEst, curBud As Double
End Sub
Private Sub btnCapSubmit_Click()
rowN = Me.CAP_ROW_N
rowR = Me.CAP_ROW_R
mat = Me.CAP_MAT
crew = Me.CAP_CREW
perCom = Me.CAP_PER
budEst = Me.CAP_BUD_EST
curBud = Me.CAP_BUD_CUR
Dim appendIt As String
appendIt = "INSERT INTO CAPITAL " & _
"([CAPITAL].[CAP_ROW_N], CAPITAL.[CAP_ROW_R], [CAPITAL].[CAP_MAT], [CAPITAL].[CAP_CREW], [CAPITAL].[CAP_PER], [CAPITAL].[CAP_BUD_EST], [CAPITAL].[CAP_BUD_CUR]) " & _
"VALUES ('" & rowN & "','" & rowR & "','" & mat & "','" & crew & "','" & perCom & "','" & budEst & "','" & curBud & "') WHERE [PRO_ID] = '" & gblFind & "';"
Debug.Print appendIt
DoCmd.RunSQL appendIt
DoCmd.BrowseTo acBrowseToForm, "frmSearchEdit", "NavForm.NavigationSubform", , , acFormEdit
End Sub
Access抱怨错误#3067,"查询输入必须包含至少一个表或查询."
我不知道我在做什么.我尝试使用debug.print,但没有看到任何东西.然后我一整天都在研究这个数据库,所以我可以忽略一些非常简单的事情.
PS我也尝试用Me.CAP_ROW_N(文本框名称)替换变量,但没有骰子.
1> mwolfe02..:
目前还不清楚你在这里要做什么,但INSERT INTO ... VALUES ()
声明中没有一个WHERE
条款.错误3067是"查询输入必须至少包含一个表或查询".您可能会看到此错误,因为您已包含WHERE子句但未从表中选择现有值.
试试这个:
appendIt = "INSERT INTO CAPITAL " & _
"([CAPITAL].[CAP_ROW_N], CAPITAL.[CAP_ROW_R], [CAPITAL].[CAP_MAT], [CAPITAL].[CAP_CREW], [CAPITAL].[CAP_PER], [CAPITAL].[CAP_BUD_EST], [CAPITAL].[CAP_BUD_CUR]) " & _
"VALUES ('" & rowN & "','" & rowR & "','" & mat & "','" & crew & "','" & perCom & "','" & budEst & "','" & curBud & "');"
这里还有其他几个问题.我会列出它们并让你获得更多指导:
您应该使用.Execute
DAO方法,而不是DoCmd.RunSQL
因为它允许更好的错误处理,尤其是与dbFailOnError
选项一起使用时.
在未转义的输入上使用单引号最终会遇到麻烦.例如,WHERE LastName = 'O'Malley'
您似乎将所有七个值都作为文本处理,方法是将它们包装在引号中,即使您说两个值是数字(双精度).数字值不会获得引号.
你会使用`UPDATE`语句,而不是`INSERT INTO`.