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

Вниз

Из Query в Excel?   Найти похожие ветки 

 
Flash_80   (2006-10-25 12:37) [0]

Пожалуйста, подскажите! Хочется большие массивы выборок из БД такими же массивами (сразу!) скидывать в 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;


 
ANB ©   (2006-10-25 13:07) [1]

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


 
flash_80 ©   (2006-10-25 13:15) [2]

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


 
Anatoly Podgoretsky ©   (2006-10-25 13:18) [3]

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


 
Megabyte ©   (2006-10-25 15:42) [4]

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


 
Stanislav ©   (2006-10-25 16:35) [5]

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


 
Flash_80 ©   (2006-10-25 19:25) [6]

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


 
evvcom ©   (2006-10-26 08:38) [7]

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

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


 
Anatoly Podgoretsky ©   (2006-10-26 08:52) [8]


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

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


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

Про 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"]?


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

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


 
flash_80 ©   (2006-10-26 12:05) [11]

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


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

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


 
Stanislav ©   (2006-10-26 12:24) [13]

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


 
Anatoly Podgoretsky ©   (2006-10-26 12:43) [14]


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

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


 
Anatoly Podgoretsky ©   (2006-10-26 12:45) [15]


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

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


 
flash_80 ©   (2006-10-27 09:44) [16]

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


 
ЮЮ ©   (2006-10-27 09:54) [17]


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


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

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

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


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


 
Stanislav ©   (2006-10-27 11:03) [18]

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


 
flash_80 ©   (2006-10-27 13:01) [19]

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



Страницы: 1 вся ветка

Текущий архив: 2007.01.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
15-1166640174
cando
2006-12-20 21:42
2007.01.14
Midi files


2-1167040888
Steep
2006-12-25 13:01
2007.01.14
Ado + MS SQL


2-1166952419
Zver1992
2006-12-24 12:26
2007.01.14
Отключение контроля ошибок


2-1166538376
maxistent
2006-12-19 17:26
2007.01.14
Реакция на <ESC>


3-1162187801
vlgrig1961
2006-10-30 08:56
2007.01.14
Есть ли в SQL для парадокса что-то вроде To_Char конверт из цифр