Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Вниз

Как по TCP IP подключиться к RecordSet Другого приложения?   Найти похожие ветки 

 
d@vinchi ©   (2009-09-22 13:59) [0]

Первое приложение - служба, создает, открывает, пишет данные в БД (mdf) средствами DAO, второе приложение - консоль управления для этой службы... Возможно ли из консоли (второе приложение) подцепить DBGrid к открытому RecordSet в первом приложении (т.е. службе)? Нужно хотябы направление как это сделать или что-то подобное. Это необходимо, т.к. обновлять рекордсет по уведомлению от службы получается, но не очень корректно, уведомления приходят а в результатах ADOQuery.Requery нет последних записанных данных, т.е. обновление происходит слишком медленно... И еще минус - второму приложению нужен прямой доступ к x.mdf файлу от чего тоже хотелось бы избавиться...


 
Сергей М. ©   (2009-09-22 14:11) [1]


> уведомления приходят а в результатах ADOQuery.Requery нет
> последних записанных данных


Можно подумать, что если ты таки умудришься "по TCP\IP подключиться к RecordSet Другого приложения", то данные от этого станут записываться быстрее)


 
d@vinchi ©   (2009-09-23 12:31) [2]


> то данные от этого станут записываться быстрее)

не записываться, а передаваться клиенту на отображение без задерки, т.е. сначала отобразились а потом записались, это мое предположение и вот почему...
если из второго приложения которое подключено к БД через ADOConnection и выводит данные в DBGrid которые формирует ADOQuery выполнить следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
 I: Integer;
begin
 for I:=0 to 9 do
   begin
     ADOQuery1.Append;
     ADOQuery1.FieldByName("FieldName").AsString:="Test "+IntToStr(I);
     ADOQuery1.Post;
   end;
end;

... то данные в DbGrid отображаются мгновенно, из чего я и предположил что новые данные первом делом поступают в DataSource откуда уже в DbGrid и далее уже пишутся непосредственно в БД на диск что занимает некоторое время.


 
Медвежонок Пятачок ©   (2009-09-23 12:34) [3]

сохранить рекордсет в xml пакет и передать второму приложению.
в нем загрузить датасет из пакета и показать его в гриде.


 
Сергей М. ©   (2009-09-23 12:34) [4]

Подозревю, что дело всего лишь в незнании и/или непонимании работы механизма транзакций.


 
Sergey13 ©   (2009-09-23 13:01) [5]

> [2] d@vinchi ©   (23.09.09 12:31)
> не записываться, а передаваться клиенту на отображение без задерки
Не боищься, что отображаться начнет то чего нет в базе и возможно не будет никогда?

> если из второго приложения
Возможно, если выполнить все тоже самое, но через второй комплект компонент ADOConnection и ADOQuery и "мгновенность" будет слабее.

>     ADOQuery1.Append;
Если подобными методами работает и пишущий сервис, то я не удивлюсь плохому быстродействию этой пары.
Кстати твои приложения работают на одной машине? Где лежит база и каков запрос в твоем ADOQuery1?

И главное - чего хочется в идеале? Чтоб записи показывались в реальном времени?


 
d@vinchi ©   (2009-09-23 13:21) [6]


> Сергей М. ©   (23.09.09 12:34) [4]
> Подозревю, что дело всего лишь в незнании и/или непонимании
> работы механизма транзакций.

согласен, я затем сюда и обратился, чтобы грамотные люди подсказали или направили на нужный материал...


> Sergey13 ©   (23.09.09 13:01) [5]
>     ADOQuery1.Append;
Если подобными методами работает и пишущий сервис...

я показал чтобы понятно было о чем речь, в службе вообще DAO используется и пишется напрямую через рекордсет.

Приложения тестирую на одной машие, в последствии будут на разных, запрос просто на выборку всего что есть в нужной таблице без всяких условий, использовал такой метод т.к. тут же на форуме кто-то рекомендовал делать именно так потомучто ADOQuery работает быстрее чем ADOTable...

