Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/45: Рейтинг темы: голосов - 45, средняя оценка - 4.71
24 / 24 / 1
Регистрация: 11.04.2008
Сообщений: 540
1

Выгрузка данных из Delphi в Excel

03.12.2008, 20:28. Просмотров 8806. Ответов 7
Метки нет (Все метки)

Делаю выгрузку данных через процедуру SendtoExcel. При заполнении массива пишу следующий код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
Table1.DisableControls;
Table1.First;
while not Table1.eof do
    begin
    for j:=1 to Table1.FieldDefs.Count do
        begin
        ArrayData[Table1.RecNo,j]:=Table1.FieldByName(Table1.FieldDefs.Items [j-1].DisplayName).value;
        end;
    Table1.Next;
    end;
Table1.EnableControls;
На строку с ArrayData[Table1.RecNo,j] при выполнении программы выходит ошибка:
Variant or safe array index out of bounds
Что можно сделать???? Почему может не работать???? В другой проге данный код работает просто отлично... В чем может быть проблема???? Погите, пожалуйста:'(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2008, 20:28
Ответы с готовыми решениями:

Выгрузка в excel по запросу через delphi
здравствуйте помогите плиз создал базу много таблиц , заполняю её через delphi, хочу сделать...

Выгрузка из Delphi в Excel, слетает кодировка
При выгрузке из Delphi в Excel, и много чего перепробывал, и менять кодировки и по другому писать,...

Delphi и Excel. Генерация номеров и выгрузка в txt
Добрый. Имею таблицу excel, которая содержит диапазон значений вида 000001-001000, следом...

Выгрузка в excel при переходе с Delphi 7 на Rad Studio XE3
Здравствуйте! Проблема с выгрузкой в excel при переходе с Delphi 7 на Rad Studio XE3. В частности...

7
Почетный модератор
11166 / 4124 / 411
Регистрация: 12.06.2008
Сообщений: 11,943
03.12.2008, 21:53 2
А что такое ArrayData? Может, он отсчитывается с 0, а не с 1 ?
0
24 / 24 / 1
Регистрация: 11.04.2008
Сообщений: 540
04.12.2008, 05:22  [ТС] 3
Цитата Сообщение от Humanoid Посмотреть сообщение
А что такое ArrayData? Может, он отсчитывается с 0, а не с 1 ?
С j все нормально, вся ошибка идет из-за Table1.RecNo...
0
Супер-модератор
8737 / 2452 / 139
Регистрация: 07.03.2007
Сообщений: 11,690
04.12.2008, 09:33 4
ну вообще открою тайну, RecNo тянется еще из Paradox и только там работает корректно, и вообще зачем тебе этот Recno, разве нет других методов адресации
и вообще какой-то извращенный способ записи ИМХО...
а самый лучший способ - это трассировка, она покажет, где неправильно и почему
0
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
04.12.2008, 12:09 5
беда, наверное в том, что в RecNo есть значения NULL...
может так получится:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
Table1.DisableControls;
Table1.First;
RecNo := 1;//Заменим Table1.RecNo, своим индексом записи типа длинное целое
while not Table1.eof do
    begin
    for j:=1 to Table1.FieldDefs.Count do
        begin
        ArrayData[RecNo,j]:=Table1.FieldByName(Table1.FieldDefs.Items [j-1].DisplayName).value;
        end;    
    RecNo := RecNo + 1;//смещаем индекс
    Table1.Next;
    end;
Table1.EnableControls;
1
24 / 24 / 1
Регистрация: 11.04.2008
Сообщений: 540
04.12.2008, 16:34  [ТС] 6
все всем спасибо, разобралась сама
У меня в таблице, которую я хотела передать в Excel были удаленные строки (через DataBase), т.е. нумерация строк была нарушена(не попорядку), поэтому и глючилось. А без удаленных строк в таблице все работает нормально. БД у меня Dbase, а в предыдущей проге была Paradox(поэтому, наверно, в предыдущей и работало все нормально). Как-то можно обойти эту проблему, чтобы все выводилось нормально в таблице,где есть удаленные строки, через DataBase и не только?????
0
269 / 31 / 6
Регистрация: 27.08.2008
Сообщений: 156
08.12.2008, 09:58 7
У DBase'ов, чтобы удалить записи физически - нужно выполнять команду pack, в противном случае они просто помечены, как удаленные... Нужно эти таблички открыть в FoxPro или Dbf-Navigator'e и сделать pack, тогда все будет путем...
З.Ы. Кажись средствами BDE или ADO это сделать невозможно...
0
Супер-модератор
8737 / 2452 / 139
Регистрация: 07.03.2007
Сообщений: 11,690
08.12.2008, 10:09 8
Angry_Bobo, да ну ладно, есть для dbase и foxpro функция бде - DbiPackTable

Оленька, из-за того, что у вас был Paradox, RecNo работало корректно, потому что именно в парадоксе это свойство работает корректно, в остальных базах оно тянется наследием, но корректно не работает, вы наложите индекс и увидете, что там твориться начнет в таблице, в других БД использовать RecNo крайне не рекомендуется
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.12.2008, 10:09

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выгрузка данных из Программного модуля, работающего с базами данных, построенного на Delphi
Всем привет, работаю на модуле на предприятии, который предоставлен мне в виде программы уже...

Выгрузка данных в Excel
Здравствуйте! Помогите реализовать выгрузку данных в Excel. Задумка такая. Есть форма, на ней DGV...

Выгрузка данных из БД в excel
Итак есть вывод данных в excel но она заполняется с перовой строчки, а нужно что б началась...

Выгрузка данных в Excel
Добрый день! Посмотрите пожалуйста. Есть в обработке таблица значений, в которую я выгружаю данные...

Выгрузка данных из Excel в Ibexpert
Ребята, помогите! надо выгрузить данные из экселя в Ibexpert. можно просто в массив. не...

Выгрузка данных из Access в Excel
Здравствуйте форумчане! Подскажите в Access есть возможность выгрузить данные в Excel, как у меня в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.