Код MS-Access VBA для удаления одной строки на основе входных данных поля со списком - PullRequest
0 голосов
/ 03 мая 2019

Я относительно новичок в доступе и в прошлом занимался лишь небольшим количеством кодирования, поэтому, хотя метод проб и ошибок помог мне, я все еще очень застрял.Я выяснил, как создать каскадную форму, относящуюся к инвентарю (исследовательским наборам), но хотел бы написать код для функции, которая будет удалять только ОДИН ряд на основе информации о поле со списком (я бы сделал запрос на удаление, но он удалил бы всенаборы с той же датой истечения срока годности).Моя форма - «Изучить запрос к комплекту», первое поле таблицы «Инвентаризация» - это «имя комплекта» из поля со списком «Выбор имени комплекта», тогда есть еще два, дата исследования и срок годности.Вот что доставляет мне проблемы:

Function Delete_Record()

DoCmd.RunSQL "DELETE * FROM Inventory
WHERE (((Inventory.[Kit Name]) = [Forms]![Study to kit Query]![Kit name select]) And ((Inventory.[Exp Date]) = [Forms]![Study to kit Query]![Expiration select]) And ((Inventory.Study) = [Forms]![Study to kit Query]![Study Select]))
LIMIT 1;"

РЕДАКТИРОВАТЬ: я смог заставить его отвечать на команды критериев, но часть Limit по-прежнему вызывает синтаксические ошибки.

Если кто-то может помочь исправить это или дать мне направление к чему-то, что будет использовать эти три критерия, извлеченные из выпадающих списков в форме, и удалить одну запись в таблице, я буду в восторге.Спасибо!

1 Ответ

1 голос
/ 03 мая 2019

Доступ не поддерживает LIMIT.
Вместо этого вы можете использовать TOP следующим образом:

DELETE FROM (SELECT TOP 1 * FROM Inventory
WHERE (((Inventory.[Kit Name]) = [Forms]![Study to kit Query]![Kit name select]) 
And ((Inventory.[Exp Date]) = [Forms]![Study to kit Query]![Expiration select]) 
And ((Inventory.Study) = [Forms]![Study to kit Query]![Study Select])));
...