2013-07-17 55 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'不是保留字。) –