![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Из 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]Надо завести массив вариантов и кинуть его в эксель за один раз.