Экспорт данных из Microsoft Access (VBA) с использованием набора записей без добавления к предыдущим документам

Я работаю над проектом группы в школе и должен иметь возможность экспортировать данные из таблицы Access в документ Excel, который отформатирован с определенными заголовками (для импорта Sage). У меня возникают проблемы с функцией «exportItems».

Каждый раз, когда я запускаю свой код, он создает повторяющиеся строки в excel. Например: при экспорте он экспортирует 1 элемент, который заказчик заказал. Если я снова экспортирую его в другое имя и местоположение файла, этот элемент будет дублирован, а документ excel содержит 2 экземпляра. Затем он становится 3, а затем 4, если я повторю эти шаги.

Любая помощь будет оценена по достоинству. Я чувствую, что это ошибка где-то в моей инструкции SQL Insert.

Private Sub cmdConfirmExport_Click() If Not IsNull(txtInputFile.Value) Or txtInputFile.Value = "" Then Dim exportID As Integer Dim insertOESQL, insertOEDSQL, FileName, DeleteSQL, nameInput, rsSQL As String exportID = Form_QuoteDetail.QuotesID nameInput = txtInputFile.Value exportOrders (exportID) ' To insert the order details and be able to get the line number, ' create a function similar to exportCommentsOE that will use a recordset to get the values for 'ORDUNIQ(QuotesID FK), ITEM(Vendor Item Num), DESC(Item Description), QTYORDERED(Quantity), QTYBACKORD(Quantity), 'UNITPRICE(Unit Price), UNITCOST(Unit Cost) ' Then with While (Not .EOF), Insert individual item records using rs.Fields([FieldName]). LINENUM ' will be added as a value from a counter that goes up by 32 until it reaches the end of the recordset. exportItems (exportID) exportCommentsOE (exportID) FileName = FolderSelection & "\" & "OE_" & nameInput & "_" & Format(Date, "yyyyMMdd") & ".xlsx" 'FileName = CurrentProject.Path & "\" & "OE_" & nameInput & "_" & Format(Date, "yyyyMMdd") & ".xlsx" DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Orders", FileName, True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Order_Details", FileName, True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Order_Detail_Lot_Numbers", FileName, True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Order_Detail_Serial_Numbers", FileName, True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Order_Payment_Schedules", FileName, True DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "Order_Comments_Instructions", FileName, True MsgBox "Export Complete", vbOKOnly, "Success" DeleteSQL = "DELETE * FROM Orders WHERE NOT ORDUNIQ = " & exportID CurrentDb.Execute DeleteSQL DoCmd.Close Else MsgBox "You must input a file name.", vbOKOnly, "Invalid Input" End If End Sub Function exportItems(itemQuoteID As Integer) On Error GoTo exportError Dim rsSQL, rsINSERTSQL As String Dim rs As DAO.Recordset Dim rslineCount As Integer Dim rsORDUNIQ, rsQTYO, rsQTYBO As Integer Dim rsUP, rsUC As Currency Dim rsDesc, rsITEM, rsHC As String Set rs = Nothing rslineCount = 32 rsSQL = "SELECT [QuotesID FK], [Vendor Item Num], [Item Description], [Quantity], [Unit Price], [Unit Cost], [HASCOMMENT] FROM [Quote Detail]" _ & "WHERE [QuotesID FK] = " & itemQuoteID Set rs = CurrentDb.OpenRecordset(rsSQL) With rs .MoveLast .MoveFirst While (Not .EOF) rsORDUNIQ = .Fields("[QuotesID FK]") rsITEM = .Fields("[Vendor Item Num]") rsDesc = .Fields("[Item Description]") rsQTYO = .Fields("[Quantity]") rsQTYBO = .Fields("[Quantity]") rsUP = .Fields("[Unit Price]") rsUC = .Fields("[Unit Cost]") rsHC = .Fields("[HASCOMMENT]") rsINSERTSQL = "INSERT INTO Order_Details(ORDUNIQ, [LINENUM], [ITEM], [DESC], [QTYORDERED], [QTYBACKORD], [UNITPRICE], [UNITCOST], [COMMINST])" _ & "VALUES (" & rsORDUNIQ & "," & rslineCount & ", '" & rsITEM & "', '" & rsDesc & "'," & rsQTYO & "," & rsQTYBO & "," & rsUP & "," & rsUC _ & ", '" & rsHC & "')" CurrentDb.Execute rsINSERTSQL rslineCount = rslineCount + 32 .MoveNext Wend .Close End With Set rs = Nothing ExitFunction: Set rs = Nothing Exit Function exportError: MsgBox "An error has occured during export of items." Resume ExitFunction End Function 

Выяснил причину. Фактический оператор SQL Insert продолжал создавать записи в БД. Все это будет экспортировано в электронную таблицу Excel, так как она выглядит «добавлена» к предыдущему документу.

Решение заключалось только в том, чтобы делать таблицы (в качестве примера у Ордеров была бы параллельная таблица под названием Orders_Export) и использовать ее как среднего человека. Команда INSERT вставляет данные в обе таблицы, и экспорт будет экспортировать данные только из таблицы Orders_Export. Затем была удалена таблица Orders_Export, но все данные остались в таблице Orders. Это была моя работа. Спасибо всем, что помогло!

  • Формула Excel IF / AND, использующая таблицу из Access
  • Связанные файлы Excel Live, импортированные в Access как тип коротких текстовых данных, а не тип данных данных
  • Как управлять выходом из MS Access в Excel
  • Незначительное признание номинальных значений CSV в R
  • Обновление базы данных доступа из данных рабочего листа Excel
  • Попытка использования функции Excel LinEst из Access с помощью VBA
  • Создание экземпляра Excel 2010 в Access 2010
  • Тип данных Несоответствие в критериях Выражение Двоичный к целому VBA
  • Импорт огромного набора данных в Access из Excel через VBA
  • Как создать пустую базу данных MS Access с помощью VBA?
  • PowerPivot получает исключенные данные из Access
  • Interesting Posts

    Щелчок по гиперссылке URL из MS Excel отправляет запрос http 'HEAD'

    Атомная копирование и вставка как значение и заполнение всей строки

    соединение dsn-less для oracle через excel vba

    Excel Динамический веб-запрос конкретных данных из таблицы и транспонировать результат с помощью кода VBA

    Фильтр Excel Advance не работает

    Vb Script не вызывает макрос, когда файл excel открыт

    Excel: AverageIFS вместо LOOKUP или SUMPRODUCT

    Как создать файл Excel из списка <string> с помощью Microsoft.Office.Interop.Excel

    Создание всплывающих окон через неделю

    Используйте OpenPyXL для итерации по листам и ячейкам и обновления ячеек с континенацией строки

    Excel: подсчет текстовых вхождений в функции текста в 1-м столбце

    Сравнение двух динамических названных диапазонов в Excel Vba

    Почему мой макрос не удаляет все строки (VBA)

    Excel создает гистограмму через диапазон данных с живыми данными

    Правильный способ использования функции PHP fputcsv для экспорта CSV-файла

    Давайте будем гением компьютера.