【发布时间】:2015-08-17 16:05:27
【问题描述】:
我有一个表单,其中一个 ComboBoxes 列出了给定项目的所有文档。用户应该选择一个,然后按下一个按钮,如果在表Dessins中出现,它会打开显示该记录的第二个表单。如果该表中不存在,我想添加它。
我的一位同事告诉我,我所要做的就是使用 VBA 执行 SQL 查询。我到目前为止是这样的:
Dim rsDessin As DAO.Recordset
Dim strContrat As String
Dim strProjet As String
Dim strDessin As String
Dim sqlquery As String
'I think these next 3 lines are unimportant. I set a first query to get information I need from another table
strDessin = Me.Combo_Dessin
strProjet = Me.Combo_Projet
sqlquery = "SELECT [Projet HNA] FROM [Projets] WHERE [Projet AHNS] = '" & strProjet & "'"
Set rsDessin = CurrentDb.OpenRecordset(sqlquery)
If Not rsDessin.RecordCount > 0 Then 'If not present I want to add it
strContrat = rsDessin![Projet HNA]
sqlquery = "INSERT INTO Feuilles ([AHNS], [Contrat], [No Projet]) VALUES (strDessin, strContrat, strDessin)"
'Not sure what to do with this query or how to make sure it worked.
End If
'Checking my variables
Debug.Print strProjet
Debug.Print strContrat
Debug.Print strDessin
'By here I'd like to have inserted my new record.
rsDessin.Close
Set rsDessin = Nothing
我也在网上读到,我可以通过以下方式获得类似的结果:
Set R = CurrentDb.OpenRecordset("SELECT * FROM [Dessins]")
R.AddNew
R![Contrat] = strContrat
R![Projet] = strProjet
R![AHNS] = strDessin
R.Update
R.Close
Set R = Nothing
DoCmd.Close
一种方法比另一种更好吗?在我的 INSERT INTO 查询更好的情况下,我应该怎么做才能执行它?
【问题讨论】:
-
你说得对,这不是我想要的。我已经修好了,谢谢指出!
-
你也应该直接停止使用
CurrentDb。创建一个变量Set db=CurrentDb并改用db。