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

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

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

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

Ответ
 
Опции темы
Старый 19.06.2019, 12:42   #1
Alexcrool
 
Регистрация: 26.05.2016
Сообщений: 7
По умолчанию 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, 13:13   #2
Аватар
Модератор
Заслуженный модератор
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,049
По умолчанию

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

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


Нажмите на изображение для увеличения
Название: ksg.png
Просмотров: 144
Размер:	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
По умолчанию

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

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

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

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

Маска не помогает. При открытии 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


21:58.


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