Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод записей из БД в Excel

3.5K
20 октября 2003 года
Iren
17 / / 20.10.2003
Привет всем.
Я подключила Excel, могу вывести значение поля записи из БД в конкретную ячейку, но вывести для всех записей в цикле - не получается.
Пробовала так:

char *A=new char[10]; int i=0;
DM->Q1->First();
while(i<DM->Q1->RecordCount)
{ i++; A="A";
StrCat(A, IntToStr(i+2).c_str()); // начать с А3
range=sheet.OlePropertyGet("Range", A); range.OlePropertySet("Value", DM->Q1->FieldValues["NAIM"]);
DM->Q1->Next();
}
- при выполнении ошибка. Кто знает, подскажите, плиз.
5.0K
20 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Во-первых было бы неплохо, если бы ты указала, какая именно ошибка происходит.
Во-вторых, на сколько я помню, свойство RecordCount поддерживается не всеми компонентами (Query вроде не поддерживают...), поэтому я бы использовал конструкцию while (!DM->Q1->Eof())
В-третьих, вместо Range я использовал примерно аналогичным образом свойство Cells и для доступа к полю написал бы DM->Q1->FieldByName("NAIM")->AsString

3.5K
20 октября 2003 года
Iren
17 / / 20.10.2003
После нажатия на кнопку, запускающую передачу данных, открывается Excel и выдается сообщение:
Project Otchet.exe raised exception class OleSysError with message ‘Ошибка’.
//Otchet.exe – мой проект

После нажатия OK, открывает файл sysvari.h и указывает на последнюю строку этого модуля:
template <class P1>
Variant Variant::OlePropertyGet(const String& name, P1 p1)
{
TAutoArgs<1> args;
args[1] = p1;
return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));
}
Рекомендации твои я попробовала, но не помогло.
(Примерно аналогичный способ использования Cells - это какой?)
5.0K
20 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
Рекомендации твои я попробовала, но не помогло.
(Примерно аналогичный способ использования Cells - это какой?)


Понятно, они при этой ошибке и не помогут :)
У меня похожее было, сейчас на вскидку не помню, но вечером дома посмотрю и напишу. Если хочешь можешь свой e-mail в аську 220879443 кинуть, ответ дойдёт быстрее

989
20 октября 2003 года
Vlad232ua
182 / / 02.04.2003
Цитата:
Originally posted by Iren
После нажатия на кнопку, запускающую передачу данных, открывается Excel и выдается сообщение:
Project Otchet.exe raised exception class OleSysError with message ‘Ошибка’.
//Otchet.exe – мой проект

После нажатия OK, открывает файл sysvari.h и указывает на последнюю строку этого модуля:
template <class P1>
Variant Variant::OlePropertyGet(const String& name, P1 p1)
{
TAutoArgs<1> args;
args[1] = p1;
return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));
}
Рекомендации твои я попробовала, но не помогло.
(Примерно аналогичный способ использования Cells - это какой?)



Большое подозрение (переходящее в уверенность) что Excel таблица у тебя в отсутствии (не открыта) тебе просто некуда писать. Ты где-то раньше не делаешь, что-то типа
books.Exec(Procedure("Close"));
app.OleProcedure("Quit");

Проверь себя простой конструкцией, типа

void __fastcall TForm1::Button1Click(TObject *Sender)
{
app = CreateOleObject("Excel.Application");
books = app.OlePropertyGet("Workbooks");
books.Exec(Procedure("Open")<<"F:\\Книга2.xls");
book = books.OlePropertyGet("item",1);
sheet= book.OlePropertyGet("WorkSheets",1);
app.OlePropertySet("Visible", 1);

sheet.OlePropertyGet("Range","A8").OlePropertySet("Value",999);

books.Exec(Procedure("Close"));
app.OleProcedure("Quit");
}

Это должно работать железно (в А8 получишь 999). Если работает, то рой передачу переменных адресацию, типы. (F:\\Книга2.xls естественно свой поставь)

5.0K
20 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
Примерно аналогичный способ использования Cells - это какой?


Вот обещанный кусок кода, который 100% работал:
[FONT=courier new]AnsiString Value=WellsDB->CommonX->AsString;
Variant Cell=CommonSheet.OlePropertyGet("Cells", i+2, 7);
Cell.OlePropertySet("Value", Value.c_str());[/FONT]
(В общем берётся значение поля X из таблицы Common базы WellsDB в виде строки. Дальше думаю понятно.)
Дело вроде было именно в c_str(), без него по-моему была такая же ошибка, как и у тебя.

