|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Обновление ADOTable
Всем привет!
Начну с того что не один форм/статью я прочитал по этой проблеме, решения есть, но они без толковые. В чем суть. Имеются две копии программы (на двух разных компьютерах), обе работают с БД, которая просто лежит в общей папке. И при изменении какой либо таблицы, программа посылает сообщение по локальной сети, что собственно некая таблица изменилась необходимо обновить. И все вроде бы ничего, но сообщение посылается мгновенно, а обновляется не совсем. Если после приема сообщения не выждать 3-4 секунды данные не обновиться вообще. Использованные компоненты ADOconnect, ADOTable, DataSourse, DBgridEh. База данных Access. Обновлять пытался так: Код:
form1.ADOTable.Active:=false; form1.ADOTable.Active:=true; form1.DataSource1.DataSet.Refresh; form1.DataSource1.Enabled:=false; form1.DataSource1.Enabled:=true; form1.ADOTable.Refresh; form1.DBGridEh1.Refresh; Этим кодом который нашел в интернете: Код:
procedure ReOpenDataSet(DataSet: TDataSet; StayActiveRecord: boolean = true); begin with DataSet do begin if StayActiveRecord then Tag := Fields[0].AsInteger; DisableControls; Close; Open; if StayActiveRecord then Locate(Fields[0].FieldName,Tag,[]); EnableControls; end; end; Но результата к сожаление нет . Обновляет, но так же 3-4 секунды - это долго. Мне посоветовали использовать компонент ADOQeury мол с ним таких проблем нету, да я сам где читал, что кому то это помогло. Хорошо что не весь проект переписал, а только к одной таблице его поставил, потому что результат оказался точно таким же. Пробовал я запускать обе программы на одном ПК, да бы исключить проблему с сетью. Исключил. Что собственно хотелось бы узнать, как грамотно/правильно обновить данные. Хотя бы с задержкой 1-1,5 сек. Или может дело еще в чем? Надеюсь на вашу помощь. Спасибо. И еще кое что, если может у кого есть хорошие статьи или книги по этой проблеме, ткните. Просто хотелось бы знать, почему вообще так происходит и разобрать по поподробнее. Последний раз редактировалось listerine, 28.05.2013 в 17:51. |
#2
|
||||
|
||||
похоже дело еще в чем-то
сеть? фаерволы? антивири? а как adoquery использовал? у меня даже на удаленном сервере десятки запросов в секунду отлетают Я за здоровый экстрим! Спасибо за "спасибо") |
#3
|
||||
|
||||
Насколько я в курсе, к сожалению это не лечится. Обновление акцесовского набора данных идет с приличной задержкой секунд в 5. Мгновенного не выйдет. Единственный вариант - перейти на SQL-сервер. Там все будет обновляться вовремя.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#4
|
|||
|
|||
Цитата:
Mark, пишет что все норм, да и на других формах читал что у людей по 0,34 - 0,57 сек. обнова проходит. Но если честно надежды уже почти нет, что найду решение. |
#5
|
||||
|
||||
Я как-то пробовал ради эксперимента замутить чат через АДО на Акцесе. И вот там я наткнулся на те-же грабли. Запускал 4-5 клиентов и они должны были общаться в реальном времени. Написал простенький скрипт имитирующий вопрос-ответ группового чата. И вот периодически там наступал клин из-за задержки обновления общей таблицы. Но, стоило перевести все это хозяйство на MSSQL и все заработало как часы. Вот такие пироги.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
Цитата:
MSSQL никогда не работал, но раз другого выхода нет - буду разбираться. Есть пару вопросов. Поставил MSSQL, создал БД, перенес все свои данные с Access. Подключил вот так: Код:
form1.ADOConnection1.ConnectionString:= 'Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BDIC;'+ 'Data Source=ONECOMP\SQLEXPRESS;Use Procedure for Prepare=1;'+ 'Auto Translate=True;Packet Size=4096;Workstation ID=ONECOMP;'+ 'Use Encryption for Data=False;'; Все вроде как работает. Но не могу подключиться с другого ПК по локальной сети. Я так понимаю нужно что то из пакета MSSQL дополнительно устанавливать? Если не секрет то что? А то ставить весь пакет(670мб) нецелесообразно да и незачем я предполагаю. Или можно как то обойтись без дополнительных установок? |
#7
|
||||
|
||||
Цитата:
и где я писал что все норм? Я за здоровый экстрим! Спасибо за "спасибо") |
#8
|
|||
|
|||
Цитата:
Прошу прощения за ник. Вероятно я вас не так понял. |
#9
|
|||
|
|||
Цитата:
Сеть в норме. Да я и как уже говорил на одном компьютере проверял. Насчет фаерволов и антивирей тоже была такая мысль, но результата не дала. Сейчас обратил внимание что данные с опоздание добавляются в саму бд. То есть открыл свою программу и бд через MS Access, отредактировал строку через свою программы изменения прошли через как раз 3-4 секунды. Где подвох? Может настройки самой бд? |