Всем доброго времени суток. Вопрос такой: в цикле я читаю Excel -файл и с помощью запроса вставляю прочитанные строки в БД, как можно при возникновении определенного условия (например если встретилась пустая строка ) пропустить данную итерацию цикла и перейти к следующей?
Проблема в том, что запрос выдает ошибку как только в Excel-файле встречается пустая строка. Сразу скажу, что убрать эти пустые строки в excel-файле нельзя - такая специфика задачи.
Пробовал в цикле использовать команду "Continue" - не помогает.
Ниже привожу кусок кода:
procedure TForm1.Button1Click(Sender: TObject);
var
tabnomer,count:integer;
sum: string;
excel:variant;
begin
count_column_row;
data();
excel:=createoleobject('excel.application');
excel.workbooks.open('c:\card.xls');
adoquery1.Active:=false;
adoquery1.SQL.Clear;
for count:=4 to rows do begin
tabnomer:=excel.workbooks[1].worksheets[1].cells[count,2];
sum:=excel.workbooks[1].worksheets[1].cells[count,7];
if (length(inttostr(tabnomer))=0) and (length(sum)=0) then Continue;
adoquery1.SQL.add('insert into T$SHTRAF (F$CSCHETK, F$CSUBSCHK,F$DATAN, F$DATANSK, F$DATOK, F$FLAG3, F$NAMEPL1, F$POMETKA, F$SUMUD, F$TABN, F$VIDUD, F$PRPER)');
adoquery1.SQL.add('values ('+'51'+', '+''''+'01'+''''+', '+''''+label3.Caption+''''+', '+''''+label3.Caption+''''+', '+''''+label3.Caption+''''+', '+''''+'+'+''''+', '+''''+label4.Caption+''''+', '+''''+'+'+''''+', '+''''+sum+''''+', '+''''+inttostr(tabnomer)+''''+', '+'68'+', '+'1'+')');
adoquery1.SQL.Add('update T$SHTRAF set F$CLSCH=(select F$NREC from T$LSCHET where F$TABN='+''''+inttostr(tabnomer)+''''+'), F$TPERSON=(select F$NREC from T$PERSONS where F$TABNMB='+''''+inttostr(tabnomer)+''''+') where F$TABN='+''''+inttostr(tabnomer)+''''+' and F$SUMUD='+''''+sum+''''+' ');
adoquery1.ExecSQL;
adoquery1.SQL.Clear;
end;
excel.DisplayAlerts := False;
excel.Quit;
adoquery1.Active:=true;
end;