Виведення даних із SQL в Excel

даних

Здрастуйте! Я новачок у Дельфі. Не підкажіть, як вивести з SQL в Excel дані? Бажано з використанням ADO.

Excel

Додано пізніше:якщо щось конкретне буде не виходити - питай

якщо

його

даних

отже приклад (для дівчини нічого не шкода)

Допустимо: у тебе є ADOQuery1 в який за запитом SQL відібрані дані та кнопка Button1.

не забуваємо вusesдодатиComObj

P.S.код працює супер швидко, що забезпечено за рахунок передачі даних через варіантний масив єдине що може загальмувати - це виведення контурів таблиціXLRange.Borders.LineStyle := xlContinuous;тому великих обсягах даних краще не юзати (якщо звичайно важлива швидкість)

виведення

Поки що написаний вище код не використовувала. Знайшла інший. Після виправлення параметрів на свої, програма видає помилку: "Відбулися помилки під час виконання багатокрокової операції OLE DB. По можливості перевірте значення всіх станів OLE DB"

Як це можна перевірити?

І відразу ось таке ще питання № 2 Не дуже розумію ось це:

Тобто я розумію: із таблиці Телефони вибрати стовпці "Телефон", "Ім'я", "Вулицю", "Дім", "Корпус", "Квартира", а ось що таке далі?

його

insert - вставити новий запис select - вибрати записи update - редагувати записи delete - видалити записи

читаємо основи SQL

Додано пізніше:думаю тобі для початку піде це

P.S. ну дуже короткий

Excel

"insert - вставити новий запис читаємо основи SQL" Соррі, з селектом переплутала.

Про питання №2: У дуже короткому довіднику немає опису терміну(або щоце?) "values". Інтуїтивно я розумію, що ": pName" - це змінна. А звідки вона береться і чому перед нею ":"?

його

якщо тобі не потрібенInsert, то не потрібен іValues

виклади краще свій неробочий SQL

його

Якраз Insert потрібен

З помилкою ми розібралися.

якщо

якщо

даних

І ще одне питання: Мені треба вивантажити всю таблицю. У селекті це *, а ось в інсерті це як описується? Чи потрібне в даному випадку перерахування стовпців (їх близько 30-40 штук) чи можна якось схоже з селектом описати?

його

ось вона купка проблем із твого експорту вилилася

можна звичайно полупти твій експорт, але. а чому не хочеш мною описаний спосіб випробувати?

1. він універсальний 2. не створюєнових таблиць у базі3. Чи непотрібне перерахування стовпців

якщо

1. Тому що я його не розумію зовсім )) Тобто мені потрібно пояснювати кожний рядок, починаючи з перших 4-значних цифр: що це звідки береться? Я не знаю, код прописувати свою базу і т.д.

Мій варіант з іншою базою у мене на комп'ютері працював. Але там було безліч стовпців. Тут же я змінюю під свою базу і все - створюють нову таблицю в моїй базі замість того, щоб вивоїти в ексель.

даних

але якщо хтось доопрацює твій код до того, що тобі потрібно ти виходить теж не зрозумієш і доведеться пояснювати

тобі треба комусь потім пояснити, що написано? чи головне щоб експорт відбувався?

цю процедуру можна трошки доопрацювати і використовувати її в будь-якому проекті без змін а розуміння прийде пізніше

ну постарайся: var – змінні, const – константи і т.д.

виведення

А мені не потрібно згодом. Я хочу РОЗУМІТИ, а нетупо списувати. Щоб за необхідності я могла все, що потрібно/захочеться виправити.

Що таке змінні і константи я знаю)))) Я можу тобі написати все, що мені не зрозуміло по твоїм скрипту))

Звідки взялися ці числа? Чому саме вони?

Що це робить? (і відразу навіщо воно потрібне) і звідки взялася crHourGlass? Яке значення має?

Ці два теж не зрозумілі. Знову ж таки звідки беруться значення після знака присвоїти?

Чи це я так розумію перехід на новий столець?

(Інше потім. думаю. що вперше вистачить)

І ГОЛОВНЕ питання: ти сказав, що на великих таблицях він буде гальмувати. ))))

його

