OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 12:15

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: Базы данных
СообщениеДобавлено: Понедельник, 28 Ноябрь, 2005 18:25 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 18:08
Сообщения: 76
Может кто-нибудь описать подключение базы данных ББ? Я пробовал, не получилось, делал так:
1. Панель управление / Администрирование / Источники данных (ODBC)
2. Закладка Пользовательский DNS / Добавить ...
3. Добавлял новое имя, драйвер dbase (Paradox тоже пробовал)
Путь к стандартным базам данных от Delphi 7 - у меня такой:
c:\program files\common files\borland shared\data
4. Запускаю в ББ в меню SQL Browser... В поле редактирования ввожу имя добавленного DSN, в поле запроса: select * from animals. Жму Execute. Появляется окно ODBC Error: "[Microsoft][Драйвер ODBC Paradox] Дополнительная возможность не реализована", после этого окна - другое "Объект Animals не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 28 Ноябрь, 2005 18:36 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 18:08
Сообщения: 76
Дополню: в случае драйвера dBase IV - можно увидеть только заголовок таблицы, но данных нет. Версия dBase-V и все версии Paradox - не работают. В логе, как обычно - execution failed.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 28 Ноябрь, 2005 18:49 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я с этим тоже помучился когда-то. Правда, использовал Access. А вот с MySQL все прекрасно работало. Я грешил на то, что Access сделан не по стандарту, как любит Microsoft...

А решение оказалось простым:

в поле Driver ввести не SqlOdbc, а SqlOdbc3 (это имена модулей-драйверов из подсистемы Sql), чтобы использовался протокол ODBC v.3 а не более ранний, который давно устарел.

Вообще-то с БД у BlackBoxa все нормально. Используем постоянно, работает без всяких косяков.
Если начнете использовать SqlControls, наткнетесь на проблему с кодировками при отображении русского текста. Проблему эту мы решили, скачайте наш Service Pack 2 с этого сайта - раздел "Компоненты".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 28 Ноябрь, 2005 19:35 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 18:08
Сообщения: 76
Вы опередили меня минут на 5 :)) . Я порылся в документации (спасибо Вашей фирме и за перевод) и нашел то решение, которое Вы уже описали - SqlOdbc3. А можно поподробнее об SqlControls (знаю пока только таблицу :oops: ), а то я совершенно не в курсе, что есть такое...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 28 Ноябрь, 2005 21:48 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А что там подробнее? Фабрика класса SqlControls.dir позволяет создавать элемент управления - таблицу, привязывая его к интерактору типа SqlDB.Table. Эта таблица показывает данные, позволяет менять размер столбцов и их выравнивание (по щелчку на имени столбца), отлавливает все клики и отсылает в свою процедуру уведомления.

Можно создавать динамически - через SqlDB.dir.NewTable, а потом открывать возвращенный View через Views.OpenAux.

А можно вызвать команду SqlCOntrols.DepositTable, таблица скопируется в буфер обмена. Затем положить ее на форму и привязать статически.

Ну и еще там есть Anchor - это нечто, служащее для того, чтобы соединение с БД жило столько же, сколько и окно, а потом обрывалось. Т.е. проблемы "висячего указателя" в ББ быть не может, но сама сессия с БД жрет ресурсы. Этим я не пользовался. В документации олисывается.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 02 Октябрь, 2006 11:10 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
В продолжение темы.

При закрытии модуля, использующего ODBC-подключение, срабатывает якорь, в Уведомителе которого стоит код
Код:
db := NIL;

где тип переменной db объявлен как
Код:
db : SqlDB.Database;

И этот код заставляет весь BlackBox замереть секунд на 5-7, как я понимаю, для того, чтобы деактивировать подключение к БД.
Кто-нибудь сталкивался с таким? Задержка довольно большая, доставляет дискомфорт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 02 Октябрь, 2006 14:28 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А какое отношение имеет "закрытие модуля" к "якорю с уведомителем"? В смысле, при закрытии формы, на которой лежит якорь?
Я с такой задержкой не сталкивался, поскольку закрывал коннект с базой обычно только при выходе из приложения.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Понедельник, 02 Октябрь, 2006 17:32 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Ну не сказать же "приложение", когда мы имеем дело с компонентным каркасом BB :) Я, пожалуй, неверно выразился - модуль не "закрывается", а завершает работу при нажатии кнопки на форме. В этот же момент срабатывает Уведомитель, который инициирует сборку мусора.
Я немного поэкспериментировал, чёткой зависимости зависания от момента сборки пока не отследил (недопонимаю, видать), но определённо могу сказать, что комбинация
Код:
db := NIL;
Kernel.Cleanup;

приводит к подвисанию BB на 5-7 сек.
Причём если отказаться от Kernel.Cleanup, то форма закрывается моментально, но зато при очередной попытке откомпилировать модуль происходит это же зависание.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 03 Октябрь, 2006 01:36 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Ну да, определенно дисконнект жрет время... Но так ли этот дисконнект (и якорь) нужен?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 03 Октябрь, 2006 12:41 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Илья Ермаков писал(а):
Ну да, определенно дисконнект жрет время... Но так ли этот дисконнект (и якорь) нужен?


Якорь, согласен, не особо нужен, всё можно делать ручками.
Но дисконнект - как же не нужен? Пусть один раз будет, при закрытии приложения. Я о том, что тормоза при дисконнекте выглядят как-то... ненормально, что ли... Хотя на других компах не проверял, возможно, это такая особенность конфигурации моей системы :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вторник, 03 Октябрь, 2006 13:26 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я не думаю, что это оверхед Блэкбокса. Скорее всего, особенность поведения ОДБЦ-драйвера базы на конкретной машине.
В моих приложениях можно выходить и выполнять повторный коннет под другим логином - тормозов не было. СУБД - МайСиквель 4-й...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB