2013-07-17 44 views
0

我想要一个命令按钮将数据插入到一个新表中,并同时选择一条记录并进行更新。我将在下面粘贴我的代码并尝试解释我的问题。MS访问:FROM子句中的语法错误

CurrentDb.Execute " INSERT INTO Crew " _ 
    & "(CrewName,KitNumber,ActionDate,ReturnDate) VALUES " _ 
    & "('" & Me.AssignCrew & "', '" & Me.AssignKit & "','" & Me.AssignDate & "','');" 
Crew.Form.Requery 

strSQL = "SELECT * FROM Info 'WHERE InvKitNumber = '" & Me.AssignKit & "'" 
Set myR = db.OpenRecordset(strSQL) 
myR.Edit 
myR!Available = False 
myR.Update 
Set myR = Nothing 

Info.Form.Requery 

AssignKit = "" 
AssignKit.SetFocus 

因此,一切工作正常,插入。但是当它过去了,我得到语法错误,调试器强调“Set mrR = db.OpenRecordset(strSQL)”。我愚弄了一些东西,但后来我遇到了不同的问题。基本上,我只是试图取消选中“信息”中未绑定文本(AssignKit)与“InvKitNumber”中的相同数字匹配的复选框。这是解决这个问题的正确方法吗?我已经尝试使用UPDATE代码的一行,但不能完全弄清楚或者由于“太少的参数”。由于

+0

您的表格和表格是否共用同一个名称?信息? – dennythecoder

+0

是的,他们这样做。虽然我从来没有遇到过问题。他们需要改变吗? – Patrick

+0

只是澄清.... – dennythecoder

回答

1

如果InvKitNumber真的是一个号码,然后你strSQL应该是

strSQL = "SELECT * FROM Info WHERE InvKitNumber = " & Me.AssignKit 
+0

@ shareef谢谢我改变了它。但现在我得到一个错误,“参数太少:期望1”,​​调试器高亮显示该行下的“Set myR = db.OpenRecordset(strSQL)” – Patrick

+0

在声明后立即放置一个“Debug.Print strSQL” 'strSQL'并发布输出。输出显示在你的'即时窗口'('Ctrl + G'来打开窗口) – ashareef

+0

这是在strSQL =“SELECT ...”之后的右边SELECT * FROM Info WHERE InvKitNumber = 776002' – Patrick

0

我碰巧有同样的问题。我测试了所有的解决方案,并决定改变可能发挥的一切。我将查询减少到Select * From Index,并且我仍然被错误阻止。

你可能不相信,但我最终意识到这是桌子的名字!是的,这个表的名字是索引当我丢掉e并将其更改为Indx一切工作顺利!是索引 Access的保留字?我不知道,如果我在第一次给表格命名时没有产生错误,我会感到惊讶。

由于您的表名称是INFO并且它是一个常见词汇,所以我认为您应该更改表格的名称并使用其他名称测试相同的查询,因为Access似乎要保留许多单词!

+1

是的,'INDEX'是Access SQL中的[保留字](http://support.microsoft.com/kb/248738)。 'SELECT * FROM [Index]'可能会工作得很好。 (但是,'INFO'不是保留字。) –