Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.02 c
14-25512
Думкин
2003-12-16 07:03
2004.01.09
С днем рождения! 16 декабря.


1-25274
TUser
2003-12-25 14:36
2004.01.09
FreeLibrary


7-25635
Yegor
2003-10-25 21:05
2004.01.09
Скорость


1-25320
}|{yk
2003-12-22 18:30
2004.01.09
Глючу. Не появляется кнопка ? в меню приложения


3-25210
Layner
2003-12-11 09:46
2004.01.09
Можно ли установить SQL Server на Win2000Prof?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский