Вставить в таблицу из базы данных доступа к форме - PullRequest
1 голос
/ 06 мая 2019

Я пытался заставить свою базу данных добавлять строки в электронную таблицу инвентаризации на основе входных данных из формы.Я пробовал несколько разных методов (перечислены ниже).Любая помощь по форматированию одного из них, чтобы они работали, будет принята с благодарностью.Я не знаю, есть ли у меня проблемы с синтаксисом или я подхожу к этому совершенно неправильно, но я в основном использовал код из видео и ответы на вопросы здесь, объясняющие, как решить эту проблему, поэтому досадно, что я не смогзаставить их работать.

Я попытался настроить функцию, которую я могу вызывать с помощью макроса, извлекая значения из формы

Function Add_Record()
DoCmd.RunSQL "INSERT INTO Inventory (Kit Name, Exp Date, Study) VALUES (' " & [Forms]![Add Kits]![Kit name select] & " ', ' " & [Forms]![Add Kits]![Expiration Date Input] & " ', ' " & [Forms]![Add Kits]![Study Select] & " ');"

End Function

Я пробовал это с различными изменениями синтаксиса (я не уверен, еслидолжно быть _ вместо пробелов или нет), но пока ничего не получилось.

Далее я попытался настроить кнопку в самой форме, чтобы она содержала все в одном месте.

Private Sub Add_Record_Click()
CurrentDb.Execute "INSERT INTO Inventory (Kit Name, Exp Date, Study) Values (' " & Me.Kit_name_select & "', ' " & Me.Expiration_Date_Input & "', ' " & Me.Study_Select & "')"
End Sub

Я также пробовал этот метод с


    strSQL = "INSERT INTO Inventory (Kit Name, Exp Date, Study)
VALUES (
    Forms!Add Kits!Kit_name_select.Value,
    Forms!Add Kits!Expiration_Date_Input.Value,Forms!Add Kits!Study_Select.Value
)"
    DoCmd.RunSQL strSQL

Переключение формы! X! X формат со мной.с, но теоретически это не должно быть проблемой?Я надеюсь, что возникнет какая-то проблема с синтаксисом или произойдут серьезные изменения.Это усугубляет, однако, потому что все эти стратегии должны делать то, что я иду в соответствии с тем, что я прочитал.

Любая помощь очень ценится!Также объяснения хороши, поскольку я, очевидно, довольно новичок в этом, но хотел бы узнать!

Опять же, это, мы надеемся, приведет к добавлению строки в таблицу на основе входных данных из формы - Study (строка со списком)), Имя набора (поле со списком Строка) и Срок действия (текстовое поле Дата).Также, если есть какой-либо способ сделать это циклом на основе другого ввода (количества), это также будет полезно.Спасибо!

1 Ответ

0 голосов
/ 06 мая 2019

Метод Execute использует # разделитель вместо апострофа для поля даты.Убрать пробел после апострофа.

Имена объектов с пробелами или специальными символами или зарезервированные разделители слов [].Не рекомендуется использовать пробелы и знаки препинания / специальные символы в соглашении об именах.

Можно использовать цикл For Next для многократного ввода записей в зависимости от количества.

Private Sub Add_Record_Click()
Dim x As Integer
For x = 1 to Me.Quantity
    CurrentDb.Execute "INSERT INTO Inventory ([Kit Name], [Exp Date], Study) " & _
             "Values ('" & Me.[Kit name select] & "', #" & Me.[Expiration Date Input] & "#, '" & Me.[Study Select] & "')"
Next
End Sub
...