И идеале отображение того что пишется в БД на втором приложении в реальном времени...


 
Сергей М. ©   (2009-09-23 13:48) [7]


> в службе вообще DAO используется


Так а зачем такая солянка сборная ?
Что мешает приложению-монитору работать с базой через тот же DAO ?


 
Sergey13 ©   (2009-09-23 13:56) [8]

> [6] d@vinchi ©   (23.09.09 13:21)
> И идеале отображение того что пишется в БД на втором приложении в реальном времени...

А примерные объемы записываемого можно узнать?

> запрос просто на выборку всего что есть в нужной таблице без всяких условий
И сколько в ней нужного?


 
d@vinchi ©   (2009-09-23 14:00) [9]

спросто в службе вообще не использую VCL компоненты и в случае с службой DAO "компактнее", в приложении-мониторе VLC компонеты, т.к. это обычное приложение и компактность тут не так важна на мой взгляд...

а почему солянка, какая разница каким образом происходит взаимодействие с БД или есть разница?

Вообще складывается впечатление что DAO работает медтенне т.к. происходит гораздо больше вызовов чем у ADO...


 
Сергей М. ©   (2009-09-23 14:15) [10]


> d@vinchi ©   (23.09.09 14:00) [9]


А чем обоснован выбор именно MDF-формат в кач-ве контейнерного формата ?


 
d@vinchi ©   (2009-09-23 14:18) [11]


> Sergey13 ©   (23.09.09 13:56) [8]

О примерных объемах тяжело сказать - все зависит от количества клиентов работающих со службой и генерирующих события для лога и от интенсивности работы этих клиентов, поэтому от 10-50 сторк в час до 100-500 от одного клиента...


> И сколько в ней нужного?

при начале мониторнга нужно все начиная с того как мониторинг начался, далее критерии нужного могут измениться...

Отвечая на вопрос об объемах записываемого и думая об отображении в реальном времени представил как будет отображаться даже 100 сток в минуту (10 клиентов)...


 
d@vinchi ©   (2009-09-23 14:23) [12]

добавлю к 11, т.е. догадываюсь к чему спрашивал Sergey13 об объемах отображаемого в реальном времени - большие обемы будут неинформативны, тут наверное имеет смысл таймер, а не уведомления...


> А чем обоснован выбор именно MDF-формат в кач-ве контейнерного
> формата ?

удобный формат - все таблицы, индексы, обекты и т.д. все в одном файле...


 
Сергей М. ©   (2009-09-23 14:31) [13]


> d@vinchi ©   (23.09.09 14:23) [12]


Понятно.
Я-то подумал, то это безусловное требование Заказчика)
Ну, положим, аналогичными "удобствами" обладаеет далеко не одна СУБД.


 
d@vinchi ©   (2009-09-23 15:02) [14]

В моем случае самым идеальным и правильным использовать на стороне приложения монитора RDSConnection1 -> TADODataSet -> TDataSource -> TDbGrid, а на стороне службы реализовывать COM объект для предоставления доступа RDSConnection к локальному рекордсету...


 
Sergey13 ©   (2009-09-23 16:05) [15]

> [12] d@vinchi ©   (23.09.09 14:23)
> тут наверное имеет смысл таймер, а не уведомления...

Раз эти данные смотрит человек, то имеет смысл кнопка "Обновить". Таймер это тоже знаете ли....

> [11] d@vinchi ©   (23.09.09 14:18)
> все зависит от количества клиентов

Так клиентов еще и не один! Тогда имеет смысл выбрать все таки серверную СУБД. Есть масса неплохих и при этом даже бесплатных.


 
d@vinchi ©   (2009-09-23 16:19) [16]


> Тогда имеет смысл выбрать все таки серверную СУБД

не очень хочется обязывать конечного пользователя иметь серверную СУБД для ведения логов моей проги, к томуже ведение логов опционально и тебуется только на этапе первоначальной настройки проги или при возникновении проблем, с другой стороны при использовании MDF на компе обязательно должен быть установлен MS Access или я ошибаюсь?

Есть ли возможность выполнить обновление ADOQuery таким образом, чтобы в него вошли только новые данные с момента последнего запроса при условии что критерии запроса не менялись?


 
Медвежонок Пятачок ©   (2009-09-23 16:25) [17]

ну пусть лог.
пусть даже в бд.
почему из этого следует, что смотреть эти логи надо обязательно в гриде?


 
Sergey13 ©   (2009-09-23 16:28) [18]

> [16] d@vinchi ©   (23.09.09 16:19)
> не очень хочется обязывать конечного пользователя иметь
> серверную СУБД для ведения логов моей проги

Не надо думать, что серверная СУБД это здоровый шкаф с лампочками. Например firebird - это просто запущеный сервис на любой (практически) машине.


 
Медвежонок Пятачок ©   (2009-09-23 16:33) [19]

ставить сервер или просто использовать мдб для логов, тем более временных, для периода отладки и внедрения - это круто.

еще и программу написать для их чтения.

воистину дурная голова рукам покоя не дает.
текстовый лог - чего еще больше то?


 
d@vinchi ©   (2009-09-24 09:56) [20]


> Медвежонок Пятачок ©   (23.09.09 16:33) [19]
> ставить сервер или просто использовать мдб для логов, тем
> более временных, для периода отладки и внедрения - это круто.
>

не только для логов, в этой БД еще куча других таблиц, которые хранят совсем другие данные...

> еще и программу написать для их чтения.

программа не только читает логи, просмотр логов это одна из многочисленных ее функций...

> воистину дурная голова рукам покоя не дает.

не стоит так говорить когда не знаешь всей сути, ты же даже о 99% не в курсе о чем речь...

> текстовый лог - чего еще больше то?

не просто тестовый, для нормальной отладки надо в реальном времени видеть какие события происходит после выполнения человеком конкретных действий над аппаратным обеспечением, просто просмотреть лов в текстовом виде не даст никакой информации...

to [ALL]
всем спасибо, решение в итоге нашел благодаря изложенным тут мыслям!
еще раз всем спасибо!


 
Медвежонок Пятачок ©   (2009-09-24 10:24) [21]

не стоит так говорить когда не знаешь всей сути, ты же даже о 99% не в курсе о чем речь...

Здесь обсуждается конкретный вопрос, а не то, что там у тебя за кадром подразумевается.

не просто тестовый, для нормальной отладки надо в реальном времени видеть какие события происходит после выполнения человеком конкретных действий над аппаратным обеспечением, просто просмотреть лов в текстовом виде не даст никакой информации...

Я текстовые логи вижу в онлайне в реальном режиме времени с прокруткой окна. (F3 в фаре) - и чего?


 
sniknik ©   (2009-09-24 10:42) [22]

> всем спасибо, решение в итоге нашел благодаря изложенным тут мыслям!
наверняка кривое такое же как действия после другого совета с форума ->

> т.к. тут же на форуме кто-то рекомендовал делать именно так
скорее всего рекомендация была несколько иная...
> потомучто ADOQuery работает быстрее чем ADOTable...
ничего подобного, работают они ОДИНАКОВО быстро, просто ADOTable идеологически НЕВЕРНО и потому медленно (много лишних действий/данных делается/перемещается)... вот,  но если туже идеологию использовать у других компонентов (как ты похоже и сделал судя по обрывку кода) то получится ТОЖЕ САМОЕ.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2009.11.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.242 c
1-1222903199
samz
2008-10-02 03:19
2009.11.08
Наследование форм и Parent контрола


1-1223364687
Vlad Oshin
2008-10-07 11:31
2009.11.08
DLL, с пакетами, использую DevExpress, компоненты xxDockxx, AV


1-1223007350
Jungle
2008-10-03 08:15
2009.11.08
Скрыть определённые строки в ComboBox


2-1253113553
B&W
2009-09-16 19:05
2009.11.08
VCL скорость работы


2-1253624052
faiwer
2009-09-22 16:54
2009.11.08
Trace Into





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский