Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
14-92667
Jumbot
2002-10-05 20:08
2002.10.28
СРОЧНО!!! HELP ME!!! SOS!!!


1-92424
KVBr
2002-10-17 16:08
2002.10.28
Как определить хендл по PID?


14-92692
savva
2002-10-07 12:11
2002.10.28
что за файл?


1-92418
pirat
2002-10-16 22:30
2002.10.28
Как же все таки поменить оконную функцию TEdit ??? :(( HELP!


6-92640
matrixxxx
2002-08-26 21:16
2002.10.28
Решился написать небольшой чат. Но принчип работы у него не через





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский