имя файла для доступа к таблице - PullRequest
0 голосов
/ 08 декабря 2011

Я новичок, и ваша помощь и терпение будут высоко оценены.Много ткс заранее.Мне нужен правильный синтаксис / код, чтобы получить имя файла в таблицу базы данных доступа.Ниже приведен код и вывод.Выходные данные - 8 столбцов, первые 7 столбцов - это числа, а в столбце 8 - имя файла.Код отправляется в каталог, проверяет все csv-файлы и импортирует данные csv в таблицу базы данных access. Мне нужно заполнить столбец com именем файла csv.На данный момент он заполнен строкой.

Sub Import_multiple_csv_files()


Const strPath As String = "C:\text1\" 'Directory Path
Dim strFile As String 'Filename
Dim strFileList() As String 'File  Array
Dim intFile As Integer 'File Number
Dim SQL As String

 'Loop through the folder & build file list
strFile = Dir(strPath & "*.csv")
While strFile <> ""
     'add files to the list
    intFile = intFile + 1
    ReDim Preserve strFileList(1 To intFile)
    strFileList(intFile) = strFile
    strFile = Dir()
Wend
 'see if any files were found
If intFile = 0 Then
    MsgBox "No files found"
    Exit Sub
End If
 'cycle through the list of files &  import to Access
 'creating a new table called MyTable
     SQL = " UPDATE Test SET Com = ""'strFile'"" WHERE Com IS NULL OR Com=''"
For intFile = 1 To UBound(strFileList)

DoCmd.TransferText acImportDelimi, , _
    "Test", strPath & strFileList(intFile)
   'DoCmd.RunSQL SQL
   CurrentDb.Execute SQL

Кажется, что вывод не

F1          F2      F3      F4      F5      F6      F7      com
20111128    2.6922  2.6922  2.6922  2.6922  3340    17696   'strFile'
20111129    2.7229  2.7229  2.7229  2.7229  5010    18141   'strFile'
20111130    2.7401  2.7401  2.7401  2.7401  3641    18723   'strFile'
20111201    2.7376  2.7376  2.7376  2.7376  8087    19321   'strFile'
20111202    2.7784  2.7784  2.7784  2.7784  0       0       'strFile'
20111128    2.6727  2.6727  2.6727  2.6727  3889    26111   'strFile'
20111129    2.7039  2.7039  2.7039  2.7039  4562    26647   'strFile'
20111130    2.722   2.722   2.722   2.722   3043    27099   'strFile'
20111201    2.7218  2.7218  2.7218  2.7218  9180    27037   'strFile'
20111202    2.7623  2.7623  2.7623  2.7623  0       0       'strFile'

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

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

SQL = "UPDATE Test SET Com = '''" & strFile & "''' WHERE Com IS NULL OR Com = ''"

Окружение вашего strFile кавычками приводит к тому, что он обрабатывается как строковый литерал, а не получает значение самой строковой переменной.

0 голосов
/ 08 декабря 2011

Кажется, вам не нужны одинарные кавычки в данных:

SQL = "UPDATE Test SET Com = '" & strFile & "' WHERE LEN(Com) = 0;"

... но я думаю, что вам нужно изменить SQL внутри вашего последующего цикла, например

'cycle through the list of files &  import to Access
'creating a new table called MyTable

SQL = "UPDATE Test SET Com = '{0}' WHERE LEN(Com) = 0;"

For intFile = 1 To UBound(strFileList)

  DoCmd.TransferText acImportDelimi, , _
      "Test", strPath & strFileList(intFile)
  CurrentDb.Execute Replace$(SQL, "{0}", strPath & strFileList(intFile))

... но это вступит в силу только один раз при обновлении пустых и пустых значений!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...