Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
ВнизИмпорт данных из Access в Excel. Unaccessible Value Найти похожие ветки
← →
Phoenix9000 © (2005-05-19 14:05) [0]Доброго времени суток, уважаемые мастера.
Я столкнулся с проблеммой и все никак не могу ее решить.
Программа импортирует данные из базы данных ACCESS в Excel.
Используется компонент dataset, в котором записан запрос.
При установки фильтра на данный компонент и дальнейшее импортирование данных в одном столбце набора данных стоят данные даты: например "01.01.1900". Все это работает. Но в одной строке таблицы в бд вместо нормального написания даты стоит значение "01.01.900". Пропущена единица в годе. В этом случае программа вылетает.
Фрагмент кода и значения переменных в момент вылета:
for i:=2 to a do
begin
for j:= 1 to b do
begin
if form1.adodataset3.Fields[j-1].Value <> Null then
XLApp.Workbooks[1].WorkSheets[1].Cells[i,j]:=form1.adodataset3.Fields[j-1].Value;
XLApp.Visible:=true;
end;
form1.adodataset3.Next;
end;
Значения до вылета в form1.adodataset3.Fields[j-1].Value - 01.01.1900
При следующей итерации цикла значение form1.adodataset3.Fields[j-1].Value - Inaccessible Value
Как раз сдесь программа вылетает.
Я учел что если значение не нулевое, тогда запись в ячейку Excel не идет. (if form1.adodataset3.Fields[j-1].Value <> Null then ...)
Но как можно "объяснить" программе, что если она натыкается на подобное значение, она должна его либо пропустить, либо записать в Excel как есть.
Откликнитесь, кто может.
приемлемы любые решения.
Заранее спасибо.
← →
lexer © (2005-05-19 14:16) [1]Долго пытался вникнуть в вопрос, никак не пойму, у тебя что в БД дата в чаре хранится?
Как вариант:for i:=2 to a do
begin
for j:= 1 to b do
try
if form1.adodataset3.Fields[j-1].Value <> Null then
XLApp.Workbooks[1].WorkSheets[1].Cells[i,j]:=form1.adodataset3.Fields[j-1].Value;
XLApp.Visible:=true;
except
{чтоб программа не вылетатла}
end;
form1.adodataset3.Next;
end;
← →
Lexer © (2005-05-19 14:17) [2]кстати, вынеси XLApp.Visible:=true после этих циклов
← →
sniknik © (2005-05-19 14:19) [3]> Программа импортирует данные из базы данных ACCESS в Excel.
можно просто
SELECT * INTO Table1 IN "D:\ExelBook.xls" "Excel 8.0;" FROM Table1
книга екселя (ExelBook.xls) может и не существовать, сама создастся.
запишет (должно) именно "как есть"
← →
yk © (2005-05-19 14:19) [4]Возможно проблема в типе ячеик в Excel
← →
Phoenix9000 © (2005-05-19 14:31) [5]Большое спасибо всем.
To Lexer
Я думал о том же, записать просто не мог. :)
а XLApp.Visible:=true я написал для того, чтобы было видно , на какой записи в Excel прогу клинит. В базе потом очень быстро найти можно где косяк.
to Sniknik
Этот способ опробую. Он работать быстрее бутет.
Еще раз всем большое спасибо!!!!!!!!!!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.06.29;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c