Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
8-92617
Egor Morenis
2002-05-23 06:06
2002.10.28
Как создать звук особой частоты!


1-92475
Дмитрий Баранов
2002-10-17 14:07
2002.10.28
Смещение адреса метода в COM


4-92794
REL_
2002-09-16 15:32
2002.10.28
Загрузка из ресурсов


3-92340
Kaginava
2002-10-07 08:08
2002.10.28
переход с IB5.5 на IB6.5


3-92375
PAVELsinicinV
2002-09-29 20:27
2002.10.28
Добавить ещё один столбец в существующую таблицу ...