Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод данных из SQL в Excel, [?] 
V
    Опции темы
pseud
Дата 16.8.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  16.8.2007,  13:33 Найти цитируемый пост)
 Потому что я его не понимаю совсем


но если кто-то доработает твой код до того, что тебе нужно
ты получается тоже не поймешь и придется объяснять

тебе нужно кому-то потом объяснить, что написано? или главное чтоб экспорт происходил?

эту процедуру можно немножко доработать и использовать ее в любом проекте без изменений
а понимание придет позже

ну постарайся: var - переменные, const - константы и т.д. smile


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 16.8.2007, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Цитата(pseud @  16.8.2007,  14:00 Найти цитируемый пост)
а понимание придет позже


А мне не нужно позже. Я хочу ПОНИМАТЬ, а не тупо списывать. smile
Чтобы при необходимости я могла все, что нужно/захочется исправить.

Что такое переменные и константы я знаю smile))))
Я могу тебе написать все, что мне не понятно по твоему скрипту smile))

Код

xlWBATWorksheet = -4167;
 xlContinuous = 1;

Откуда взялись эти числа? Почему именно они?

Код

Screen.Cursor := crHourGlass;

Что делает это? (и сразу зачем оно нужно) и откуда взялась crHourGlass? Какое у нее значение? 

Код

XLWorkbook := XLApp.Workbooks.Add(xlWBATWorkSheet);
      XLSheet := XLWorkbook.Sheets[1];

Эти два тоже не понятны. Опять же откуда берутся значения после знака присвоить?

Код

iRowsCount := ADOQuery1.RecordCount + 1;

Это я так понимаю переход на новый столец?

(остальное потом. думаю. что на первый раз хватит)


И ГЛАВНЫЙ вопрос: ты сказал, что на больших таблицах он будет тормозить.
Как ты думаешь сколько ему потребуется времени, чтобы обработать около 80.000 строк с 30-40 столбцами(в которых приемущественно строки(не цифры)) ?
smile))))
PM MAIL   Вверх
pseud
Дата 16.8.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
Откуда взялись эти числа? Почему именно они?

делай раз:
1. запусти Excel
2. сервис -> макрос -> редактор VisualBasic
3. View -> ObjectBrowser
4. Во второй комбобокс вбей xlWBATWorksheet, бинокль, изучи (внизу описано)
5. вбей xlContinuous - изучи

эти говорящие константы я ввел именно для понимания, а мог ведь просто передать цифири

Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
Что делает это? (и сразу зачем оно нужно) и откуда взялась crHourGlass? Какое у нее значение? 

делай два:
экспорт наш может длиться очень долго - покажем как юзеру на это время ЧасикиСтеклянные (HourGlass)

Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
Эти два тоже не понятны. Опять же откуда берутся значения после знака присвоить?

это свойства COM объекта, о которых дельфи ничего не знает, а мы только догадываемся.
если у тебя еще открыт VisualBasic, то поковыряв его еще немножко, ты все поймешь.
Впринципе в дельфи есть страничка Servers где висят объекты, которые предоставляют эти непонятности в более понятным способом. Но я их не юзал.

Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
Это я так понимаю переход на новый столец?

все переменные говорящие
iRowsCount - количесвто строк в Excel файле

Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
И ГЛАВНЫЙ вопрос

если уберешь строку 
Код

XLRange.Borders.LineStyle := xlContinuous;

то пару секунд




--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 16.8.2007, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Const xlWBATWorksheet = -4167 (&HFFFFEFB9)
    Member of Excel.XlWBATemplate
 
Единственное, что я из этого поняла, что это какая-то константа в Экселе smile
А почему у нее такое значение?

Const xlContinuous = 1
    Member of Excel.XlLineStyle

вообще непонятное число... Зачем вводить константу равную 1? Если название этой константы в 12 раз длинее цифры 1? smile

Цитата(pseud @  16.8.2007,  14:40 Найти цитируемый пост)
о которых дельфи ничего не знает

Как же он тогда поймет, что написано?

Код

