|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Коллеги, не получается. Разрыл, что программно можно выставить параметры "ODBC" и "{Microsoft Visual Foxpro driver}". Чуть позднее скину проект, чтобы говорить по существу. Может есть готовый рецепт, как доктор прописал? И что скажете про TDBF и VKDBF? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2021, 19:35 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shah, а что тебе надо-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.07.2021, 20:37 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
ъъъъъ, Для начала хочется просто считать данные из DBF и заполнить ими ListBox. Я приложу свой код, разумеется (по фото геморрой не лечат). Считаю правильно/современно - через FireDAC. Если я не прав - аргументируйте. Я из фокса пришел, разберусь. Но без местных гуру будет долго парадигму переиначивать. Спецы из других языков быстро учатся, это нужно им... ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 00:03 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Для начала надо разобраться какой именно у тебя DBF. Ибо под этим расширением скрываются несколько форматов. Раз файл пришёл из фокса, то да, ODBC драйвер для FoxPro это вполне сносный путь. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 00:23 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Да, коллеги (и сам) работаю со стандартным dBase 4. Есть интерес (пока просто заполнить ЛистБокс) работать под FireDAC. Будут приседания под работу с DBF - послушаю советы, вроде люди VK DBF советуют. Давайте завтра скину, что есть - посоветуете, что я делаю не так. Мне не зазорно в чем-то новом ковыряться и задавать тупые вопросы. Кто-то куда-то мигрирует, все непросто. Но осилим, мы из упрямых, но слушающих. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 00:55 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shah Для начала хочется просто считать данные из DBF и заполнить ими ListBox. ... Считаю правильно/современно - через FireDAC. Примеров работы с dbf столько, что ты качать устанешь. С чем лучше работать - наверное, никто уже не скажет, но 99.99%, что с dbf через FireDac никто не работал, ибо FireDac появился тогда, когда все dbf устарели. Что тебе делать - зависит от деталей. Если у тебя .dbf совместимы с прежними форматами, то одно, а если с новыми FoxPro - то совсем другое. Если тебе нужно просто импортироваться из dbf в другую СУБД - можно проще, а если работать с dbf дальше - то "проще" не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 00:59 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Через АДО не хочется, я потом свои обертки буду рисовать. Муторно. Советы (аргументированные) послушаю. Все что интересно. В Гугл играю, подробности найду. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 01:00 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 01:10 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Дмитрий, я очень внимателен, знаю Вы (ты) сильны в Делфях. Пните в правильное направление, я там, глядишь, разберемся. ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 01:23 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
ъъъъъ, Да, конечно. Просто поторопился и не знал, как тут ПРАВИЛЬНО оформляется кодес. Спасибо, я учту. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 01:25 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Не нашел, как исправить сообщение. Про теги кода понял. Сейчас пишу - теги вижу. А как отредактировать? Может мало сообщений? Зареган давно так-то... Чего не знаю? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 01:29 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shahколлеги (и сам) работаю со стандартным dBase 4. Обычный TTable тебе в руки. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:38 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Наверное. :) Хотелось бы FireDAC допинать, все же более продвинутая технология. Читаешь техфорумы - то одно хвалят, то другое... Каждый выбирает свой путь, это понятно. Хочется, чтобы было без ненужного мегатонного кодеса, без привязок а-ля BDE, масштабируемо и пр. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:48 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shahвсе же более продвинутая технология. Нет. В BDE используются потерянные технологии, которые FireDAC не умеет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 12:53 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shah, DBF? Что? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2021, 15:52 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
Для прямого доступа к DBF, наверное, проще поискать какой-нибудь компонент (из тех, что еще поддерживаются). Вот, например (сам не проверял): Component TDBF to access DBF table without BDE (D1..D7,D2005-2007/2009..XE8) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 02:42 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
основная проблема с ДБФ - совместимость индексов. Несмотря на то, что сам формат более-менее одинаков, индексы везде разные и могут быть несовместимы даже в пределах одной технологии, коих много: Фокс/Pro, ВижуалФокс, Клиппер, xBase, Harbour, DBF2/3 и еще куча экзотических вещей. Помницца, в свое время работал с клиппером. Была целая проблема подключить индексы. При этом на чтение все работало ОК, но при записи индекс крашился. Использовал Apollo. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 10:50 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
А что, удалить и пересоздать индексы нельзя? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 11:07 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
раньше использовал TDBF, но у них вроде поддержка закончилась, перешел на AdoTable. Проблем нет ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 11:32 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
X11 А что, удалить и пересоздать индексы нельзя? Вроде как "из дельфи" сие позволяет только Microsoft OLE DB Provider for Visual Fox. Чтобы "пересозать", нужно знать структуру удаляемого индекса, что не всегда известно. Индексы бывают созданные на базе вычисляемых выражений, без исходной среды, где реализованы фукции, используемые в выражениях - никак. Ну, при импорте данных из дбф в свою СУБД на индексы обычно можно плюнуть слюной, а если человек собирается продолжать использовать дбф, но из дельфи - это грустно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 12:45 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
L_argo основная проблема с ДБФ - совместимость индексов. Там есть и не основные - формат различается, и не все совместимо, даже для просто передачи данных. Я сталкивался с разным указанием codepage и кажись с разными ограничениями на размер полей, в частности который CHAR. Вроде как не может быть более 200, но опять же, не во всех версиях наверное. Ну и всякие там MEMO-поля которые вообще в отдельных файлах пишутся. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 14:07 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
ъъъъъ Вроде как "из дельфи" сие позволяет только Microsoft OLE DB Provider for Visual Fox. А Paradox/BDE? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 16:39 |
|
FireDAC - подключить DBF
|
|||
---|---|---|---|
#18+
AK-Shah, В FireDac есть поддержка Advantage Database Server. Скачав локального клиента можно работать и с dbf. Либо вообще использовать родные компоненты - ADS. Скачать их можно с сайта SAP или https://%5Dhttps://devzone.advantagedatabase.com%5B/url]https://devzone.advantagedatabase.com] (Правда не всегда работает) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2021, 18:17 |
|
|
start [/forum/topic.php?fid=58&msg=40083400&tid=2037169]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
155ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 522ms |
0 / 0 |