这似乎是一个相当奇怪的问题,但我想复制第一条记录(最好是数据库中的下一个位置)。我想这样做,因为我们的客户要求我们邮件合并的样本,它必须是一个实时文件。我目前使用对话框导入文件,大多数客户端是标准的逗号分隔.txt文件。
Private Sub Command38_Click()
Dim f As Object
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim strUpdate As String
Dim strFile As String
Dim strFolder As String
Dim varItem As Variant
Dim P As String
Dim DeleteEverything As String
DoCmd.SetWarnings False
DeleteEverything = "DELETE * FROM [tcppltr]"
DoCmd.RunSQL DeleteEverything
Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
f.InitialFileName = "G:\access\TCPP\"
f.Filters.Clear
f.Filters.Add " Armored TXT Files", "*.asc"
If f.Show Then
For Each varItem In f.SelectedItems
strFile = Dir(varItem)
strFolder = Left(varItem, Len(varItem) - Len(strFile))
P = strFolder & strFile
DoCmd.TransferText acImportDelim, "TCPP Import Specification", "tcppltr", P, False
Next
End If
End Sub
我的第一个想法是让邮件合并打印出第一条记录的副本,这样会更好,因为我们不需要重复发货标签以及来自此记录的所有其他内容但我不确定甚至有一种方法只为邮件合并而不创建一个单独的表与重复记录只用于邮件合并。在我看来,这似乎非常低效。
除了在导入时复制记录外,我对其他如何做的建议持开放态度。
提前感谢每个人的时间和帮助!
答案 0 :(得分:1)
这基本上做的是打开两个记录集。第一个记录集指向您要复制的记录(在这种情况下,我做了MoveFirst
您可以专门选择任何记录或修改此代码以复制多个记录)。目前这只复制了1条记录。
Dim db As Database
Dim rs1 As Recordset, rs2 As Recordset
Dim i As Long
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Table1", dbOpenSnapshot)
Set rs2 = db.OpenRecordset("Table1", dbOpenDynaset)
rs1.MoveFirst
rs2.AddNew
For i = 1 To rs2.Fields.Count - 1
rs2.Fields(i) = rs1.Fields(i)
Next
rs2.Update
rs1.Close
rs2.Close
如果您需要SQL解决方案,我认为您需要事先知道所有字段的名称并使用SELECT
和INSERT