2013-07-11 2 views
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 

Моя первая идея состояла в том, чтобы просто почта слияния напечатать копию первой записи, которая была бы лучше, так как нам не нужны дубликаты отгрузочных этикеток и все остальное, что будет поступать из этой записи, но я не был уверен, что есть даже способ сделать это только для слияния почты, не создавая отдельную таблицу с дублирующейся записью для использования только с слиянием. По-моему, это было ужасно неэффективно.

Я открыт для других предложений о том, как это сделать, кроме дублирования записи при импорте.

Заранее благодарим за все время и помощь в этом вопросе!

ответ

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

Смежные вопросы