Всем доброго.
(В инете не нашел толкового решения только причину=(( )
При запросе выскакивает сообщение E_FAIL при просмотре 1 из записей dbf файла.
Немного кода для наглядности=)
Код:
//Строка подключения и провайдер (с этим проблем нет)
.ConnectionString :=
'Provider=VFPOLEDB.1;Data Source=d:\post2\;Mode=Read;User ID="admin";Password="";Mask Password=False;'+
'Cache Authentication=False;Encrypt Password=False;Exclusive=True;DELETED=TRUE;';
//Сам запрос с проблемой
sqltext :='Select '+
'IIF(ISNULL(TYPEM),0,TYPEM) AS TYPE, '+
'IIF(ISNULL(SVOD.NAME),0,SVOD.NAME) AS NAME, '+
'IIF(ISNULL(CURMON),0,CURMON) AS CURMON, '+
'IIF(ISNULL(WORKDAYS),0,WORKDAYS) AS WORKDAYS, '+
'IIF(ISNULL(SVOD.CURSUM),0,SVOD.CURSUM) AS CURSUM, '+
'IIF(ISNULL(FILTERF),0,FILTERF) AS FILTERF, '+
'IIF(ISNULL(SVOD.CURSUM1),0,SVOD.CURSUM1) AS CURSUM1 '+
'From "'+DBPAth+'SVOD.DBF" AS SVOD '
Проверками IIF пробовал найти проблему(
Код:
//Цикл перебора данных
for i := 1 to rCount do
begin
pb1.Position := i;
if ConvertOemToAnsi(ds1.DataSet.FieldByName('NAME').AsString) = '' then
begin
strngrdsvod.Cells[0,strngrdsvod.RowCount - 1] := ds1.DataSet.FieldByName('TYPEM').AsString;
strngrdsvod.Cells[1,strngrdsvod.RowCount - 1] := ConvertOemToAnsi(ds1.DataSet.FieldByName('NM').AsString);
strngrdsvod.Cells[2,strngrdsvod.RowCount - 1] := ds1.DataSet.FieldByName('WORKDAYS').AsString;
strngrdsvod.Cells[3,strngrdsvod.RowCount - 1] := ds1.DataSet.FieldByName('CURSUM').AsString;
strngrdsvod.Cells[4,strngrdsvod.RowCount - 1] := ds1.DataSet.FieldByName('CURSUM1').AsString;
end else
begin
strngrdsvod.Cells[0,strngrdsvod.RowCount - 1] := ConvertOemToAnsi(ds1.DataSet.FieldByName('NAME').AsString);
if ds1.DataSet.FieldByName('FILTERF').AsString = 'A' then
strngrdsvod.Cells[1,strngrdsvod.RowCount - 1] := ds1.DataSet.FieldByName('CURSUM').AsString;
end;
strngrdsvod.RowCount := strngrdsvod.RowCount + 1;
if i <> rCount then
ds1.DataSet.FindNext;
Application.ProcessMessages;
end;
Тут и возникает беда =( первые 3 строки выводятся без проблем на 4-й вылетает эта E_FAIL.
Поля таблицы:
svod