Автор | Сообщение |
|
| постоянный участник
|
Пост N: 2215
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.12 13:38. Заголовок: Помогите открыть DBF-файл из Киева....
Всем привет. Прислали мне тут DBF-файл, а современные "смотрелки" вылетают.... http://files.mail.ru/WBLOJS DBedit Pavel Tsarenko - предлагает изменить заголовок и обрезает базу. Открывает только старый DBU на Клипере. Что посоветуете, как работать с такими файлами... У меня много их потом будет...
|
|
|
Ответов - 25
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 2384
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.05.12 13:54. Заголовок: Плагин для Far , Loo..
Плагин для Far , LookDBF нормально открыл. Harbour и Xharbour cчитают что файл пуст. Сами файлики тебе слали в архиве или в чистом виде ? Помнится был глюк у Тhe Bat. Если dbf-ик слать в чистом виде то при сохранении туда дописывалась какая та дрянь PS Clipper так же нормально открыл файл ЗЫ1 Excel открыл норм ;)
|
|
|
|
| постоянный участник
|
Пост N: 2216
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.12 14:15. Заголовок: Dima пишет: Помнитс..
Dima пишет: цитата: | Помнится был глюк у Тhe Bat. Если dbf-ик слать в чистом виде то при сохранении туда дописывалась какая та дрянь |
| Спасибо БОЛЬШОЕ Дима, а то я думал что мне труба... Это оказывается The BAT! глючит...
|
|
|
|
| |
Пост N: 65
Зарегистрирован: 16.12.08
|
|
Отправлено: 28.05.12 14:26. Заголовок: В файле повторяются ..
В файле повторяются названия полей (DOPP_2 и т.д.). Открылb только DBF Manager и плагин для Фара.
|
|
|
|
| постоянный участник
|
Пост N: 2217
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.12 14:30. Заголовок: santy пишет: В файл..
santy пишет: цитата: | В файле повторяются названия полей (DOPP_2 и т.д.). |
| Это ошибка программеров или The Bat! "постарался" ? И каким языком можно продублировать поля в БД ?
|
|
|
|
| |
Пост N: 214
Зарегистрирован: 11.10.11
|
|
Отправлено: 28.05.12 14:38. Заголовок: Не открывайте подозр..
Не открывайте подозрительные посылки. Позвоните лучше в милицию!
|
|
|
|
| |
Пост N: 496
Зарегистрирован: 11.06.10
|
|
Отправлено: 28.05.12 14:42. Заголовок: Сыроежка во флейме а..
Сыроежка, во флейме анекдоты рассказывайте!
|
|
|
|
| |
Пост N: 215
Зарегистрирован: 11.10.11
|
|
Отправлено: 28.05.12 14:51. Заголовок: Может быть этот файл..
Может быть этот файл сформирован СУБД которая разрешает в качестве полей указывать массивы. И, возможно, именно поэтому имена дублируются. Если их характеристики одинаковы (число знаков в поле и количество после запятой), то скорей всего это именно массив. Clipper, если имеется в виду DBU, открывает файл наверное потому, что он не проверяет дублирование имен полей. Возможно вам придется отредактировать заголовок, изменив имена дублирующихся полей.
|
|
|
|
| |
Пост N: 66
Зарегистрирован: 16.12.08
|
|
Отправлено: 28.05.12 14:52. Заголовок: не думаю что это The..
не думаю что это The bat , в версии 3 х такого не наблюдал. В принципе можна протестить. Скажите пусть заархивируют и пришлют вам ещё раз. Сравните структуру.
|
|
|
|
| постоянный участник
|
Пост N: 2218
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.12 14:55. Заголовок: santy пишет: не дум..
santy пишет: Спасибо БОЛЬШОЕ. Так и поступлю...
|
|
|
|
| |
Пост N: 67
Зарегистрирован: 16.12.08
|
|
Отправлено: 28.05.12 14:58. Заголовок: Ещё этот файл открыв..
Ещё этот файл открывает внутренний редактор dbf xedit oт Xailer . При просмотре структури видно что поля одинаковые , разница только в длине поля типа С.
|
|
|
|
| |
Пост N: 216
Зарегистрирован: 11.10.11
|
|
Отправлено: 28.05.12 15:02. Заголовок: Может быть проще у н..
Может быть проще у них, то есть в Киеве, спросить, какой СУБД сформирован файл, и разрешается ли запись массива полей. Еще такая делитантская мысль пришла. Не может ли быть так, что этот файл подготовлен в 1С? Как иззвестно, если я не ошибаюсь, они в 8-ой версии используют собственную СУБД. Может быть при выгрузке в формат DBF, их пррграмма просто вставила имена, которые соответствуют имени одному агрегированному полю исходной СУБД. Просто сделала это автоматически.
|
|
|
|
|
| постоянный участник
|
Пост N: 2219
Зарегистрирован: 12.09.06
|
|
Отправлено: 28.05.12 15:06. Заголовок: Сыроежка пишет: Мож..
Сыроежка пишет: цитата: | Может быть проще у них, то есть в Киеве, спросить, какой СУБД сформирован файл, и разрешается ли запись массива полей. |
| Это сложно очень ! Из Москвы до Киева звонить и узнавать кто этим там занимается....
|
|
|
|
| |
Пост N: 217
Зарегистрирован: 11.10.11
|
|
Отправлено: 28.05.12 15:07. Заголовок: А по электронной поч..
А по электронной почте?
|
|
|
|
| |
Пост N: 2385
Зарегистрирован: 17.05.05
|
|
Отправлено: 28.05.12 16:20. Заголовок: Andrey Похоже не в ..
Andrey Похоже не в почтовой проге дело ;) На эти грабли уже натыкались в 2010 и структура файла такая же. Смотрим тут
|
|
|
|
| Администратор
|
Пост N: 2356
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.12 11:44. Заголовок: Клиппер и остальные ..
Клиппер и остальные средства работы с форматом dbf поддерживают символьные поля размером до 256 байт, а харбор - до 64к. Для этого в заголовке для указания размера такого поля используется 2 байта - байт длины и байт к-ва десятичных знаков. В "киевском" файле в байте для десятичных знаков ошибочно указано 2, хотя должно быть 0. Вот харбор и вычисляет длину такого поля более 256 байт. Если открыть файл через dbedit, не исправляя заголовок, и посмотреть его структуру, то символьные поля размером более 500 байт - как раз они и есть. В результате харбор неверно определяет общий размер записи, и отсюда все дальнейшие беды. Насколько я знаю, excel как раз может формировать такие битые файлы.
|
|
|
|
| |
Пост N: 2
Зарегистрирован: 31.05.12
|
|
Отправлено: 31.05.12 18:17. Заголовок: Pasha пишет: Клиппе..
Pasha пишет: цитата: | Клиппер и остальные средства работы с форматом dbf поддерживают символьные поля размером до 256 байт |
| Вообще то в Клиппер 5.01, согласно официальной документации от Nantucket, максимальная длина символьного поля 64k. цитата: | Для этого в заголовке для указания размера такого поля используется 2 байта - байт длины и байт к-ва десятичных знаков. |
|
|
|
|
|
| Администратор
|
Пост N: 2358
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.12 18:33. Заголовок: evsob пишет: Вообще..
evsob пишет: цитата: | Вообще то в Клиппер 5.01, согласно официальной документации от Nantucket, максимальная длина символьного поля 64k. |
| Это для memo-поля. А для символьного поля максимальная длина 256 байт, так как в заголовке dbf для длины поля используется 1 байт. В структуре заголовка поля есть еще байт для определения числа десятичных знаков числового поля. Для символьного поля он не задействован. А в харборе этот байт как раз используется для задания размера символьного поля до 64к.
|
|
|
|
| |
Пост N: 3
Зарегистрирован: 31.05.12
|
|
Отправлено: 31.05.12 18:47. Заголовок: Pasha пишет: Это дл..
Pasha пишет: цитата: | Это для memo-поля. А для символьного поля максимальная длина 256 байт |
| Во-первых передо мной официальная документация. Во-вторых пользовался сам в базах такими полями. И в-третьих дбушука (русская) от него читает прекрасно эти файлы.
|
|
|
|
| Администратор
|
Пост N: 2359
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.12 19:16. Заголовок: evsob пишет: Во-пер..
evsob пишет: цитата: | Во-первых передо мной официальная документация. Во-вторых пользовался сам в базах такими полями. И в-третьих дбушука (русская) от него читает прекрасно эти файлы. |
| Ну дайте ссылку на доку. Тест для 5.01: dbCreate('test', {{'F1', 'C', 300, 0}}) В результате создается файл с полем f1 размерностью 44 символа, т.е. остаток от деления на 256. Так как и должно быть. Не надо выдумывать того, чего нет.
|
|
|
|
| Администратор
|
Пост N: 2360
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.12 19:32. Заголовок: Я оказался неправ, д..
Я оказался неправ, давно не работаю с клиппером. Действительно, в клиппере поддерживается символьные поля до 64к А проблема в исходном киевском файле заключается в том, что размер записи в заголовке (2641 байт) не соответствует сумме длин полей (11345 байт). Это произошло вследствие того, что для клиппера (и харбора) к-во десятичных знаков для поля С величина значащая, а для прочих dbf-ридеров - незначащая. А для некоторых полей это значение оказалось заполненным.
|
|
|
|
| |
Пост N: 226
Зарегистрирован: 11.10.11
|
|
Отправлено: 31.05.12 19:38. Заголовок: Пока товарищ отсутст..
Пока товарищ отсутствует, то я постараюсь за него ответить. Дело в том, что сам программист должен задать значения для этих полей. Если мне память не изменяет, то размер поля для задания длины составляет всего лишь байт. Поэтому когда указывается значение больше 255, то очевидно в поле занесется лишь остаток по модулю 256. Что касается документации, то, например, в книге "Руководствоо по применению Clipper 5.0 на ПЭВМ" написано следующее (4-50). "Символьные поля длиной свыше 255 символов. Существует два метода создания символьного поля длиной более 255 знаков: Укажите длину поля, используя поля Field_len и Field_dec согласно следующей формулировке: FIELD->Field_len := <nFieldLength> / 256 FIELD->Field_dec := INT( <nFieldLength> / 256 ) Модифицируйте сттруктуру, изменив длину Field_len до 5, а затем установите действительную длину поля. Это можно выполнить в DBU.EXE"
|
|
|
|
|
| |
Пост N: 4
Зарегистрирован: 31.05.12
|
|
Отправлено: 31.05.12 19:50. Заголовок: Pasha пишет: Ну дай..
Pasha пишет: цитата: | Ну дайте ссылку на доку. Тест для 5.01: dbCreate('test', {{'F1', 'C', 300, 0}}) В результате создается файл с полем f1 размерностью 44 символа, т.е. остаток от деления на 256. Так как и должно быть. Не надо выдумывать того, чего нет. |
| Официальная документация передо мной не на ресурсе в интернете, а в виде банальных книг (на русском!) прилагаемых к лицензионному продукту. Поэтому ссылку на нее дать не могу. А вот где там написано: В описании к команде COPY STRUCTURE EXTENDED есть примечание. Если хотите выложу скан со страницы. И вообще привык говорить правду и подкреплять свои слова документами. Об этом в документации еще упаменается у команд COPY STRUCTURE, CREATE, CREATE FROM, FIELD(), TYPE()
|
|
|
|
| |
Пост N: 6
Зарегистрирован: 31.05.12
|
|
Отправлено: 01.06.12 00:58. Заголовок: Что с ним делать хочешь?
Andrey пишет: цитата: | Всем привет. Прислали мне тут DBF-файл, а современные "смотрелки" вылетают.... http://files.mail.ru/WBLOJS DBedit Pavel Tsarenko - предлагает изменить заголовок и обрезает базу. Открывает только старый DBU на Клипере. Что посоветуете, как работать с такими файлами... У меня много их потом будет... |
| Что с ним делать хочешь? В Клиппере подобный случай обрабатывается используя номера полей. Выглядит это примерно так: //Prog Kiev Пример в Клиппер USE YRP_040512_095354 nField :=FCOUNT() aValField[nField] DO WHILE !EOF() FOR m=1 TO nField //Обработка записи aValField[m] := FIELDGET(m) //Обаботка поля END SKIP ENDDO
|
|
|
|
| постоянный участник
|
Пост N: 2220
Зарегистрирован: 12.09.06
|
|
Отправлено: 01.06.12 11:15. Заголовок: evsob пишет: Что с ..
evsob пишет: Мне нужно открывать подобные "убитые" файлы в своей программе и перебрасывать записи в свою базу. Таких файлов будет много каждый месяц. evsob пишет: цитата: | В Клиппере подобный случай обрабатывается используя номера полей. |
| А если в этих файлах сменят структуру базы ? Или юзера запишут вообще другой DBF... Как тогда отловить такой момент ?
|
|
|
|
| |
Пост N: 128
Зарегистрирован: 17.06.10
|
|
Отправлено: 01.06.12 12:17. Заголовок: а чего, fieldname(nn..
а чего, fieldname(nn) не работает ?
|
|
|
Ответов - 25
, стр:
1
2
All
[только новые]
|
|