Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как создать Access файл с помощью кода


Автор: FICUS 7.7.2005, 19:26
Добрый вечер! smile

Вот сталкнулся с вопросом о построении базы.

Есть идея создавать файлы Access с нужными таблицами.

Как можно создать файл базы с помощью кода?
Или может где то есть об этом описание?

пользуюсь C++ Builder 5


Автор: _hunter 7.7.2005, 19:46
http://www.gotdotnet.ru/Forums/Data/140368.aspx

Автор: FICUS 8.7.2005, 10:38
Код

создать пустую БД используя адох можно так:

ADOX.Catalog catalog = new ADOX.Catalog();
   try
   {
    catalog.Create(ConnectionString);
   }

где ConnectionString чтото вроде такого:

StringBuilder connText = new StringBuilder();
connText.Append("Provider=Microsoft.Jet.OLEDB.4.0;");
connText.Append("Data Source=\"").Append(s_DatabasePath).Append(\";");
connText.Append("Mode=Share Deny None;");
connText.Append("Jet OLEDB:Encrypt Database=True;");
connText.Append("User ID=\"").Append("Admin").Append("\";");
ConnectionString = connText.ToString();




У меня нету ADOX. как быть? smile
Может оно и есть. Что хоть искать надо, для того что бы его подключить.
smile smile smile smile smile smile smile smile smile smile smile

Автор: chaos 8.7.2005, 11:00
посмотри сдесь может поможет
http://www.sano.ru/dexa/delphi/faq/29.html#1064572983
Добавлено @ 11:01
правда пример на делфи

Автор: _hunter 8.7.2005, 11:21
нужно просто импортировать TLB-ху из msadox.dll

Автор: FICUS 8.7.2005, 13:45
Блин smile.
Аж стыдно.
Не получается что-то.

Делаю так:

— создаю новый проект,
— в меню Project->Import Type Library... выбираю кнопочку "ADD" и указываю один из файлов

msado20.tlb
-- TConnection
-- TCommand
-- TRecordset
-- TParameter

msado21.tlb
-- TConnection
-- TCommand
-- TRecordset
-- TParameter

msado25.tlb
-- TConnection
-- TRecord
-- TStream
-- TCommand
-- TRecordset
-- TParameter

msado26.tlb
-- TConnection
-- TRecord
-- TStream
-- TCommand
-- TRecordset
-- TParameter

msado27.tlb
-- TConnection
-- TRecord
-- TStream
-- TCommand
-- TRecordset
-- TParameter

C:\Program Files\Common Files\System\ado\msado27.tlb

и что-то в итоге ничего не изменилось. ADOX-ом даже и не пахнет smile

Автор: _hunter 8.7.2005, 13:56
галку Generate Component Wrapper ставил?
кнопку Install тыкал?

Автор: FICUS 8.7.2005, 14:48
Да ставил Generate Component Wrapper .
Тыкал кнопку Install.

--- что я только не тыкал smile

Оно мне генерировало только Файлы.
ADODB_OCX.dcr
ADODB_OCX.h
ADODB_TLB.cpp
ADODB_TLB.h
ADODB_OCX.cpp


Но я их не подключал чего-то в проект smile .

Подключил:
ADODB_TLB.cpp
ADODB_OCX.cpp



Появилось вагон функций и класснов. ... ADO есть, а ADOX нема. Хоть убей .... нема. smile smile smile smile

Автор: _hunter 8.7.2005, 15:07
ну нет так нет ( мало ли как ты их обозвал ) ...
теперь просто береш и с той закладки, на которую компоненты повесил, тяни *catalog. с ним и работай

Автор: FICUS 8.7.2005, 16:05
При компиляции dclasr50.bpk высвечивается оштбка в
файле: ADODB_OCX.h
строка:
Код

      if (OnWillExecute)
        (OnWillExecute)(this, TVariant(params[0]), (Adodb_tlb::CursorTypeEnum*)(int*)TVariant(params[1]), (Adodb_tlb::LockTypeEnum*)(int*)TVariant(params[2]), TVariant(params[3]), (Adodb_tlb::EventStatusEnum*)(int*)TVariant(params[4]), (Adodb_tlb::_Command*)(LPDISPATCH)TVariant(params[5]), (Adodb_tlb::_Recordset*)(LPDISPATCH)TVariant(params[6]), (Adodb_tlb::_Connection*)(LPDISPATCH)TVariant(params[7]));


ошибки:
Код

[C++ Warning] ADODB_OCX.h(462): W8022 '_fastcall TRecord::GetChildren()' hides virtual function '_fastcall TComponent::GetChildren(void (_fastcall * (_closure )(TComponent *))(TComponent *),TComponent *)'
[C++ Error] ADODB_OCX.cpp(131): E2034 Cannot convert 'TVariant' to 'long *'
[C++ Error] ADODB_OCX.cpp(131): E2342 Type mismatch in parameter 'Options' (wanted 'long *', got 'TVariant')
[C++ Error] ADODB_OCX.cpp(139): E2034 Cannot convert 'TVariant' to 'long *'
[C++ Error] ADODB_OCX.cpp(139): E2342 Type mismatch in parameter 'Options' (wanted 'long *', got 'TVariant')





блин.
пойду практиковать смаил smile
Добавлено @ 16:11
так наверно по точнее будит:
Вот на что ругается
Код

void __fastcall TConnection::InvokeEvent(int id, Oleserver::TVariantArray& params)
{
...
      if (OnWillExecute)
        (OnWillExecute)(this, TVariant(params[0]), (Adodb_tlb::CursorTypeEnum*)(int*)TVariant(params[1]), (Adodb_tlb::LockTypeEnum*)(int*)TVariant(params[2]), TVariant(params[3]), (Adodb_tlb::EventStatusEnum*)(int*)TVariant(params[4]), (Adodb_tlb::_Command*)(LPDISPATCH)TVariant(params[5]), (Adodb_tlb::_Recordset*)(LPDISPATCH)TVariant(params[6]), (Adodb_tlb::_Connection*)(LPDISPATCH)TVariant(params[7]));
...
}

Автор: FICUS 8.7.2005, 16:26
smile АЛИЛУЯ !!!
Всунул я Адокс приколы.
только не TLB-ху а сам msadox.dll файлик.
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)