XLWorkbook := XLApp.Workbooks.Add(xlWBATWorkSheet);
      XLSheet := XLWorkbook.Sheets[1];

О чем говорит XL?

Код

iColumnsCount:= ADOQuery1.FieldCount;

Что значит данная строчка?


Еще:
Я не вижу, где я должа прописать свою базу. И у меня в базе не одна таблица а около 30...
И путь к эксель-файла тоже не вижу. 
:((((
PM MAIL   Вверх
pseud
Дата 16.8.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
А почему у нее такое значение?


а потому, что другие значения заняты другими константами

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
вообще непонятное число... Зачем вводить константу равную 1? Если название этой константы в 12 раз длинее цифры 1? 


ты соврала
Цитата(Yantarik @  16.8.2007,  14:19 Найти цитируемый пост)
Что такое переменные и константы я знаю ))))


тебе понятней так?
Код

XLWorkbook := XLApp.Workbooks.Add(-4167);
XLRange.Borders.LineStyle := 1;

или так?
Код

XLWorkbook := XLApp.Workbooks.Add(xlWBATWorkSheet);
XLRange.Borders.LineStyle := xlContinuous;


все переменные и константы должны быть говорящие, чтоб ты сама или кто-то после тебя могли быстро разобраться в коде.
xlContinuous:
xl - приставка, говорящая что мы работаем с Excel
Continuous - (англ.) непрерывный.

а о чем скажет цифра 1????????????

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
Как же он тогда поймет, что написано?

никак не поймет
просто попытается вызвать указанные тобой методы
если ты ошиблась хоть в одной буковке - получешь Error

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
О чем говорит XL?

говорящая приставка (см.выше) - говорящая не для Delphi - ей до лампочки - говорящая для программиста


Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
Что значит данная строчка?

iColumnsCount (говорящая переменная)
i - Integer
Columns - колонки
Count - количество

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
Я не вижу, где я должа прописать свою базу

ADOQuery1 - это компонент куда ты отобрала свои данные по SQL

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
 И у меня в базе не одна таблица а около 30...

Одним заходом?

Цитата(Yantarik @  16.8.2007,  16:13 Найти цитируемый пост)
И путь к эксель-файла тоже не вижу. 

А при обычном открытии Excel ты видишь новый файл а пути его не видишь.
Мы в фоне все экспортим и открываем эксель.
При попытке закрыть эксель спросит - сохранить?
Можно конечно и программно сохранить.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 17.8.2007, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Отвлеченно:
Из-за чего может вылетать ошибка:
"Операция не допускается, если объект открыт"

На всякий случай: при запуске кода файл успевается открыться, а до строчки закрытия файла он не доходит. Я делаю программ ресет... То есть получается, что я его не закрываю при повторном перезапуске... Идия закрыть файл в самом начале почему-то не работает(наверное и не должна)...
PM MAIL   Вверх
pseud
Дата 17.8.2007, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  17.8.2007,  11:24 Найти цитируемый пост)
Отвлеченно


отвлеченно не стоит
новый вопрос = новая тема

да и из описания ничего не понял - код - место ошибки
это работа с файлами? если да то новый вопрос причем не в эту ветку
или все тот же экспорт в Excel


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 17.8.2007, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Цитата(pseud @  17.8.2007,  12:37 Найти цитируемый пост)
или все тот же экспорт в Excel 

Все та же работа с Excel.

Я нажимаю F9, программа начинает выполняться. В процессе выполнения открывается файл(экселевский), потом зацикливается. Я ее останавливаю, что-то правлю, (когда понимаю, в чем ошибка) и запускаю заново. И после этого он выдает такую ошибку.
PM MAIL   Вверх
Yantarik
Дата 17.8.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



По поводу твоего кода.
1. Я так и не поняла, как мне прописать свою базу?
ADOQuery1 описывается как TADODataSet?

2. При выполнении выскакивает пустая форма. Откуда она берется? 