3.5K
21 октября 2003 года
Iren
17 / / 20.10.2003
Добрый день, Fuzzy222, Vlad232ua.
С Вашей помощью у меня теперь всё работает!:)
Спасибо.

Подскажите, где можно взять информацию о свойствах и методах для настройки представления данных из ячеек на экране( например, параметры шрифта, окаймление ячеек, цвет) и их использовании.
5.0K
21 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
Добрый день, Fuzzy222, Vlad232ua.
С Вашей помощью у меня теперь всё работает!:)
Спасибо.

Подскажите, где можно взять информацию о свойствах и методах для настройки представления данных из ячеек на экране( например, параметры шрифта, окаймление ячеек, цвет) и их использовании.


Да в общем-то не за что. :)
Настройка вида ячейки делается через свойства уже упоминавшихся Cells. Подробную информацию о них на английском можно получить из справки по Visual Basic, которую можно в MS офисе поставить (по умолчанию она не ставится, поэтому у тебя может не стоять. Конкретно по Excel, там есть файлик вроде XL9VBA.chm, если мне память не изменяет)
Если надо на русском, то посмотри в сети где-нибудь (особенно в разделах Visual Basic, там это чаще встречается, а код переделать просто). Вечером гляну у себя в закромах родины, если чего завалялось, то могу прислать.
_

3.5K
21 октября 2003 года
Iren
17 / / 20.10.2003
Цитата:
Originally posted by Fuzzy222

Да в общем-то не за что. :)
Настройка вида ячейки делается через свойства уже упоминавшихся Cells. Подробную информацию о них на английском можно получить из справки по Visual Basic, которую можно в MS офисе поставить (по умолчанию она не ставится, поэтому у тебя может не стоять. Конкретно по Excel, там есть файлик вроде XL9VBA.chm, если мне память не изменяет)
Если надо на русском, то посмотри в сети где-нибудь (особенно в разделах Visual Basic, там это чаще встречается, а код переделать просто). Вечером гляну у себя в закромах родины, если чего завалялось, то могу прислать.
_



Очень хочется на русском. Если найдешь, будет здорово.:)

5.0K
22 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
Очень хочется на русском. Если найдешь, будет здорово.:)


К сожалению то, что дома нашлось, только на английском и не очень много. Поэтому всё-таки рекомендую посмотреть тебе help к MS office - не такой уж он и сложный, или в инете поискать.
Если надо, то могу прислать пример, как я шрифт жирным делал и цвет заливки ячейки менял. (Большего мне просто не надо было)

3.5K
22 октября 2003 года
Iren
17 / / 20.10.2003
Цитата:
Originally posted by Fuzzy222

К сожалению то, что дома нашлось, только на английском и не очень много. Поэтому всё-таки рекомендую посмотреть тебе help к MS office - не такой уж он и сложный, или в инете поискать.
Если надо, то могу прислать пример, как я шрифт жирным делал и цвет заливки ячейки менял. (Большего мне просто не надо было)




От примерчика не откажусь.
Мне бы хотелось те данные, которые я вывожу из БД, оформить в табличку.

5.0K
24 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
От примерчика не откажусь.
Мне бы хотелось те данные, которые я вывожу из БД, оформить в табличку.


Извини, что задержался.
Вот то, что я использовал:
[FONT=courier new]
// Установка жирного шрифта для диапазона ячеек
Variant Range=CommonSheet.OlePropertyGet("Range", "A1:I1");
Variant Font=Range.OlePropertyGet("Font");
Font.OlePropertySet("Bold", true);
// Задание цвета для ячейки
Variant Cell=Sheet.OlePropertyGet("Cells", i, 1);
Variant Interior=Cell.OlePropertyGet("Interior");
Interior.OlePropertySet("ColorIndex", 3); //4=green; 3=red[/FONT]
Не много, но надеюсь поможет

3.5K
27 октября 2003 года
Iren
17 / / 20.10.2003
Fuzzy222, большое спасибо за помощь.
(Получился прекрасный отчет). :)
5.0K
27 октября 2003 года
Fuzzy222
19 / / 17.10.2003
Цитата:
Originally posted by Iren
Большое спасибо за помощь.
(Получился прекрасный отчет).


Да ладно. Всё-равно время было.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог