每隔两周会有一个新表格,我会将新数据更新到主表格中。我想自动化这个过程。
我想声明一个变量,用户可以输入数据的日期,并根据该日期更新到主表上的相应字段。我不知道如何使SQL函数使用变量来定位具有语法的表,甚至不确定是否可以这样做。任何帮助,将不胜感激。
由于我没有经验,我正在制作一个VBA宏,并从我所做的访问查询中嵌入SQL代码。
Sub UpdateFieldX()
Dim SQL As String
SQL = "UPDATE [15-Jun-16] " & _
"RIGHT JOIN MasterSPI " & _
"ON [15-Jun-16].[SR#] = MasterSPI.[SR#] " & _
"SET MasterSPI.[30-Jun-16] = [15-Jun-16].[SPI]; " _
DoCmd.RunSQL SQL
End Sub
答案 0 :(得分:0)
我已经做了类似的事情并使用了更新查询和插入查询。 听起来您只是尝试更新可能需要更新的任何现有记录,然后在表中添加新记录。
对于更新,我尝试在SQL视图中创建一个查询并输入类似:
的内容 UPDATE MasterSPI SET MasterSPI.SRnumber = [newtablename]![SRnumber]
等。
并为表格中的每个字段执行此操作。
对于插入,您可以执行以下操作:
INSERT INTO MasterSPI SELECT * FROM newtablename
这可能有助于您入门。
答案 1 :(得分:0)
我知道很多人都是高级用户,但我找到了一个符合我的快速需求的答案。作为其他人的通知和免责声明,它绝不是安全的,更多的是个人使用,这样我就不需要花费一个小时来重复添加和更新几个主表。
为此,我创建了一个名为name的全局字符串变量,然后我创建了另一个名为strung的变量,将其转换为可读的字符串以进行引用。然后我创建了一个引用该变量的SQL字符串。这允许用户提交全局变量的输入,该输入转换为RunSQL方法的可读字符串。
这里是最相关的部分片段,我希望它可以帮助那些接下来使用相同场景的人。
**
Public name As String 'global variable declared so that the new field to be created can be used elsewhere
name = InputBox("Name of Month", "InputBox") 'variable that takes user input and it will be name for new fields to be added
Dim SQLa As String 'creates a string variable such that it will be read as an SQL line by the RunSQL method
strung = "[" & name & "]" 'sets strung as global varible name, which is user input on the specific table being used to update
'the following lines runs a query such that it updates the master table with new data and does the grouping by SR number
SQLa = "UPDATE " & strung & " " & _
"RIGHT JOIN MasterSPI " & _
"ON " & strung & "." & "[SR#] = MasterSPI.[SR#] " & _
"SET MasterSPI." & strung & " = " & strung & "." & "[SPI]; " _
DoCmd.RunSQL SQLa 'executes the SQL code in VBA **