2017-01-20 10 views
0

Сначала мне захотелось установить текстовое поле, в котором пользователи могут вводить дату текстового файла, и нажать кнопку «Импорт» (я создал код и сделал некоторую кодировку, но не смог найти и не смог найти s upport for мой вопрос). Это захватит текстовый файл и импортирует его в таблицу.Импорт текстовых файлов с включенным именем файла

Это еженедельные отчеты, которые необходимо импортировать в таблицу. Моя лучшая альтернатива на основе исследований и проб и ошибок пришли к макро Вот мой код:

Function InsertCMS_Reports_2ndSave() 
    'DoCmd.DeleteObject Table, "CCS_Reports_2ndSave" 
    DoCmd.TransferText acImportFixed, "CCS_Reports_Import", _ 
    "CCS_Reports_Import", "C:\Users\ABCDEF2\Desktop\January CCS reports for Centene\ABC_COMPRPT_1701011028174_h0062.txt" 
End Function 

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

1) При импорте этих файлов, как я могу добавить имя файла в последний столбец и отобразить имя файла для каждой строки.

Итак, в этот момент мне пришлось бы постоянно отключать макрос после его открытия или менять имя файла на новый еженедельный файл, сохранять его, закрывать и снова открывать. Это не самый эффективный, но похоже, что это может сработать.

+0

Если бы я просто запускал запрос UPDATE для обновления полей, где я точно выполняю этот запрос? – KKP

+0

Я закончил с использованием запроса на обновление и решил свою проблему. Если кто-нибудь знает более эффективный, пожалуйста, дайте мне знать. – KKP

+0

Кто-нибудь знает, как я мог выполнить это, без необходимости всегда запускать БД с момента его макроса? Могу я просто запустить его, когда я выберу? – KKP

ответ

0

Это должно делать именно то, что вы хотите. Я также добавил некоторые полезные комментарии.

Private Sub Command1_Click() 

     Dim strPathFile As String, strFile As String, strPath As String 
     Dim strTable As String 
     Dim blnHasFieldNames As Boolean 

     ' Change this next line to True if the first row in EXCEL worksheet 
     ' has field names 
     blnHasFieldNames = False 

     ' Replace C:\Documents\ with the real path to the folder that 
     ' contains the EXCEL files 
     strPath = "C:\Users\Excel\Desktop\test\" 

     ' Replace tablename with the real name of the table into which 
     ' the data are to be imported 
     strTable = "tablename" 

     strFile = Dir(strPath & "*.txt") 
     Do While Len(strFile) > 0 
       strPathFile = strPath & strFile 
       DoCmd.TransferText acImportDelim, , strTable, strPathFile, True 

       On Error Resume Next 
       CurrentDb.Execute "ALTER TABLE tablename ADD FileName CHAR(25)" 

       CurrentDb.Execute "UPDATE tablename SET FileName = '" & _ 
       strFile & "' WHERE FileName IS NULL", dbFailOnError 

     strFile = Dir() 
     Loop 

End Sub 

Что касается загрузки. Когда вы получаете файлы? Я думаю, файлы будут поступать один раз в день. Это реально? Вы можете запустить Windows TaskScheduler на основе приведенного ниже руководства.

http://www.digitalcitizen.life/how-create-task-basic-task-wizard

Наконец, я хотел бы сделать это как ночную работу, если я вам.

Create an AutoExec macro 

    If you have already created a macro that contains the actions that you want to occur when the database starts, just rename the macro AutoExec, and it will run the next time that you open the database. Otherwise, follow these steps to create a macro: 

     On the Create tab, in the Other group, click Macro. If this command is unavailable, click the arrow beneath either the Module or the Class Module button, and then click Macro. 

     In the Macro Builder, in the first empty Action cell, select the action that you want to perform. If applicable, under Action Arguments, type the appropriate values in 

the argument boxes. 

    If you cannot find the action you want, on the Design tab, in the Show/Hide group, make sure Show All Actions is selected. This expands the list of actions that you can use, but the list will include some actions that will only run if the database is granted trusted status. For more information, see the articles Decide whether to trust a database or How database objects behave when trusted and untrusted. 

    Repeat step 2 for each additional action you want to occur. 

    Click Save, and in the Save As dialog box, type AutoExec. 

    Click OK and then close the Macro Builder. The new macro will run the next time that you open the database.