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

Вниз

Recordset   Найти похожие ветки 

 
trever   (2003-12-13 12:27) [0]

Вообщем задача тривиальная - формирование отчетов в екселе, она решаема, но возник вопрос (как обычно из любопытства и лени :-), а можно ли одним махом заполнить диапазон ячеек данными из датасета, можно использовать Рекордсет и метод GetRows, но он меняет местами направление Fields и Rows.
Подскажите, пожалуйста, есть ли решение этой проблемы.


 
trever   (2003-12-13 13:29) [1]

ну, блин, хоть кто-нибудь что-нибудь скажет по этому поводу


 
JibSkeart ©   (2003-12-13 13:44) [2]

Если это все предварително запихать в массив
ну предположим так

Arr:Variant;
Xl:Variant;

Xl.CreateOleObject("Exel.Application");
Arr := VarArrayCreate([1..M,1..M],varVariant);
Arr[1,j] := DataSet("field1").AsString;
Arr[2,j] := DataSet("field2").AsString;
Arr[3,j] := DataSet("field3").AsString;
XL.Range["A1","D1"].Value := Arr;

7не знаю не проверял толко что придумал :))


 
trever   (2003-12-13 13:52) [3]

спасибо!!!
этим методом и пользуюсь :-)
а вот что бы что-то вроде

Xl.CreateOleObject("Exel.Application");
Arr := VarArrayCreate([1..M,1..M],varVariant);
Arr := DataSet.Recordset.GetRow(DataSet.RecordCount,0,EmptyParam);
XL.Range["A1","D1"].Value := Arr;

или

XL.Range["A1","D1"].Value := DataSet.Recordset.GetRow(DataSet.RecordCount,0,EmptyParam);

но в этом случае значения полей выводятся построчно, а записи в столбцах
хотелось бы наоборот :-)
Вот в этом вопрос.


 
JibSkeart ©   (2003-12-13 13:56) [4]

Ну не знаю попробуй поекспрементировать с массивом.


 
JibSkeart ©   (2003-12-13 14:11) [5]

ну или все таки
XL.Range["A1","A"+IntToStr(DataSet.RecorCount)].Value := DataSet.Recordset.GetRow(DataSet.RecordCount,0,EmptyParam);

так прокатит ?


 
trever   (2003-12-13 14:18) [6]

прокатит-то, прокатит, но это будет выглядеть так

f1 f2 f3
RecNo1 A1 B1 C1
RecNo2 A2 B2 C1
RecNo2 A3 B3 C1

а в Екселе будет

A B
1 A1
2 B1
3 C1

а нужен такой же порядок как и в датасете


 
JibSkeart ©   (2003-12-13 14:24) [7]

а ты как хочешь в ставлять по столбцам,
или по строкам ?
или вообще все сразу ?


 
trever   (2003-12-13 14:30) [8]

все сразу и в таком же виде как в датасете, что бы столбцы не менялись местами со строками, т.е. без дополнительной обработки массива :-)


 
JibSkeart ©   (2003-12-13 14:37) [9]

ну пробуй меняй Range["a1",CHR(64+DataSet.RecordCount)+IntToStr(DataSet.RecordCount)] = xxx

попробуй может так повезет ,
не могу попробовать на ентом компе делфей нету :)


 
trever   (2003-12-13 14:59) [10]

Посмотрел в Variant support routines, но вроде ничего подходящего не нашел, чтобы поменять местами измерения массива, может что-то упустил? Видимо придется старым способом пользоваться :-(
Но все равно, Спасибо!!!



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

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

Наверх




Память: 0.49 MB
Время: 0.031 c
1-25356
афвуд
2003-12-25 18:13
2004.01.09
Search Path


1-25321
denis24
2003-12-22 17:22
2004.01.09
переход с 5 на 6 делфи


14-25590
Maxim Vetera
2003-12-17 10:00
2004.01.09
Код Delphi на VB!


1-25353
Olphi
2003-12-21 13:52
2004.01.09
перключение MDI форм в меню


4-25651
Колян_К
2003-11-06 12:14
2004.01.09
Что делает mouse.destroy;