Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизADO-компоненты в DLL Найти похожие ветки
← →
malex_1 (2002-10-04 17:30) [0]Привет, мастера. Не могу создать TADOTable в DLL. TDataBase нормально прокатывает. Решил обойтись без BDE и ... exception...
← →
Polevi (2002-10-04 17:35) [1]код показывай
← →
oss (2002-10-05 01:18) [2]и чем ругается тоже показывай
← →
BlackTiger (2002-10-05 13:04) [3]Да и причем тут BDE? ADO не имеет никакого отношения к BDE.
← →
Balu (2002-10-05 13:28) [4]Да и TADOTable пользоваться не самый лучший вариает.
← →
BlackTiger (2002-10-05 14:35) [5]Между прочим, если ты используешь ADO, то TDatabase тебе нафиг не надо. В ADO - это Connection (TADOConnection).
Ели ты идешь через ADO, то ты автоматом отвязываешься от БДЕ.
А засовывать в DLL просто нечего, ADO - внешний интерфейс, его нельзя никуда вложить, он сам по себе. Не извращайся. Твоя прога будет работать везде, где установлен MDAC.
← →
malex_1 (2002-10-07 11:49) [6]Спасибо, конечно. Но все в порядке, достаточно было инициализировать COM в приложении, использующем функцию DLL. А что касается того, что ADO - не лучший вариант, то что же тогда подскажете. Мне нужно работать с разделяемыми DBF-ками, очень жестко. Чем испытывать возможности всяких там TDbf на отказ, лучше взять надежную модель. (TDbf вообще странно собирается разделять табличку с другими приложениями. К табличке нельзя обратиться из другой проги, пока эта не завершится.)
← →
sniknik (2002-10-07 12:02) [7]смотря к чему доступ делаеш ежели к примеру к MSSQL то ADO лутший и единственно правильный по моему мнению выбор. а вот TADOTable нет. правильней будет TADODataSet и TADOCommand.
к Dbf лутше тэйблом обойтись и без ADO но опять по ситуации. BDE чем не устраивает?
← →
malex_1 (2002-10-07 15:16) [8]Дело в том, что при запуске 10 (11, ну 12) приложений с БДЕ на одной машине, она отказывается работать. Количество таких запусков, по наблюдениям, зависит от операционки. 12 - под NT Server (Enterprise Edition) и 6-7 под Win2k (рус). А в чем дело, почему так, не в курсе?
← →
sniknik (2002-10-07 16:34) [9]и при этом говориш TDataBase нормально прокатывает? я бы так не сказал.
Надо искать глюк и уверяю тебя он не в BDE.
Запускаемые приложения (или копии одной и той же программы) так понимаю к одной и той же базе коннектятся? Но формат dBase особенно ранний, локальный по сути. И работаеш понятно на уровне тавлиц. Это возможный источник глюков.
Переводи все на SQL пусть локальный, запрос не будет постоянно держать таблицу открытой (ADO также будет только с датасетом работать). Немного лутше будет. Это как минимум. Как максимум держать базу в SQL сервере (MSSQL,IB....), 12 одновременно работающих зачем? количество юзеров рассчитываеш? при таком количестве стабильно работать только SQL сервер будет. даже псевдо сетевой парадокс только с большими усилиями тянет, про dbf вооще молчу, (поклонников парадокса прошу не возмущатся, большего количества одновременно работающих юзеров я не видел только слышал смутные слухи, но ....)
конечно этого нельзя сказать о dbf от вижуал фохпро, но у него свои тараканы. из дельфей нормально не поработаеш.
malex_1 (07.10.02 15:16)
-> А в чем дело, почему так,
привел бы код ошибки, для более предметного разговора?
← →
malex_1 (2002-10-07 17:06) [10]нет, ты немного не понял. Компонент TDataBase нормально создается, короче говоря TDataBase.Create(..) не вызывает ошибки. Но не это проблема. Попробуй запустить N программулек, которые только открывают dbf-ку, причем необязательно одну и ту же. Хотя бы 20 коннектов... А при моих требованиях на настоящий момент может быть до 16 программ выполнятся на одной тачке. И пусть даже 7 из них полезут в какую-то из табличек (пусть даже не одну и ту же). А ошибка... так ничего же не говорит, даже по try - except глухо... Управление передается в вызывающую функцию и все :) Чудеса... Правда NT Server выдает insufficient memory, но от этого не легче
← →
sniknik (2002-10-07 17:42) [11]я открывал до 1000 в цикле с селектом в квери больше там ничего не было. вылетало гдето между 900 и 1000. но всегда чтото говорило (кстати сравнивал с ADO разници нет те же 900-1000).
блок try - except у тебя в dll? если да то никакой ошибки не даст. или убери на время, или запускай саму Dll-ку в отладчике, или обрабатывай
except
on E: Exception do DoIfError(E.Message);.
end;
← →
malex_1 (2002-10-08 07:44) [12]так и сделал по try - except... не пойму, почему ошибка не выдается. А открытие в цикле, так с этим и у меня без проблем прокатывает, но здесь суть в том, что надо не в одном потоке это делать открывать. Напиши формочку, которой dbf-ку подсовываешь, и попробуй запусти ее раз 15 (15 экземпляров программы с открытым коннектом)... Думаю, что это недолго, потому что больше 15 коннектов у тебя не получится. Напиши try - except. Если будешь использовать TDataBase, то получишь что-нибудь вроде insufficient memory, а если тока TTable, то скорее всего ничего получишь. Я просто хочу убедиться в том, что это не мои глюки.. Благодарю за поддержку.
← →
sniknik (2002-10-08 09:07) [13]Да в таком варианте действительно вылетает, ошибка и c табле и с квери BDEEnjane insufficient memory ..... на 6 м запуске, вин2000 памяти еще дофига.
с ADO запустил 20 раз (не вылетело, надоело), но он таблицу открытой не держит и общается к ней только запросами. т.е. нужно 6 одновременно работаюших с таблицей прог запускать для эфекта, а это сложно.
это явно не твои глюки, а того что dbf не сетевой. ADO это просто "обходит" но расчитывать на него как на панацею по моему не стоит. переходи на SQL сервера.
кстати может это проблема чисто BDE-шная. у меня программка есть датабайс эдитор так она тоже 20 раз как минимум запускается и действует не как ADO, файл "держит" во всяком случае удалить его не удалось занят, с ADO можно. Но может она както узнает копии и пользуется на всех одним коннектом, кто знает, чужая программа потемки.
И кстати с парадоксом при запуске на одной машине те же проблемы (6 раз) но на разных то работает и открывают 1 и тот же файл, точно BDE не может больше сесий запустить на одном компе может от настроек зависит?
← →
malex_1 (2002-10-08 09:45) [14]спасибо за обсуждение, внимание и понимание вопроса.
моя бы воля, давно бы сидел где-нибудь на Oracle и DOA...
благодарю, вы, ребята, настоящие мастера
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.008 c