![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Импорт данных из Access в Excel. Unaccessible Value [D6, ACCESS]
Phoenix9000 © (2005-05-19 14:05:00)Доброго времени суток, уважаемые мастера.
Я столкнулся с проблеммой и все никак не могу ее решить.
Программа импортирует данные из базы данных 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 как есть.
Откликнитесь, кто может.
приемлемы любые решения.
Заранее спасибо.
Phoenix9000 (2005-05-19 14:31:00) [1]Большое спасибо всем.
To Lexer
Я думал о том же, записать просто не мог. :)
а XLApp.Visible:=true я написал для того, чтобы было видно , на какой записи в Excel прогу клинит. В базе потом очень быстро найти можно где косяк.
to Sniknik
Этот способ опробую. Он работать быстрее бутет.
Еще раз всем большое спасибо!!!!!!!!!!
sniknik (2005-05-19 14:19:00) [2]> Программа импортирует данные из базы данных ACCESS в Excel.
можно просто
SELECT * INTO Table1 IN "D:\ExelBook.xls" "Excel 8.0;" FROM Table1
книга екселя (ExelBook.xls) может и не существовать, сама создастся.
запишет (должно) именно "как есть"
yk (2005-05-19 14:19:00) [3]Возможно проблема в типе ячеик в Excel
Lexer (2005-05-19 14:17:00) [4]кстати, вынеси XLApp.Visible:=true после этих циклов
lexer (2005-05-19 14:16:00) [5]Долго пытался вникнуть в вопрос, никак не пойму, у тебя что в БД дата в чаре хранится?
Как вариант:
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;