0

这似乎是一个相当奇怪的问题,但我想复制第一条记录(最好复制到数据库中的下一个位置)。我想这样做,因为我们的客户要求我们的邮件合并样本,并且它必须是一个实时文件。我目前使用对话框导入文件,大多数客户端都是标准逗号分隔的 .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

我的第一个想法是让邮件合并打印第一条记录的副本,这会更好,因为我们不需要运输标签的副本以及来自该记录的所有其他内容,但我不确定是否有一种仅针对邮件合并执行此操作的方法,而无需使用重复记录创建单独的表以仅用于邮件合并。在我看来,这似乎非常低效。

除了复制导入记录之外,我对如何执行此操作的其他建议持开放态度。

在此先感谢大家的时间和帮助!

4

1 回答 1

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 解决方案,我认为您需要事先知道所有字段的名称并使用SELECTINSERT

于 2013-07-11T12:28:43.390 回答