Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > БД в Delphi
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 19.06.2019, 12:42   #1
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 7
Репутация: 10
По умолчанию Delphi + FoxPro

Добрый день!
Имеется таблица dbf. В ней поле K_KSG Numeric (13,10).
Открываю таблицу в Delphi XE4 и это поле содержит только целые числа, а должно дробное.
Открывал через BDE Table, TADOQuery Microsoft dBASE Driver, даже через Visual FoxPro OLE DB Provider, который я установил сайта Microsoft. Результат один и тот же. Вместо вещественного числа - целое.
Может кто-то помочь открыть файл правильно, что бы данные были верны?

P.S. Программа "Редактор DBF" открывает верно.
Вложения
Тип файла: rar k_ksg.rar (19.8 Кб, 20 просмотров)
Alexcrool вне форума   Ответить с цитированием
Старый 19.06.2019, 13:13   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,925
Репутация: 6688
По умолчанию

Там по идее тип возвращаемого поля должен быть ftBCD, а у него в делфи ограничение 4 знака после точки. На отображение можно у поля DisplayFormat установить, чего-то типа '#0.##########'. Со свойством EnableBCD у адошных компонет поиграться, но возможна потеря точности. Или искать уже адаптированный датасет
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар на форуме   Ответить с цитированием
Старый 19.06.2019, 13:14   #3
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 25,878
Репутация: 5617
По умолчанию

кинул на форму TDBF, привязал к гриду.
всё нормально вроде бы
Dbf_tview(exe).rar
пароль на архив 1234


Нажмите на изображение для увеличения
Название: ksg.png
Просмотров: 93
Размер:	42.3 Кб
ID:	97039


"код" программы
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, dbf, dbf_dbffile, dbf_fields, StdCtrls;

type
  Tform1 = class(TForm)
    Dbf1: TDbf;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  form1: Tform1;

implementation

{$R *.dfm}

procedure Tform1.FormCreate(Sender: TObject);
begin
  // если в заголовке DBF файла не задана кодовая страница,
  //   то "по умолчанию" будем считать,
  // что кодовая страница 866 (она же OEM, она же DOS кодировка)
  DbfGlobals.DefaultOpenCodePage := GetOEMCP;

  dbf1.Open;

end;

end.
p.s. не ожидал, что тема Delphi + FoxPro актуальна в 2019 году

p.p.s. TBDF - это очень простой формат. По сути - это тестовый файл с заголовком. Его очень просто читать и писать.
(правда, только не с memo полями, там всё непросто).
Serge_Bliznykov вне форума   Ответить с цитированием
Старый 19.06.2019, 13:30   #4
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 7
Репутация: 10
По умолчанию

Спасибо за быстрый ответ.
У меня отсутствует TDBF. Если никакого другого решения не найду буду использовать его. Сам FoxPro не использую, но мне кидают классификаторы и справочники в этом формате для обновления моих таблиц. Завтра попробую с маской. На сегодня мой раб. день кончился.
Все кроме поставщика возращают это поле как TBCDField а поставщик FoxPro как TFmtBCDField.

Последний раз редактировалось Alexcrool; 19.06.2019 в 13:33.
Alexcrool вне форума   Ответить с цитированием
Старый 19.06.2019, 13:36   #5
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Адрес: Северодонецк.ua
Сообщений: 18,925
Репутация: 6688
По умолчанию

Можно попробовать создать адошный датасет с предопределенными полями, и для таких полей вместо TBCDField создать TFMTBCDField поля. У них уж точно нет такого ограничения. Это в теории, не было необходимости заниматься такими вещами )
Цитата:
поставщик FoxPro как TFmtBCDField
Так там должно быть по идее все нормально, разве что маску на отображение еще добавить
__________________
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 19.06.2019 в 13:38.
Аватар на форуме   Ответить с цитированием
Старый 20.06.2019, 06:39   #6
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 7
Репутация: 10
По умолчанию

Маска не помогает. При открытии dbf стандартными средствами поле K_KSG отображается целочисленным.
Может кто-то еще предложить варианты, кроме применения TDBF?
Alexcrool вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из foxpro в delphi? Vilinchik БД в Delphi 3 17.12.2011 13:45
FoxPro и Delphi DimOn4Ik БД в Delphi 2 06.05.2010 13:41
Delphi и FoxPro Anatol77 Помощь студентам 1 22.08.2009 13:28
FOXPRO и Delphi werser БД в Delphi 3 23.01.2009 03:27
FoxPro Delphi Nastya_S БД в Delphi 1 21.04.2008 16:50


09:48.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.