![]() |
|
![]() ![]() ![]() |
|
CyberBullDog |
|
||||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Доброго времени суток.
Проблема в том, что структура Access-ной БД заранее не известна. Имена таблиц из БД получаю так:
Он вместе с таблицами выдает и имена запросов. Можно ли их как-то разграничить? Заодно еще такой вопрос. Имена полей таблицы получаю так:
уже при работе программы возникает ошибка "Could not convert variant of type (Null) into type (String)", try ... catch ее не ловит, имена полей успешно записываются в ComboBox. С этим можно что-то сделать? Это сообщение отредактировал(а) CyberBullDog - 12.6.2007, 11:11 |
||||
|
|||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
вот глянь... какое там продолжение!!!
|
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Это конечно интересно, только вот в Access-е я ничего похожего не нашел.
Да чего там говорить, если в Access оператор select не знает что такое limit. SELECT Statement (Microsoft Access SQL): SELECT [predicate] { * | table.* | [table.]field1 [AS alias1] [, [table.]field2 [AS alias2] [, …]]} FROM tableexpression [, …] [IN externaldatabase] [WHERE… ] [GROUP BY… ] [HAVING… ] [ORDER BY… ] [WITH OWNERACCESS OPTION] (Источник: http://msdn2.microsoft.com/en-us/library/Bb208930.aspx) |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
он знает TOP! |
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
За TOP спасибо, буду знать.
Кто-нибудь знает как пользоваться ADOX? Импортировал Microsoft ADO Ext. 2.8 for DDL and Security, прикрутил полученные файлы (ADOX_TLB) к проекту. Что делать дальше не знаю. Примеры, которые видел, не прокатывают. Вот один из таких примеров (на Delphi): http://entwickler-forum.de/archive/index.php/t-10974.html |
|||
|
||||
Rodman |
|
|||
CIO ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 6144 Регистрация: 7.5.2006 Где: Ukraine ⇛ Kyiv ci ty Репутация: 1 Всего: 122 |
что конкретно
??? ты компонент нормально поставил?! |
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Ставил так:
Component->Import Component... Выбираю Import a Type Library, дальше ADOX (MS ADO Ext. ...), на след. странице оставляю как есть, выбираю Add Unit to 'Myproject' Пытаюсь уже не открыть готовую базу, а создать новую (все примеры почему-то направлены на это). Последний раз пробовал так:
Может я уже путаю два разных подхода. В итоге вылезает сообщение: "Интерфейс не поддерживается [Да][Нет][Отмена]". Было бы не плохо увидеть пример, если таковой есть. |
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
Строка коннекта из UDL-файла не подходит.
Получилось создать базу с такой строкой коннекта:
А вот как подключиться к уже существующей базе? |
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
В Delphi все получается, а в Builder-е что-то никак.
Буду писать на Delphi. ![]() |
|||
|
||||
mutex |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 17.10.2004 Репутация: 1 Всего: 3 |
CyberBullDog
Не надо заморачиваться с ADOX. Используйте обычные ADO-компоненты и метод TADOConnection->OpenSchema. Схематически алгоритм выглядит так: AdoLoadSchema("TABLE", ListBox1); //таблицы AdoLoadSchema("VIEW", ListBox2); //виды (запросы) void TForm1::AdoLoadSchema(AnsiString FilterValue, TListBox *ListBox) { int Bounds[2] = {0,3}; OleVariant Filter = VarArrayCreate(Bounds, 1, varVariant); ListBox->Clear(); Filter.PutElement(FilterValue, 3); TADODataSet *ADOTmp = new TADODataSet(NULL); try { ADOConnection1->OpenSchema(siTables, Filter, EmptyParam, ADOTmp); while (!ADOTmp->Eof) { if (AnsiSameText(FilterValue, ADOTmp->FieldByName("TABLE_TYPE")->AsString)) ListBox->Items->Add(ADOTmp->FieldByName("TABLE_NAME")->AsString); ADOTmp->Next(); } } __finally { delete ADOTmp; } } Тестовый проект на 6-м Билдере см. в TestMDB.zip Это сообщение отредактировал(а) mutex - 23.6.2007, 22:30 Присоединённый файл ( Кол-во скачиваний: 24 ) ![]() |
|||
|
||||
CyberBullDog |
|
|||
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 24.9.2006 Репутация: нет Всего: нет |
mutex, спасибо!
Обязательно попробую. ![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C++: Базы данных" | |
|
Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах. Благодарим за понимание. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Базы данных | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |