Как я это сделал, правда, в версии 3.6. Посмотрите, может, подойдет.
// Connection = 'Microsoft ActiveX Data Objects 2.8 Library'.Connection
//Path = путь доступа к DBF файлу
IF NOT ISCLEAR(Connection) THEN
CLEAR(Connection);
CREATE(Connection);
ConnStr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + Path + ';Extended Properties=DBASE IV;';
Connection.Open(ConnStr);
// RecSet = 'Microsoft ActiveX Data Objects 2.8 Library'.Recordset
//Field = 'Microsoft ActiveX Data Objects 2.8 Library'.Field
IF ISCLEAR(RecSet) THEN
CREATE(RecSet);
RecSet.Open('select * from ' + DBFfile + ' where INSTR(VALUE,"value") = 1',Connection);
RecSet.MoveFirst;
WHILE NOT RecSet.EOF DO BEGIN
NaviVal := FORMAT(RecSet.Fields.Item('VALUE').Value);
//…
RecSet.MoveNext;
END;
RecSet.Close;
Connection.Close;
//Эта фун-я применяется для тех импорируемых полей, которые могут содержать пустые значения
Result := '';
EVALUATE(Size, FORMAT(RecSet.Fields.Item(FieldName).ActualSize));
IF Size <> 0 THEN
Result := FORMAT(RecSet.Fields.Item(FieldName).Value);
EXIT(Result);
|