Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Импорт данных из 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.034 c
11-1086540713
Deimos
2004-06-06 20:51
2005.06.29
Linux


1-1118060645
Goga
2005-06-06 16:24
2005.06.29
Доступ к реестру из службы


14-1117448242
Yegorchic
2005-05-30 14:17
2005.06.29
Сертификат "Лаборант-программист"


14-1117529818
Jeer
2005-05-31 12:56
2005.06.29
Miss 2005


8-1109931722
Gear
2005-03-04 13:22
2005.06.29
Проблема с ACM