powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - подключить DBF
25 сообщений из 43, страница 1 из 2
FireDAC - подключить DBF
    #40083167
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, не получается. Разрыл, что программно можно выставить параметры "ODBC" и "{Microsoft Visual Foxpro driver}".

Чуть позднее скину проект, чтобы говорить по существу. Может есть готовый рецепт, как доктор прописал?

И что скажете про TDBF и VKDBF?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083170
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK-Shah,

а что тебе надо-то?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083180
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,


Для начала хочется просто считать данные из DBF и заполнить ими ListBox.
Я приложу свой код, разумеется (по фото геморрой не лечат).

Считаю правильно/современно - через FireDAC. Если я не прав - аргументируйте. Я из фокса пришел, разберусь. Но без местных гуру будет долго парадигму переиначивать. Спецы из других языков быстро учатся, это нужно им... ;)
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083184
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала надо разобраться какой именно у тебя DBF. Ибо под этим расширением скрываются
несколько форматов. Раз файл пришёл из фокса, то да, ODBC драйвер для FoxPro это вполне
сносный путь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083187
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Да, коллеги (и сам) работаю со стандартным dBase 4. Есть интерес (пока просто заполнить ЛистБокс) работать под FireDAC. Будут приседания под работу с DBF - послушаю советы, вроде люди VK DBF советуют.

Давайте завтра скину, что есть - посоветуете, что я делаю не так. Мне не зазорно в чем-то новом ковыряться и задавать тупые вопросы. Кто-то куда-то мигрирует, все непросто. Но осилим, мы из упрямых, но слушающих.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083188
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK-Shah
Для начала хочется просто считать данные из DBF и заполнить ими ListBox.
...
Считаю правильно/современно - через FireDAC.

Примеров работы с dbf столько, что ты качать устанешь.
С чем лучше работать - наверное, никто уже не скажет, но 99.99%, что с dbf через FireDac никто не работал, ибо FireDac появился тогда, когда все dbf устарели.

Что тебе делать - зависит от деталей. Если у тебя .dbf совместимы с прежними форматами, то одно, а если с новыми FoxPro - то совсем другое. Если тебе нужно просто импортироваться из dbf в другую СУБД - можно проще, а если работать с dbf дальше - то "проще" не получится.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083189
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через АДО не хочется, я потом свои обертки буду рисовать. Муторно.

Советы (аргументированные) послушаю. Все что интересно. В Гугл играю, подробности найду.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083190
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
program Project1;

uses
Vcl.Forms,
Unit1 in 'Unit1.pas' {Form1};


{$R *.res}

begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Form1.ReadKeySection();
Form1.FillListShizd();
Application.Run;

end.




unit Unit1;

interface

uses
Winapi.Windows, Winapi.Messages,
System.SysUtils, System.Variants, System.Classes, System.IniFiles,
Vcl.Controls, Vcl.StdCtrls, Vcl.Graphics, Vcl.Forms, Vcl.Dialogs, Vcl.ToolWin, Vcl.ComCtrls,
FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
FireDAC.Phys, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS,
FireDAC.DApt.Intf, FireDAC.DApt, Data.DB, FireDAC.Comp.DataSet,
FireDAC.Comp.Client, FireDAC.Phys.ODBC, FireDAC.Phys.MySQLDef,
FireDAC.Phys.MySQL, FireDAC.Phys.ODBCDef, FireDAC.Phys.ODBCBase ;
// Dbf in 'dbf.pas';


type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ListBox1: TListBox;
ListBox2: TListBox;
StatusBar1: TStatusBar;
ToolBar1: TToolBar;
FDConnection1: TFDConnection;
FDTable1: TFDTable;
FDPhysODBCDriverLink1: TFDPhysODBCDriverLink;

procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FillListShizd;

private
{ Private declarations }

public
{ Public declarations }
procedure ReadKeySection;

end;

var
Form1: TForm1;
lcP1470SRV: String;
lcP1471SRV: String;
lcP1472SRV: String;



implementation

