Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Импорт данных из 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо