使用查询将值添加到表中

时间:2015-02-20 15:38:50

标签: vba ms-access access-vba

所以我想做的就是在名为tmpGroupSearch的表中添加两个查询。我不知道怎么做才能创建一个记录集并循环遍历每个记录并单独添加它们。我想有一个更简单的方法来做到这一点我找不到合适的结构。 / p>

以下是我的疑问:

"SELECT tblGroupHeader.GroupName" _
                           & ", tblGroupHeader.GroupNum" _
                           & ", tblAlsoKnown.AlsoKnown" _
                    & " FROM tblGroupHeader" _
                       & " LEFT JOIN tblAlsoKnown ON tblGroupHeader.GroupNum = tblAlsoKnown.GroupNum" _
                    & " WHERE tblGroupHeader.GroupName like '" & txtgroupSearch.Value & "*'" _
                          & " OR tblGroupHeader.GroupNum like '" & txtgroupSearch.Value & "*';"


"Select * FROM tblActionLog WHERE AlsoKnown LIKE '" & txtgroupSearch.Value & "*';"

3 个答案:

答案 0 :(得分:2)

您可以使用INSERT INTO子句跟随值列表(如@Asad show)或SELECT查询。帮自己一个忙,总是在SQL中列出字段名称,或者你只是为未来制作定时炸弹。

Dim strSelect1 As String
Dim strSelect2 As String

strSelect1 = "SELECT tblGroupHeader.GroupName" _
  & ", tblGroupHeader.GroupNum" _
  & ", tblAlsoKnown.AlsoKnown" _
  & " FROM tblGroupHeader" _
  & " LEFT JOIN tblAlsoKnown ON tblGroupHeader.GroupNum = tblAlsoKnown.GroupNum" _
  & " WHERE tblGroupHeader.GroupName like '" & txtgroupSearch.Value & "*'" _
  & " OR tblGroupHeader.GroupNum like '" & txtgroupSearch.Value & "*';"

strSelect2 = "Select * FROM tblActionLog WHERE AlsoKnown LIKE '" & txtgroupSearch.Value & "*';"

Dim strInsert1 As String
Dim strInsert2 As String

strInsert1 = "INSERT INTO tmpGroupSearch (GroupName, GroupNum, AlsoKnown) " & strSelect1

'the next version is valid SQL, but *dangerous* because field names are not enumerated
strInsert2 = "INSERT INTO tmpGroupSearch " & strSelect2

答案 1 :(得分:1)

可以用两种形式编写INSERT INTO语句。

第一个表单没有指定插入数据的列名,只指定了它们的值:

INSERT INTO table_name
VALUES (value1,value2,value3,...);

第二种形式指定列名和要插入的值:

INSERT INTO table_name (column1,column2,column3,...)
VALUES (value1,value2,value3,...);

答案 2 :(得分:1)

在Access查询设计器中测试此参数查询,并根据需要进行调整,以便返回您所提供的 pSearchText 参数值所需的行集。

PARAMETERS pSearchText Text ( 255 );
SELECT gh.GroupName, gh.GroupNum, ak.AlsoKnown
FROM
    tblGroupHeader AS gh
    LEFT JOIN tblAlsoKnown AS ak
    ON gh.GroupNum = ak.GroupNum
WHERE
       gh.GroupName Like "'" & pSearchText & "*'"
    OR gh.GroupNum Like "'" & pSearchText & "*'"
UNION ALL
SELECT al.GroupName, al.GroupNum, al.AlsoKnown
FROM tblActionLog AS al
WHERE al.AlsoKnown Like "'" & pSearchText & "*'"

让它返回正确的数据后,通过将语句的开头更改为此来将其转换为INSERT查询...

PARAMETERS pSearchText Text ( 255 );
INSERT INTO tmpGroupSearch (GroupName, GroupNum, AlsoKnown)
SELECT gh.GroupName, gh.GroupNum, ak.AlsoKnown
... and the rest

将该查询保存为 qryGroupSearchAppend 。然后,您可以从VBA代码执行该查询:

Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("qryGroupSearchAppend")
qdf.Parameters("pSearchText").Value = Me.txtgroupSearch.Value
qdf.Execute dbFailOnError