p.s. я так полагаю, чтобы для меня переменные были говорящими надо где-то с полгода программить. smile)) Для меня пока это темный лес.
Поняла, что в название переменных/констант вы вкладываете их сущность. 
И не поняла, зачем константа равная единице. 
PM MAIL   Вверх
pseud
Дата 17.8.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  17.8.2007,  12:56 Найти цитируемый пост)
Все та же работа с Excel.


какой метод используешь? тот что я написал? или свой?

предположу:
ошибка происходит из-за аварийного завершения проги, т.к. объект Excel остается подвисший и при следующей попытке его создать  - еррор.

Ctrl+Alt+Del - Диспетчер задач - закл.Процессы - видим висящий EXCEL.EXE - убей его

а вообще чтоб такого не происходило необходима конструкция
Код

try 
  создать объект
finally // выполниться даже при вылетании эксепшена
  убить объект
end;


Добавлено через 9 минут и 44 секунды
ты в своем примере используешь ADODataSetSource
это я полагаю DataSet в который отобраны данные для экспорта

можешь использовать его же
тогда в моем коде все места ADOQuery1 замени на ADODataSetSource

видимо надо с нуля:
  •  Создаешь новый проект
  •  Кидаешь на него свой ADODataSetSource и видимо ADOConnetion 
  •  Гглянь как эти компоненты в твоем проекте были настроены и настрой здесь так же.
  •  Кидаешь кнопку Button1
  •  Двойной клик по кнопке - попадаем в процедуру нажатия кнопки
    там пишем мой код
  •  F9
  •  Жми Button1.



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 17.8.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Цитата(pseud @  17.8.2007,  13:46 Найти цитируемый пост)
какой метод используешь?

Эта ошибка возникает при моем методе. Подвисшего екселя нет.

Цитата(pseud @  17.8.2007,  13:46 Найти цитируемый пост)
создать объект
finally // выполниться даже при вылетании эксепшена
  убить объект

Что за объект? и почему его потом убить?
PM MAIL   Вверх
Yantarik
Дата 17.8.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Цитата(pseud @  17.8.2007,  13:46 Найти цитируемый пост)
Кидаешь на него

Ты, наверное повесишься, но я не знаю, как это делается smile))))

Я изучала Паскаль, в Дельфи делала только то, что руками пишется(как в Паскале) и все визуальные возможности я только потихоньку узнаю и радуюсь. smile)))
Если, конечно, понимаю как это работает и чем мне в этом плюс smile)))

PM MAIL   Вверх
pseud
Дата 17.8.2007, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



 :(
найди хоть какую-нить книгу по дельфи, хоть по дельфи 1 и немножко полистай, а лучше множко
ну или в инете
побросай компонентики, пожмякай их
таким основам я не возьмусь обучать
не осилю

раз у вас на работе дельфи, то должен найтись человек, который сможет тебе основы преподать


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Yantarik
Дата 20.8.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 8.8.2007
Где: г.Москва

Репутация: 1
Всего: 1



Знать Дельфи и преродать(=объяснить) - это ж разные вещи. smile)))
Да и я не все понимаю. Книг тоже много, но я пока не нашла не одной, которая мне была бы понятна smile 
Может это у меня мохг как-то не так устроен? smile)))

Ладно, с основами я как-нибудь сама. Потихоньку...

А что за пустое окно выскакивает при выполнении твоей программы? откуда оно? 

PM MAIL   Вверх
pseud
Дата 20.8.2007, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 16
Всего: 40



Цитата(Yantarik @  20.8.2007,  16:03 Найти цитируемый пост)
А что за пустое окно выскакивает при выполнении твоей программы? откуда оно? 


при создании нового проекта в дельфи, автоматом создается одна форма TForm1
поэтому при запуске проекта (F9) ты ее и увидишь
на нее и надо кинуть ту самую кнопочку

настоятельно рекомендую найти книгу по дельфи, что-то типа "Для чайников" "За Х дней"
В них обычно не очень-то с толковостью, но хотя бы поймешь, как простой проект накидать
А вообще рекомендую авторов Стив Тейксейра и Ксавье Пачеко



--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.1348 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.