Форум: "Базы";
Текущий архив: 2007.01.14;
Скачать: [xml.tar.bz2];
ВнизИз 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;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.015 c