2013-07-17 5 views
0

Я пытаюсь ввести командную кнопку вставить данные в новую таблицу и в то же время выбрать запись и обновить ее. Я вставлю свой код ниже и попытаюсь объяснить мою проблему.MS ACCESS: Ошибка синтаксиса в FROM 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

@a shareef Спасибо, я изменил его. Но теперь я получаю сообщение об ошибке «Слишком мало параметров: ожидаемый 1», а отладчик подсвечивает строку прямо под этим, «Установить 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 все получилось довольно гладко! Есть Индекс зарезервированное слово для доступа? Я не знаю, и я был бы поражен, если бы не возникла ошибка, когда я назвал таблицу в первую очередь.

Как имя вашей таблицы является INFO, и это распространенное слово, я думаю, вы должны изменить имя таблицы и протестировать тот же запрос с другими именами, поскольку Access, похоже, хочет зарезервировать много слов!

+1

Да, 'INDEX' является [зарезервированным словом] (http://support.microsoft.com/kb/248738) в Access SQL. 'SELECT * FROM [Index]' вероятно, сработал бы просто отлично. (Тем не менее, 'INFO' не является зарезервированным словом.) –

Смежные вопросы