Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Access
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2011, 08:37   #1
Black_Mad
 
Регистрация: 08.12.2011
Сообщений: 7
По умолчанию Доступ к свойствам DBF таблиц

Столкнулся с необходимостью проверки DBF файлов на корректность типов полей и их размерностей, например

Поле - NameF
Тип - С
Размер - 50

Поле - Summ
Тип - N
Размер - 7,2

в принципе можно проверить любым DBF вьювером, но у меня в базе mdb ведется широкомасштабная проверка данных на корректность из нескольких DBF файлов (до 8) каждый из которых имеет 65 полей, ошибки в данных не проблема, я импортирую данные в аксес сверяю со справочниками (некоторые больше 2 млн записей) и в случае обнаружения ошибок передаю список ошибок на корректировку.
Но! Требуется также проверить корректность самих форматов, не верный формат с точки зрения контролирующих органов тоже ошибка.

Долго бился над проблемой, но если для таблиц внутри mdb я могу элементарно получить всю их подноготную, то с DBF не получается.

Ткните меня носом в источник, этого думаю будет достаточно, ну а если будет код! О-О-О это будет великолепно!

Что бы не писать лишнее, сообщаю сразу что пробовал сделать.
Цеплялся к dbf-ке через объект, но не нащупал свойств объекта которые мне нужны, т.е.
Код:
***.item(i).Value, ***.item(i).Name
есть, но нет например такого
Код:
***.item(i).FieldSize
.
Допускаю не хватает некой библиотеки, но одно из условий задачи все должно работать на "штатно" установленном аксесе без доп. бубнов

Пробовал смотреть на свойства таблицы после импорта, вроде показывает нужное, но если например в dbf структуре поле N длиной 5,2 а так получилось, что сами данные исключительно целые, в ряде случаев после импорта искомое поле становится не двойным с двумя знаками, а длинным целым.

Извините за многабукв, если нужны уточнения готов сообщить.
Заранее спасибо.
Black_Mad вне форума Ответить с цитированием
Старый 09.12.2011, 09:05   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Тебе нужно цепануть DBF ник через ADO http://msdn.microsoft.com/en-us/libr...=VS.85%29.aspx
И уже используего (провайдер для dbf) выяснять структуру.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.12.2011, 11:33   #3
Black_Mad
 
Регистрация: 08.12.2011
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
цепануть DBF ник через ADO
Покурил ссылку потом еще несколько и вот что накрапалось:
Код:
Sub dbf_property()

Set Conn = CreateObject("ADODB.Connection")
Call Conn.Open("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\temp\;")
 
Set Comm = CreateObject("ADODB.Command")
Comm.ActiveConnection = Conn
 
Comm.CommandText = " SELECT * FROM [AMBN]"
Set DatTab = Comm.Execute

For Each fld In DatTab.Fields
    Debug.Print fld.Type, fld.Name, fld.DefinedSize
Next
 
Conn.Close
 
End Sub
и вот такая смешная выдача со строками все в порядке, нумерики и дата объяснения не нашел.

(жирным от дебага, курсив - реальность)
ТИП ПОЛЕ РАЗМЕР
2 YEAR 2
Num YEAR 4
2 MOUNTH 2
Num MOUNTH 2
200 SMO_OGRN 15
Char SMO_OGRN 15
200 SMO_NAM 100
Char SMO_NAM 100
133 DATA_SH 6
Data DATA_SH 8
2 ISHOD 2
Num ISHOD 3
5 KOL_USL 8
Num KOL_USL 6,2
5 TARIF 8
Num TARIF 15,2
2 OPLATA 2
Num OPLATA 1

Что можно покурить еще? остальные свойства Field.* не информативны в моем случае или я не все нашел
Black_Mad вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить доступ к свойствам звука Windows Freddy_Kruger Мультимедиа в Delphi 4 25.04.2011 13:50
Из 2 таблиц dbf Slimav41 Помощь студентам 1 12.03.2011 19:46
Копирование данных DBF таблиц ИВэТэшка БД в Delphi 1 20.03.2009 21:06
Как получить доступ к свойствам и методам запущеного браузера? loma Общие вопросы .NET 0 08.07.2008 05:23