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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.06.2019, 11:42   #1
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 8
По умолчанию 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 Кб, 25 просмотров)
Alexcrool вне форума Ответить с цитированием
Старый 19.06.2019, 12:13   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

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


ksg.png


"код" программы
Код:
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, 12:30   #4
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 8
По умолчанию

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

Последний раз редактировалось Alexcrool; 19.06.2019 в 12:33.
Alexcrool вне форума Ответить с цитированием
Старый 19.06.2019, 12:36   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

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

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

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


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из 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 02:27
FoxPro Delphi Nastya_S БД в Delphi 1 21.04.2008 16:50