Builder & Access создание файла БД
От: dyrnik  
Дата: 27.02.08 17:21
Оценка:
пишу программу на Builder 6 все ок, кроме связи с БД
необходимо:
1 создать файл БД Аксес
2 создать таблицу
3 запихать туда данные(данные оформлены в виде двумерного вектора)

проблеммы:
1 в ADO нельзя создать файл БД Аксес
2 Билдер общается с БД только через ADO(BDE не счтитается) и SQL причем хитрыми инструментами, которые не везьде есть(у меня нет).
3 можно обращаться к Аксесу через коллекции, но это поддерживают только английские версии Аксеса (у меня только открыть приложение Аксес получилось..)

Находил исходники для этого дела на Делфи... но интерпритировать в Билдере не получилось.

вижу один выход:
Написать exe-шник в VB и запустить его через Билдер.
Можно все в VB перегнать, но влом))

Люди, может и правда в Билдере есть что-нибудь создавающее файл Access?
Re: Builder & Access создание файла БД
От: Tonal- Россия www.promsoft.ru
Дата: 27.02.08 20:08
Оценка:
Здравствуйте, dyrnik, Вы писали:
D>пишу программу на Builder 6 все ок, кроме связи с БД
D>необходимо:
D>1 создать файл БД Аксес
D>2 создать таблицу
D>3 запихать туда данные(данные оформлены в виде двумерного вектора)
Для создания базы нужно работать с расширением ADO — ADOX — читай в MSDN-е.
А можно по простому: взять пустую базу и прицепить заначить куда-нибудь — положить рядом с exe-шником или в ресурсы запихнуть.
А когда надо — скопировать в нужное место с нужным именем.
Re: Builder & Access создание файла БД
От: trophim Россия  
Дата: 27.02.08 21:35
Оценка:
Вот создание БД. Дальше копайте сами. МСДН вам в руки.

#include <windows.h>
#include <vcl.h>
#pragma hdrstop

#include <comdef.h>

// !!! получен вручную при импорте Type Lib: C:\Program Files\Common Files\System\ado\msadox.dll: Microsoft ADO Ext. 2.8 for DDL and Security
#include <adox_ocx.h> 

#include <stdio.h>
#include <conio.h>
#include <atl\atlmod.h>

#define TESTHR(x) if FAILED(x) _com_issue_error(x);

using namespace Adox_tlb;

//баг (???) в CodeGear: объявление в namespace, а реализация - нет...
// создадим функцию сами
void __stdcall _com_issue_error(HRESULT hr) throw(_com_error)
{

  throw _com_error(hr);
}

//---------------------------------------------------------------------------
//CreateDatabaseX
//Purpose:  create a new Jet database with the Create method
//---------------------------------------------------------------------------
void CreateDatabaseX()
{
    HRESULT hr;// = S_OK;

    // Define ADOX object pointers.
    // Initialize pointers on define.
    // These are in the ADOX::  namespace.

    _CatalogPtr m_pCatalog;


    //Set ActiveConnection of Catalog to this string
    _bstr_t strcnn("Provider='Microsoft.JET.OLEDB.4.0';Data source=c:\\new.mdb");
    try
    {
        TESTHR(hr = m_pCatalog.CreateInstance(CLSID_Catalog));//__uuidof (Catalog)));
        m_pCatalog->Create(strcnn);
        printf("Database 'c:\\new.mdb' is created.\n");
    }
    catch(_com_error &e)
    {
        // Notify the user of errors if any.
        _bstr_t bstrSource(e.Source());
        _bstr_t bstrDescription(e.Description());

        printf("\n\tSource :  %s \n\tdescription : %s \n ",
            (LPCSTR)bstrSource,(LPCSTR)bstrDescription);

    }
    catch(...)
    {
        printf("Error occured in CreateDatabaseX....\n");
    }
    (void)hr;
}
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
    HRESULT hr = S_OK;

    hr = ::CoInitialize(NULL);
    if(SUCCEEDED(hr))
    {
        CreateDatabaseX();

        //Wait here for the user to see the output
        printf("Press any key to continue...");
        getch();

        ::CoUninitialize();
    }
    return 0;
}
[EOF]
Let it be! — Давайте есть пчелу!
Re[2]: Builder & Access создание файла БД
От: dyrnik  
Дата: 28.02.08 17:28
Оценка:
Здравствуйте, trophim, Вы писали:

T>Вот создание БД. Дальше копайте сами. МСДН вам в руки.


T>// !!! получен вручную при импорте Type Lib: C:\Program Files\Common Files\System\ado\msadox.dll: Microsoft ADO Ext. 2.8 for DDL and Security

T>#include <adox_ocx.h>

Библиотека не подключается.. Я понимаю, что комментерий тут не зря стоит, но понять его не могу.
Re[3]: Builder & Access создание файла БД
От: trophim Россия  
Дата: 28.02.08 18:31
Оценка:
Здравствуйте, dyrnik, Вы писали:

D>Здравствуйте, trophim, Вы писали:


T>>Вот создание БД. Дальше копайте сами. МСДН вам в руки.


T>>// !!! получен вручную при импорте Type Lib: C:\Program Files\Common Files\System\ado\msadox.dll: Microsoft ADO Ext. 2.8 for DDL and Security

T>>#include <adox_ocx.h>

D>Библиотека не подключается.. Я понимаю, что комментерий тут не зря стоит, но понять его не могу.


На примере CodeGear 2007: в старых версиях нужно сделать нечно схожее (а именно импортировать библиотеку типов).

Выбираем пункт меню: Component — Import component. Далее: "Import Type Library". В списке выбираем "Microsoft ADO Ext. 2.8 for DDL and Security". Галочку с Generate Component Wrappers убираем. После импорт подключаем тот хэдер, который среда сделает за вас сама. Вот и все сложности.
[EOF]
Let it be! — Давайте есть пчелу!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.