Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Открытие формы Access из программы, Нужна помощь 
:(
    Опции темы
Dimon007
Дата 2.5.2008, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.5.2008

Репутация: нет
Всего: нет



Очень нужна помощь в этом вопросе, если бы дело касалось программирования работы с данными БД то проблем бы не возникла а так тут суть такая что есть база данных в которой уже есть формы, так вот надо чтобы они из проги вызывались. Я попытался сделать через компоненты вкладки office2k но при попытке открыть компоненты типа TAccessForm у меня выдается "Класс не зарегистрирован". Единственный способ который может сработать это AccessApplication1->DoCmd->OpenForm но я не знаю как им правильно воспользоваться.
Там появляется переменная типа tagVARIANT и я чесно уже запутался. Кто знает как привильно решить эту задачку подскажите, а лучше код набросайте чтобы открывал форму в базе данных. Вот что у меня есть но это не работает...


Код


WideString dbName = "C:\\new.mdb";
AccessApplication1->Connect();
AccessApplication1->OpenCurrentDatabase (dbName, true);
AccessApplication1->set_Visible(true);
tagVARIANT a,b,c,d;
a.pcVal="main";
b.pcVal="";
c.pcVal="";
d.pcVal="";
AccessApplication1->DoCmd->OpenForm(a,acNormal,b,c,acFormPropertySettings,acWindowNormal,d);




Воть, мож кто знает как это правильно сделать ????
PM MAIL   Вверх
Данкинг
Дата 3.5.2008, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



А почему нельзя просто запустить на выполнение mdb ?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dimon007
Дата 3.5.2008, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.5.2008

Репутация: нет
Всего: нет



Данкинг
А я дурак не догадался что можно просто открыть Access и запустить форму, 
помоему если бы в поставленная задача звучала "Как открыть форму в Access ?" то я  бы задавал её в разделах про office...
Это не мне надо чтобы все именно так работало, мне надо только помочь осуществить эту часть... И поэтому желательно по теме, прошу помощи так как нормального описания и примеров нигде не нашел...
 smile 
PM MAIL   Вверх
Данкинг
Дата 3.5.2008, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



По-моему, вопрос этот всё равно про "офис". А просто DoCmd.OpenForm (forma) почему нельзя написать? Должно же работать.

Это сообщение отредактировал(а) Данкинг - 3.5.2008, 10:58


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dimon007
Дата 3.5.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.5.2008

Репутация: нет
Всего: нет



Данкинг
Я ж говорю просто не получается после строки
Код

AccessApplication1->DoCmd->OpenForm(

надо задать 6 параметров 4 из которых tagVARIANT , это если делать через TAccessApplication если кто знает как это правильно сделать или каким другим образом это можно сделать...
PM MAIL   Вверх
Данкинг
Дата 3.5.2008, 11:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Я просто смотрю код нашего бывшего программера, крутого спеца по VBA. Он открывает форму именно так:

Код

DoCmd.OpenForm "formAnkets"


Причём пример этот не единичный. По логике, при создании объекта должно быть то же самое (признаюсь, сам не пробовал, подобных задач решать не доводилось). Какие там ещё могут параметры... smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Dimon007
Дата 3.5.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.5.2008

Репутация: нет
Всего: нет



Данкинг,
Ну если бы на VBA надо было то я бы не мучился... проблема заключается в том что например название формы должно быть описано как tagVARIANT но тут свои проблемы когда я выполняю выше написанный код то просто ничего не происходит. По VBA я совершенно согласен, но вот на С++ хотелось бы лицезреть рабочий пример по теме...
PM MAIL   Вверх
xvr
Дата 4.5.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(Dimon007 @ 3.5.2008,  12:00)
Данкинг,
Ну если бы на VBA надо было то я бы не мучился... проблема заключается в том что например название формы должно быть описано как tagVARIANT но тут свои проблемы когда я выполняю выше написанный код то просто ничего не происходит.

В Builder'e надо вместо tagVARIANT пользовать переменные типа TVariant и присваивать им нужные значения (нужных типов).
Т.е. как то так
Код

WideString dbName = "C:\\new.mdb";
AccessApplication1->Connect();
AccessApplication1->OpenCurrentDatabase (dbName, true);
AccessApplication1->set_Visible(true);
TVariant a,b,c,d;
a="main";
b="";
c="";
d="";
AccessApplication1->DoCmd->OpenForm(a,acNormal,b,c,acFormPropertySettings,acWindowNormal,d);

Что касается сообщения "Класс не зарегистрирован", то оно наводит на мысль что какая то часть Оффиса не установлена.

PM MAIL   Вверх
Dimon007
Дата 4.5.2008, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 2.5.2008

Репутация: нет
Всего: нет



xvr
Спасибо огромное теперь заработало, действительно надо было вместо tagVARIANT использовать тип TVariant. Выручил, тема закрыта... smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0720 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.