引用函数变量

时间:2016-06-29 16:31:40

标签: sql vba access-vba

每隔两周会有一个新表格,我会将新数据更新到主表格中。我想自动化这个过程。

我想声明一个变量,用户可以输入数据的日期,并根据该日期更新到主表上的相应字段。我不知道如何使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

2 个答案:

答案 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 **