цірозмовляючіконстанти я ввів саме для розуміння, а міг просто передати цифірі

роби два: експорт наш може тривати дуже довго - покажемо як користувачеві на цей часЧасики Скляні

це властивостіCOMоб'єкта, про якідельфінічого не знає, а ми тільки здогадуємося. якщо в тебе ще відкритийVisualBasic, то поколупав його ще трошки , ти все зрозумієш. Впринципі вдельфіє сторінкаServersде висять об'єкти, які надають ці незрозумілості більш зрозумілим способом. Але я їх не користувався.

всі змінні розмовляючі iRowsCount - кількість рядків в Excel файлі

якщо прибереш рядок

Excel

Const xlWBATWorksheet = -4167 (&HFFFFEFB9) Member of Excel.XlWBATemplateЄдине, що я з цього зрозуміла, що це якась константа в Екселі А чому у неї таке значення?

Const xlContinuous = 1 Member of Excel.XlLineStyleвзагалінезрозуміле число. Навіщо вводити константу 1? Якщо назва цієї константи у 12 разів довша за цифру 1? :)

Як він тоді зрозуміє, що написано?

Про що свідчить XL?

Що означає цей рядок?

Ще: Я не бачу, де я маю прописати свою базу. І в мене в базі не одна таблиця а близько 30. І шлях до ексель-файлу теж не бачу. :(((((

Excel

тому, що інші значення зайняті іншимиконстантами

тобі зрозуміліше так?

всізміннііконстантиповинні бутирозмовляючі, щоб ти сама чи хтось після тебе могли швидко розібратися в коді.xlContinuous>:xl- приставка, що говорить що ми працюємо з ExcelContinuous- (англ.) безперервний.

а що скаже цифра 1.

ніяк не зрозуміє просто спробує викликати вказані тобоюметодиякщо ти помилилася хоч в одній літерці - отримаєшError

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

iColumnsCount(розмінна, що говорить) i - Integer Columns - колонки Count - кількість

ADOQuery1- це компонент, куди ти відібрала свої дані по SQL

якщо

Абстрактно: Через це може вилітати помилка: "Операція не допускається, якщо об'єкт відкритий"

Про всяк випадок: при запуску коду файл встигає відкритися, а до рядка закриття файлу він не доходить. Я роблю програм ресет. Тобто виходить, що його не закриваю при повторному перезапуску. Ідея закрити файл на самому початку чомусь не працює (напевно і не повинна).

виведення

абстрактноне варто новепитання= новатема

та й з опису нічого не зрозумів - код - місце помилки це робота зфайлами? якщо так то нове питання причому не в цю гілку або все той жеекспортв Excel

даних

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

Я натискаю F9, програма починає виконуватись. У процесі виконання відкривається файл (екселевський), потім зациклюється. Я її зупиняю, щось керую (коли розумію, в чому помилка) і запускаю заново. І після цього він видає таку помилку.

даних

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

2. Під час виконання вискакує порожня форма. Звідки вона береться?

p.s. я так вважаю, щоб для мене змінні говорили треба десь з півроку програмити. )) Для мене поки що це темний ліс. Зрозуміла, що в назву змінних/констант ви вкладаєте їхню сутність. І не зрозуміла, навіщо константа дорівнює одиниці.

даних

який метод використовуєш? щоянаписав? чисвій?

припустю: помилка відбувається черезаварійногозавершення проги, т.к. об'єктExcelзалишається підвислим і при наступній спробі його створити -ерор.

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

а взагалі щоб такого не відбувалося необхіднаконструкція

Додано пізніше:ти всвоємуприкладі використовуєшADODataSetSourceце я вважаюDataSetв який відібрані дані для експорту

можеш використовувати його ж тоді в моєму коді всі місцяADOQuery1заміни наADODataSetSource

мабуть треба з нуля:

  • Створюєш новий проект
  • Кидаєш на нього свійADODataSetSourceі мабуть ADOConnetion
  • Глянь як ці компоненти у твоєму проекті були налаштовані танастрій тут також.
  • Кидаєш кнопку Button1
  • Подвійний клік по кнопці - потрапляємо в процедуру натискання кнопки там пишемо мій код
  • F9
  • Тисні Button1.