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