2014-10-10 2 views
2

Я экспортирую файл из таблицы MS Access в свой локальный, я делаю это кодирование VBA. нужно создать последовательность для имен файлов таким образом,Как создать последовательность

File1PN00001 
File1PN00002 
File1PN00003 
... 

... 

Я делаю это, следующий код

Private Sub Command0_Click() 
Dim FileName As String 
Dim intChoice As Integer 
Dim strPath As String 
Dim LSProc As QueryDef 
Dim db As Database 
Set db = CurrentDb() 

Set LSProc = db.CreateQueryDef("") 

'make the file dialog visible to the user 
strFilePath = BrowseFolder("Please Select Path to Export Neutrality Report file to") 

If strFilePath <> "" Then 
Call MsgBox(strFilePath, vbInformation, "Save Path") 
Else 
MsgBox "Please Provide a file path before exporting!", vbCritical + vbOKOnly 
End If 
FileName = strFilePath & "File1PN" & Format(txtBal_Number, "000000") & ".txt" 

    DoCmd.TransferText acExportDelim, , "T1", FileName, False 
End Sub 

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

+0

Вы хотите экспортировать все таблицы в БД в txt-файл? – PaulFrancis

+0

Ну, вам нужно найти номера последних сохраненных файлов в этом каталоге. Возьмите числовую часть и увеличите ее на 1 при сохранении? –

+0

@PaulFrancis: Нет, не все таблицы предназначены только для тех таблиц, которые необходимы. Здесь T1 - это таблица, которая экспортирует –

ответ

3

Вы можете получить эту сортировку, если у вас есть система ведения журнала. Сначала вам нужно создать таблицу ничего необычного, просто простую таблицу с двумя столбцами.

tbl_FileNameLog 
-------------------------------------------------------------------------- 
FIELD NAME | DATA TYPE |     COMMENTS 
------------+---------------+--------------------------------------------- 
fileID  | Number  | Could use Auto Number, but for future safe. 
      |    |  use Number, so you can edit it. 
      |    |  But make sure it is a Primary Key. 
exportDate | Date/Time | Just a Date field to store the Date. 

Теперь вы можете изменить свой код на что-то похожее.

Private Sub Command0_Click() 
    Dim strPath As String, FileName As String 
    Dim lngChoice As Long 
    Dim dbObj As Database 

    Set dbObj = CurrentDb() 

    'make the file dialog visible to the user 
    strFilePath = BrowseFolder("Please Select Path to Export Neutrality Report file to") 

    If strFilePath <> "" Then 
     MsgBox "Exporting File to : " & strFilePath, vbInformation, "Save Path" 
    Else 
     MsgBox "Please Provide a file path before exporting!", vbCritical + vbOKOnly 
     Exit Sub 
    End If 

    lngChoice = Nz(DMax("fileID", "tbl_FileNameLog"), 0) + 1 

    FileName = strFilePath & "File1PN" & Format(lngChoice, "000000") & ".txt" 

    DoCmd.TransferText acExportDelim, , "T1", FileName, False 

    dbObj.Execute "INSERT INTO tbl_FileNameLog (fileID, exportDate) VALUES (" & _ 
        lngChoice & ", " & CDbl(Date()) & ")" 

    Set dbObj = Nothing 
End Sub 

Итак, в первый раз, когда код запущен, он будет искать Max ID в таблице. Поскольку нет записи, она будет использовать функцию Nz и назначить 0 + 1, поэтому будет получен идентификатор 1. Затем Экспорт происходит в указанное место. Одновременно вводится запись в файл-файл с указанием идентификатора. Поэтому в следующий раз, когда код будет запущен, он будет искать таблицу журналов файлов, так как идентификатор 1 доступен, он не будет использовать 2. Так что и так далее.

Таким образом, он не полагается на файловая система. Он имеет свой собственный журнал, поэтому даже если файл перемещен или удален, он все равно сможет обеспечить последовательную/непрерывную нумерацию. Надеюсь это поможет !

+0

его рабочая благодарность приятель :) приветствия !! –

+0

Рад, что у вас есть сортировка! Удачи. :) – PaulFrancis

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