{$R *.dfm}
{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Îáðàáîòêà XML');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;




procedure TForm1.ReadKeySection();
var
oIni: TIniFile;
lcIniFileName: String;

begin
lcIniFileName := 'setup.ini';
oIni := TIniFile.Create( ExtractFilePath( Application.ExeName ) + lcIniFileName );

lcP1470SRV := oIni.ReadString('PATH_IN', 'P1470SRV', '');
lcP1471SRV := oIni.ReadString('PATH_IN', 'P1471SRV', '');
lcP1472SRV := oIni.ReadString('PATH_IN', 'P1472SRV', '');

ShowMessage(lcP1470SRV + ' ' + lcP1471SRV + ' ' + lcP1472SRV);
end;





procedure TForm1.FillListShizd();
var
oFDConn: TFDConnection;
begin

oFDConn := FDConnection1.Create(nil);
oFDConn.Params.Clear;
oFDConn.Params.Values['Login Prompt'] := 'False';
oFDConn.Params.Values['DriverID'] := 'ODBC';
oFDConn.Params.Values['ODBCDriver'] := '{Microsof Visual FoxPro Driver}';
//oFDConn.Params.Values['ODBCAdvanced'] := 'SourceDB=' + ExtractFilePath(lcP1470SRV) + ';SourceType=DBF;Exclusive=No;BackgroundFetch=Yes;Collate=Machine';
oFDConn.Params.Values['Database'] := ExtractFilePath(lcP1470SRV);
// FDConnection1.DriverName := 'Microsof Visual FoxPro Driver';
oFDConn.Connected := True;


FDTable1.Connection := FDConnection1;
FDTable1.TableName := ExtractFileName(lcP1470SRV);



// FDTable1.Active := True; '


FDTable1.Open;

while not FDTable1.Eof do
begin
ListBox1.Items.Add(FDTable1.FieldByName('SHIZD').AsString);
end;
FDTable1.Close;



// TFileP1470 := TDBF.Create(nil);
// TFileP1470.TableName := ExtractFileName(lcP1470SRV);
// TFileP1470.Open;

// while not TFileP1470.EOF do
// begin
// ListBox1.Items.Add(TFileP1470.FieldByName('SHIZD').AsString);
// TFileP1470.Next;
// end;
// TFileP1470.Close;

//TFileP1470 := TTable.Create(Application);
//table2.TableType := ttFoxPro; // cpdbf() = 1251
//TFileP1470.TableType := ttDBase;
//TFileP1470.DatabaseName := ExtractFilePath(lcP1470SRV);
//TFileP1470.TableName := ExtractFileName(lcP1470SRV);
//TFileP1470.Active := true;



//TFileP1470.First;
//while not TFileP1470.Eof do
// begin
// ListBox1.Items.Add(TFileP1470.Fields[1].AsString);
// TFileP1470.Next;
// end;
//TFileP1470.Close;



end;

end.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083191
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083192
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий, я очень внимателен, знаю Вы (ты) сильны в Делфях. Пните в правильное направление, я там, глядишь, разберемся. ;)
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083193
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ,

Да, конечно. Просто поторопился и не знал, как тут ПРАВИЛЬНО оформляется кодес. Спасибо, я учту.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083195
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не нашел, как исправить сообщение. Про теги кода понял. Сейчас пишу - теги вижу. А как отредактировать? Может мало сообщений? Зареган давно так-то... Чего не знаю?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083209
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shahколлеги (и сам) работаю со стандартным dBase 4.

Обычный TTable тебе в руки.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083213
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Наверное. :)
Хотелось бы FireDAC допинать, все же более продвинутая технология. Читаешь техфорумы - то одно хвалят, то другое... Каждый выбирает свой путь, это понятно. Хочется, чтобы было без ненужного мегатонного кодеса, без привязок а-ля BDE, масштабируемо и пр.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083215
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shahвсе же более продвинутая технология.

Нет. В BDE используются потерянные технологии, которые FireDAC не умеет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083225
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-Shah,

DBF? Что?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083275
crossa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Для прямого доступа к DBF, наверное, проще поискать какой-нибудь компонент (из тех, что еще поддерживаются). Вот, например (сам не проверял):
Component TDBF to access DBF table without BDE (D1..D7,D2005-2007/2009..XE8)
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083319
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
основная проблема с ДБФ - совместимость индексов.
Несмотря на то, что сам формат более-менее одинаков, индексы везде разные и могут быть несовместимы даже в пределах одной технологии, коих много: Фокс/Pro, ВижуалФокс, Клиппер, xBase, Harbour, DBF2/3 и еще куча экзотических вещей.

Помницца, в свое время работал с клиппером. Была целая проблема подключить индексы. При этом на чтение все работало ОК, но при записи индекс крашился. Использовал Apollo.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083322
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, удалить и пересоздать индексы нельзя?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083325
cptngrb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
раньше использовал TDBF, но у них вроде поддержка закончилась, перешел на AdoTable. Проблем нет
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083346
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
X11
А что, удалить и пересоздать индексы нельзя?

Вроде как "из дельфи" сие позволяет только Microsoft OLE DB Provider for Visual Fox. Чтобы "пересозать", нужно знать структуру удаляемого индекса, что не всегда известно. Индексы бывают созданные на базе вычисляемых выражений, без исходной среды, где реализованы фукции, используемые в выражениях - никак.
Ну, при импорте данных из дбф в свою СУБД на индексы обычно можно плюнуть слюной, а если человек собирается продолжать использовать дбф, но из дельфи - это грустно.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083371
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo
основная проблема с ДБФ - совместимость индексов.

Там есть и не основные - формат различается, и не все совместимо, даже для просто передачи данных.
Я сталкивался с разным указанием codepage и кажись с разными ограничениями на размер полей, в частности который CHAR.
Вроде как не может быть более 200, но опять же, не во всех версиях наверное.
Ну и всякие там MEMO-поля которые вообще в отдельных файлах пишутся.
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083400
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
Вроде как "из дельфи" сие позволяет только Microsoft OLE DB Provider for Visual Fox.


А Paradox/BDE?
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083426
vkorshun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK-Shah,

В FireDac есть поддержка Advantage Database Server. Скачав локального клиента можно работать и с dbf. Либо вообще использовать родные компоненты - ADS. Скачать их можно с сайта SAP или https://%5Dhttps://devzone.advantagedatabase.com%5B/url]https://devzone.advantagedatabase.com] (Правда не всегда работает)
...
Рейтинг: 0 / 0
FireDAC - подключить DBF
    #40083493
sg729
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AK-Shah
Да, коллеги (и сам) работаю со стандартным dBase 4.

TTable (BDE).
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - подключить DBF
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]