insert tablename (fieldname)
select 'a'
union select 'b'
union select 'c'
union ...
而Access好象不支持这种语法,那么在access中怎么处理好呢?
回答:
当然可以放在一行,但是 JET SQL 里面没有变量这个概念,所以要同时插入多行是很无聊的。
Function insertNRows()
'一次插入多行指定的值
'以下插入数字
Dim strSQL As String
Dim lngA(2) As Long
lngA(0) = 1
lngA(1) = 2
lngA(2) = 54
strSQL = "insert into 表1(字段2) select a from ("
strSQL = strSQL & "select max(0) + " & lngA(0) & " as a from 表2 union all "
strSQL = strSQL & "select max(0) + " & lngA(1) & " as a from 表2 union all "
strSQL = strSQL & "select max(0) + " & lngA(2) & " as a from 表2"
strSQL = strSQL & ")"
'注意,这里的表2 可以是什么记录都没有的空表,只是为了满足 FROM 子句
'如果表2只有一条记录,就可以把 MAX 去掉了。
Debug.Print strSQL
CurrentProject.Connection.Execute strSQL
'以下插入文字
Dim strA(2) As String
strA(0) = "my"
strA(1) = "u"
strA(2) = "i"
strSQL = "insert into 表1(字段5) select a from ("
strSQL = strSQL & "select max('') & '" & strA(0) & "' as a from 表2 union all "
strSQL = strSQL & "select max('') & '" & strA(1) & "' as a from 表2 union all "
strSQL = strSQL & "select max('') & '" & strA(2) & "' as a from 表2"
strSQL = strSQL & ")"