powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Массовая проверка DBF
3 сообщений из 3, страница 1 из 1
Массовая проверка DBF
    #39516718
Moss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Нарисовалась задачка ((
Есть 4 папки D:\input , D:\fail_name , D:\fail_structure и D:\ouptut
В папке input лежит некое количество файлов разного расширения.
1 ) Необходимо в данной папке найти файлы *.dbf и если их наименование не соответствует определенной маске (это думаю решается регулярным выражением) то перенести их в папку D:\fail_name
2) Файлы *.dbf c соответствующим наименованием необходимо проверить на корректность структуры (хотя бы наличие определенных колонок с определенным названием) - если все гуд, то перебросить в D:\output иначе в D:\fail_structure

Натолкните на мысль. С Access не работал. Может я и не туда пишу (((
Можем с помощью vba что-то сделать..

Сторонние ПО - не вариант. На комп устанавливать ничего нельзя ((
Есть Пакет Office и DbfNavigator.

Проверку на наименование и переброску файлов - на крайняк могу написать bat-ник.

Все спасибо за любую инфо.
...
Рейтинг: 0 / 0
Массовая проверка DBF
    #39516733
Фотография ПЕНСИОНЕРКА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moss,

здесь самое сложное, что ДБФ-ки могут быть как минимум 5-ти версий
как их открыть без кракозябр --вот в чем вопрос
...
Рейтинг: 0 / 0
Массовая проверка DBF
    #39517080
1. Поиск файлов - цикл с применением функции Dir:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
 strFileName = Dir(*.dbf)
Do While Len(strFileName) > 0
 If UCase(strFileName) Like "[A-Z]##*.dbf" Then  'В начале латинская буква и минимум 2 цифры. 
 ...
 Else
 ... 'Перемещаем файл, как показано ниже. 
 End If
 strFileName = Dir
Loop


2.Проверка структуры (если тип файлов не VFP 3.0 и выше, и Акс не 2013 и выше):
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
strSQL = "SELECT * FROM[" & strFileName & "] IN 'D:\input' [XBASE;] WHERE False"
Set RS = CurrentDB.OpenRecordset(strSQL)
For Each fld In RS.Fields
 strNames = strNames & ";" & fld.Name
Next
RS.Close
 strNames = strNames & ";"
 strFolderTo = "D:\fail_structure\"
If InStr(1,";ИмяПоля1;", strNames) = 0 Then
ElseIf InStr(1,";ИмяПоля2;", strNames) = 0 Then
Else
 strFolderTo = "D:\ouptut\"
End If
 'В VBA нет своего метода перемещения файла, но можно скопировать, а затем удалить.
 FileCopy "D:\input\" & strFileName,  strFolderTo & strFileName
 Kill "D:\input\" & strFileName

Также поиск и перемещение файлов можно с помощью библиотеки FSO (есть куча примеров).
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Массовая проверка DBF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]