Конференция "Базы" » dbf файл - не видно чисел [D7, dBase, FoxPro]
 
  • ruslan_as (14.09.09 09:00) [0]
    Приветсвую знатоков. Выручайте: приходят телефонные переговоры в dbf-файлах. Созданы они в какой-то DOS программе (какой - не удается узнать). Проблема в том, что числа в ней  проставлены с разделителем точка. Попробовал TDBF - вместо чисел нули. Просмотрел через утилиту в Total Comandere - есть нормальные числа. Через BDE - показывает целые числа (знаки после точкти отсекает) да и BDE использовать мне нельзя. Подскажите, как выкрутиться. Может есть какой компонент который справиться с этой задачей?
  • Сергей М. © (14.09.09 09:23) [1]

    > приходят телефонные переговоры


    Это очень важно для локализации проблемы)


    > какой - не удается узнать


    http://www.delphikingdom.com/asp/viewitem.asp?catalogid=624
  • sniknik © (14.09.09 09:42) [2]
    > Проблема в том, что числа в ней  проставлены с разделителем точка.
    это не проблема, это стандарт. даже последний виндовый VFOXPRO так пишет.

    > Попробовал TDBF - вместо чисел нули.
    значит не так пробовал (насколько знаю он со старыми dos dbf(и dBase и Foxpro) файлами нормально работает, хотя их самих несколько версий...), или причина не в этом.

    > Подскажите, как выкрутиться.
    не надо выкручиваться, надо нормально работать, проверить формат dbf-а, посмотреть тип полей, и использовать то, что подходит, и правильного типа.
  • ruslan_as (14.09.09 12:55) [3]
    Сергей М. ©. Извините за невежество. Какой программой лучше просмотреть структуру заголовка файла (эти 32 байта).
  • Сергей М. © (14.09.09 13:11) [4]

    > ruslan_as   (14.09.09 12:55) [3]


    Да вот прямо той демо-программой, фигурирующей по приведенной ссылке, как раз и можно посмотреть)
  • ruslan_as (14.09.09 13:16) [5]
    Разобрался: простая таблица
    Размер заголовка в байтах 97
    Размер записи в байтах 19
    По таблице остальное "0"

    Поле SUMMA (у которого проблема):
    тип Numeric
    Размер поля 16
    Что еще нужно, для того что бы определить тип?
  • ruslan_as (14.09.09 13:20) [6]
    >>Да вот прямо той демо-программой, фигурирующей по приведенной ссылке, как раз и можно посмотреть)
    При компиляции выдает Что не может найти файл DBFHeader.res. Пришлось через WinHex.
  • Сергей М. © (14.09.09 13:22) [7]

    > Поле SUMMA (у которого проблема):
    > тип Numeric
    > Размер поля 16


    А чему, согласно наблюдаемому тобой заголовку этого поля, равно кол-во дробных разрядов ?

    По идее оно д.б. равно 2, если речь в поле идет о рублях-копейках ..
  • Сергей М. © (14.09.09 13:24) [8]

    > не может найти файл DBFHeader.res


    Ты бы хоть сообщение до конца дочитал : там ведь тебя спрашивают, создать ли этот файл по причине его отсутствия)
  • Anatoly Podgoretsky © (14.09.09 13:47) [9]
    Для Numeric требуется два поля precision и size
    Кроме того никаких программ искать не надо, с Дельфи идет Database Desctop
  • ruslan_as (14.09.09 13:48) [10]
    >>Ты бы хоть сообщение до конца дочитал : там ведь тебя спрашивают, создать ли этот файл по причине его отсутствия)
    В том то и дело, что не спрашивает. При запуске dpr пишет сообщение, что не может найти файл. А при компиляции выдает
    [Fatal Error] DBFHeader.dpr(6): Unit Windows was compiled with a different version of Types.DWORD. Разбираться не стал.

    >>А чему, согласно наблюдаемому тобой заголовку этого поля, равно кол-во дробных разрядов ?
    Это я сообразил, что в базе не видно разрядов из-за этого. Только возникают вопросы, почему через другие программы (тот же DOS Navigator или F3 в Total Comander 7 - именно 7, а не ниже ) я вижу эти знаки, а через стандартные компоненты нет? Что тогда делать мне? Изменять в каждом пришедшем файле тип поля?
  • Anatoly Podgoretsky © (14.09.09 13:48) [11]
    Допустим это N16.x тогда еще остается побеспокоиться насчет правильного формата, что не обязательно, особенно для самописного доступа.
  • ruslan_as (14.09.09 13:54) [12]
    Не сочтите за наглость, может у кого будет возможность глянуть мой файл... Не хотелось бы ошибиться в ответе на Ваши вопросы и завести ветку в тупик...
    http://rapidshare.com/files/279873434/7202035_03.rar.html
  • Сергей М. © (14.09.09 14:11) [13]
    Поставь в заголовке поля "SUMMA" в поле precision ("Дес.разряд") значение 4.
    Что за идиот там поставил 0 и как он додумался до подсчета суммы с точностью до сотых долей копейки - ума не приложу)
  • Сергей М. © (14.09.09 14:14) [14]

    > Разбираться не стал


    Может оно и верно, но следовало бы разобраться, ибо те же грабли , вполне возможно, хлобыстнут позже.

    Следовало просто везде, где в проекте встречается слово Types, заменить его на, например, _Types
  • ruslan_as (14.09.09 14:15) [15]
    >>Сергей М.   Это программно реализуемо? Потому как это мне прийдется делать ежемесячно...  Спасибо за то, что помогаете...
  • Сергей М. © (14.09.09 14:20) [16]
    А ты уже попробовал [13] ?
    И убедился что теперь все в порядке ?
    Или какртина по-прежнему удручающая ?)
  • Anatoly Podgoretsky © (14.09.09 14:32) [17]
    Судя по всему это самопальный формат или что ни будь особое. Поскольку DBD ругается на попытки просмотра структуры, как раз по поводу размера.
  • Сергей М. © (14.09.09 14:47) [18]

    > Anatoly Podgoretsky ©   (14.09.09 14:32) [17]


    Угу.

    Либо свою прокладку к TDataSet писать либо править prec и size и в заголовке и в теле.
  • Anatoly Podgoretsky © (14.09.09 15:31) [19]
    > Сергей М.  (14.09.2009 14:47:18)  [18]

    Если все понятно с полями, то проще написать прямой доступ к файлу.
    Там есть и другие проблемы, например C255 - когда для dBase/FoxPro максимум 254
    Другие изначально символьные значения, но с цифрами, определены как N16.0
 
Конференция "Базы" » dbf файл - не видно чисел [D7, dBase, FoxPro]
Есть новые Нет новых   [134433   +21][b:0][p:0.001]