|
[讨论] 如何把用户选择的记录导出一般而言,都是通过复制然后打开EXCEL粘贴即可。但是这个方法要打开其他对象如EXCEL等才能实现,而且操作比较麻烦,有一定局限性,如果直接使用DOCMD.OutputTo则不能把用户选择的记录进行输出,而只能对整个表等进行输出。为此提出这个讨论具有必要行。
我的想法是,既然DOCMD.OutputTo只能输出表,所以就可以把选择的记录保存到临时表中再导出就可以解决问题。但是再使用中我遇到了问题,希望高手们一起来讨论这个问题
With Me.subMC.Form '子表单subMC
Dim intStartR As Integer '定义用户选择的开始记录号
Dim intEndR As Integer '定义用户选择的结束记录号
Dim intRows As Integer '定义用户选择的行数
'Dim i As Integer
'Dim strSQL As String
If .SelHeight > 0 Then
intStartR = .CurrentRecord
intEndR = .SelTop + .SelHeight
intRows = intEndR - intStartR '获取用户选择的记录,注意的是用户必须从上而下选择记录,而不能从下而上选择记录
'strSQL = "SELECT * INTO tmpTemp FROM whMC2 WHERE MCNo='" & .MCNo & "' AND Item='" & .Item & "'"
'If intEndR - intStartR >= 1 Then
' For i = (intStartR + 1) To intEndR
' strSql1 = "再把其他记录追加到表"
' Next i
'End If
Dim rst As ADODB.Recordset '定义当前记录集
Set rst = .RecordsetClone
Dim intFieldCount As Integer '定义并获取当前记录集的字段数量
intFieldCount = rst.Fields.Count
Dim arrGetR As Variant, x As Integer, y As Integer '定义记录集数组,上标和下标
arrGetR = rst.GetRows(intRows, .Bookmark) '获取记录集的指定行数
'=================================================================循环输出记录
For x = 0 To intRows - 1 '
For y = 0 To intFieldCount - 1
Debug.Print arrGetR(y, x) & ";";
Next y
Debug.Print vbCrLf
Next x
'=================================================================循环输出记录
End If
'DoCmd.RunSQL strSQL
'DoCmd.OutputTo acOutputTable, "tmpTemp", , , True
End With
问题就在于这里,如何把循环输出的记录写如一个带字段名称的表中?以前在一个台湾人写的ACCESS书写的一个财务管理方面的书中有介绍,可是现在忘记怎么操作了,希望高手指点 |
|