从表单访问数据库插入表

时间:2019-05-06 19:32:26

标签: sql ms-access insert inventory-management

我一直试图让我的数据库根据表单的输入将行添加到清单电子表格中。我尝试了多种不同的方法(下面列出)。格式化这些格式之一的任何帮助,使它们正常工作将不胜感激。我不知道我是否有语法问题或正在解决完全错误的问题,但是我主要是使用视频中的代码以及此处解释如何解决此问题的问题的答案,所以令人烦恼的是我没有能力让他们工作。

我尝试设置一个可以用宏调用的函数,从表单中提取值

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

和我一起切换form!X!X格式。 s,但从理论上讲这不应该成为问题吗?我希望可能正在发生一些语法问题,或者我需要修复一个很大的变化。但是,这使情况更加恶化,因为所有这些策略都应该按照我所读的内容去做。

我们非常感谢您的帮助!解释也很棒,因为我显然对此很陌生,但想学习!

同样,希望这会导致基于表格中的输入在表格中添加一行-研究(组合框字符串),工具包名称(组合框字符串)和到期日期(文本框Date)。同样,如果有任何方法可以使它基于另一个输入(数量)循环,这也将有所帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

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