Показать сообщение отдельно
Старый 15.02.2006, 05:03   #5  
gennady is offline
gennady
Участник
 
92 / 11 (1) +
Регистрация: 27.09.2004
Адрес: Иркутск
Как я это сделал, правда, в версии 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);