Главная страница
    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.46 MB
Время: 0.012 c
3-25231
ToleaN
2003-12-11 10:51
2004.01.09
как вызвать диалог выбора DSN


1-25322
romeo
2003-12-22 00:28
2004.01.09
Как сделать, чтобы открытый ComboBox не закрывался при Click e?


4-25644
One man
2003-11-06 20:12
2004.01.09
Помогите с кодом, пожалуйста!


6-25461
pavel_guzhanov
2003-11-10 11:38
2004.01.09
Сбор сведений о компьютерах в сети


3-25256
PaveLL
2003-12-10 13:28
2004.01.09
sql





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский