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

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

Из Query в Excel? [D7]


Flash_80 ©   (2006-10-25 12:37:00) 

Пожалуйста, подскажите! Хочется большие массивы выборок из БД такими же массивами (сразу!) скидывать в excel а не построчно...
Пока что приходится делать так (ну ооочень долго получается)
 mainForm.Query1.SQL.Clear;
 mainForm.Query1.SQL.Add('select');
 mainForm.Query1.SQL.Add('xxx,');
 mainForm.Query1.SQL.Add('yyy,');
 mainForm.Query1.SQL.Add('zzz');
 mainForm.Query1.SQL.Add('from tbl_XXX');
 mainForm.Query1.Open;

 k:=0;
 While not mainForm.Query1.EOF do
   begin
 k:=k+1;
XLApp.WorkBooks[pdsn_stat].WorkSheets[1].Cells[k+1,29]:=mainForm.Query1.Fields.Fields[0].AsFloat;
XLApp.WorkBooks[pdsn_stat].WorkSheets[1].Cells[k+1,30]:=mainForm.Query1.Fields.Fields[1].AsFloat;
XLApp.WorkBooks[pdsn_stat].WorkSheets[1].Cells[k+1,31]:=mainForm.Query1.Fields.Fields[2].AsFloat;
mainForm.Query1.Next;


flash_80   (2006-10-27 13:01:00) [1]

и Oracle и Sybase используем (и это не от меня зависит). а моя задача - обработка статистики- то есть вытаскивание из них нужной информации и формирование красивых понятных отчетов.


Stanislav   (2006-10-27 11:03:00) [2]

>Из excel запрос в оракловую базу?
>Увы не увидела, что ODBC работает с SyBase
так что за база?


ЮЮ   (2006-10-27 09:54:00) [3]


> Короче хотелось сделать все единообразно


Ну и кто мешает для единоообразия один раз написать функцию
DataSetToVarArray(DataSet: TDataSet): Variantж
и использовть её.

XLApp. ... .value:=DataSetToVarArray(mainForm.Query1);

"
> и чтоб быстро и эффективно работало.


Это всяко будет работать быстрей, чем по-ячеечно переносить


flash_80   (2006-10-27 09:44:00) [4]

Увы не увидела, что ODBC работает с SyBase :(( иначе бы попробовала....
да и кроме самого запроса там несколько всяких приблуд считается (например вероятность отказа ...там куча факториалов и сумм в одной формуле- это мне легче на делфях....). Короче хотелось сделать все единообразно и чтоб быстро и эффективно работало. Пока не получается :(


Anatoly Podgoretsky   (2006-10-26 12:45:00) [5]


> Хранятся в Query. Лучше изучить ODBC.

Лучше Эксель, поскольку по прикидкам Дельфи здесь лишняя, да и программист тоже, все делается пользователем через Внешние данные, но при желании можно и Дельфи использовать, а при заявленном желании придется научиться писать очень сложные, комплексные компоненты.


Anatoly Podgoretsky   (2006-10-26 12:43:00) [6]


> Так я же и хочу, так, чтоб не пробегаться по каждой ячейке
> массива, сразу эту (уже имеющуюся) выборку  вставить в excel!
>  Такое возможно

Возможно, придется написать наследника от TDataset, а сил хватит?


Stanislav   (2006-10-26 12:24:00) [7]

>не знала.
Опять девушка! :-)
Хранятся в Query. Лучше изучить ODBC.


ЮЮ   (2006-10-26 12:19:00) [8]

DBGrid не стесняется бегать по Query, чтобу его отобразить.
Если в контексте XLApp.WorkBooks..., то иначе никак, пожалуй.


flash_80   (2006-10-26 12:05:00) [9]

Так я же и хочу, так, чтоб не пробегаться по каждой ячейке массива, сразу эту (уже имеющуюся) выборку  вставить в excel! Такое возможно. Эти данные вообще где содержатся после запроса? в Query? или в DBGrid? или еще где то?


ЮЮ   (2006-10-26 11:44:00) [10]

неужели mainForm.DBGrid1 или mainForm.Query1 так похожи на TempArray из [3]?
Да и заполнить его, пробежавшись по Query1 придется самой.


flash_80   (2006-10-26 11:36:00) [11]

Про ODBC не знала, спасибо! буду разбираться!
на данный момент из всех советов слепила что-то типа
XLApp.WorkBooks[pdsn_stat].WorkSheets[1].Range['A1','H100'].value:=mainForm.DBGr id1;
XLApp.WorkBooks[pdsn_stat].WorkSheets[1].Range['A1','H100'].value:=mainForm.Quer y1;
ни один из вариантов не работает... как засунуть именно данные DBGrid1 (все то что я получаю запросом Query1) в Range['A1','H100']?


Anatoly Podgoretsky   (2006-10-26 08:52:00) [12]


> Из excel запрос в оракловую базу?

ODBC есть? Тогда понимания должно хватать.


evvcom   (2006-10-26 08:38:00) [13]

> [6] Flash_80 ©   (25.10.06 19:25)
> Из excel запрос в оракловую базу?

А что сложного? Настраиваешь источник ODBC. Потом в Excel: Данные - Внешние данные - Создать запрос. Советую в офисе доставить приложение (по умолчанию не ставится) Microsoft Query. С ним удобнее.


Flash_80   (2006-10-25 19:25:00) [14]

Из excel запрос в оракловую базу? это выше моего понимания...


Stanislav   (2006-10-25 16:35:00) [15]

А не проще из Excel сделать запрос?


Megabyte   (2006-10-25 15:42:00) [16]

<offtop>Кстати, у компонентов ADO есть класс RecordSet, с помощью него выборка перекидывается в Excel в одну строчку. :)</offtop>


Anatoly Podgoretsky   (2006-10-25 13:18:00) [17]

TempArray := VarArrayCreate([1, RecordCount, StartCol, EndCol], varVariant);
...
Range.Formula := TempArray;
TempArray     := Unassigned;


flash_80   (2006-10-25 13:15:00) [18]

как это "массив вариантов"?
мне бы лучше приблизительный код...


ANB   (2006-10-25 13:07:00) [19]

Надо завести массив вариантов и кинуть его в эксель за один раз.


Наверх

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