Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обновление данных на форме [D7]


Страницы:   1 2 3

chargos ©   (2008-05-30 15:25:00) 

Здравствуйте!
Подскажите, пожалуйста, в чем может быть проблема.
У меня есть 2 программы, которые работают с одной таблицей ADOTable одновременно.В первой программе по кнопке(в бесконечном цикле) проверяются нажатия клавиш и вносятся в таблицу в определенную строчку.
ADOTable.Edit;
......
ADOTable.Post;
ADOTable.Edit;
Во второй программе (тоже в бесконечном цикле) происходит чтение из этой же таблицы(с задержкой в секунду) и данные заносятся в соответствующие метки(TLabel), причем каждый раз таблица открывается и закрывается. Но данные на форме в метках не изменяются. Сначала подумал на Post(в первой программе). Добавил после него Close/ Open. Но это не помогло. Подскажите, в чем может быть дело?


chargos   (2008-05-30 17:05:00) [21]

Stas ©
Если закрыть второе приложение и открыть, тогда данные обновляются


Stas   (2008-05-30 17:05:00) [22]

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


chargos   (2008-05-30 17:04:00) [23]

Reindeer Moss Eater ©
>теперь положи второй грид на вторую форму в читающем приложении.
Положил - данные не обновляются.... Подумаю в этом направлении :)
Если есть желание, предлагаю перенести обсуждение на понедельник, а то пора уже с работы :)
Всем спасибо!


Stas   (2008-05-30 17:04:00) [24]

ну 2-е приложение закрываешь. Потом опять открываешь его что оно отображает в лабелах? обновленные данные или старые?


chargos   (2008-05-30 17:02:00) [25]

Stas ©  
То есть?


Stas   (2008-05-30 16:57:00) [26]

А если 2-е закрыть, и открыть данные будут последние?


chargos   (2008-05-30 16:53:00) [27]

Stas ©  
Да


Reindeer Moss Eater   (2008-05-30 16:52:00) [28]

молодец.
теперь положи второй грид на вторую форму в читающем приложении.


Stas   (2008-05-30 16:52:00) [29]

ОК, А во второй программе в начале цикла делаете Close/Open ?


chargos   (2008-05-30 16:47:00) [30]

Первая программа при нажатии на кнопку постоянно фиксирует изменения нажатия клавиш и заносит данные в базу .mdb. Если поставить Грид на форме, то видно, что данные в записях меняются. Вторая использует эту же базу. В ней в цикле формируются лэйблы, в которые каждый раз вносятся данные из этой базы.С первой записи по последнюю. Согласен, не очень удачно, но тем не менее... Так вот, во второй программе в цикле идет открытие базы, изменение данных в метках, потом закрытие.  Application.ProcessMessages после каждого цикла есть, но данные на форме в метках не обновляются, а остаются такими же, как при запуске.


Reindeer Moss Eater   (2008-05-30 16:42:00) [31]

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

ПОЛОЖИ ГРИД НА ФОРМУ. На пять минут.


Stas   (2008-05-30 16:37:00) [32]

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


chargos   (2008-05-30 16:36:00) [33]

Насчет Пушкина спасибо, конечно, только врядли пригодится :)
Я не очень силен в программировании, но может, кроме шуток, будет и дельный совет?
Насчет позиционирования: Для чего это нужно, если в каждом цикле база вначале открывается и данные в метках на форме должны обновляться с первой записи по последнюю?

MsGuns ©
Это 2 программы, использующие одну базу.
Можно поподробнее насчет транзакций? :)


Reindeer Moss Eater   (2008-05-30 16:10:00) [34]

> Никто, т.к. данные из нее только Читаются.

Ты пушкина попроси спозиционировать перед чтением. Он добрый.


Reindeer Moss Eater   (2008-05-30 16:07:00) [35]

у него два процесса а не две формы.
а про транзакции ему никто еще не рассказал, чтобы он их умудрился не коммитить в первом прцессе
:)


MsGuns   (2008-05-30 16:05:00) [36]

Чтобы датасет обновился (а именно это и требуется в сабже, как я понял), нужно его переоткрыть (именно переоткрыть, а не отрефрешить видимую часть (если речь идет о DB-Aware контролах), т.к. он понятия не имеет какая именно запись изменена на сервере.
Другими словами, чтобы на форме 1 "увидеть" изменения, сделанные в форме 2, надо датасет формы 1 переоткрыть. Перед этим, естественно, нужно завершить транзакцию в форме 2. Как часто это делать (подтверждать изменения и переоткрывать "читающий" датасет, зависит о концепции построения интерфейса.


stud   (2008-05-30 16:05:00) [37]


> Грид мне не нужен.  Нужны именно лэйблы.
> >А кто ее позиционирует после открытия на "определенную
> строчку" ?
> Никто, т.к. данные из нее только Читаются.

это сильно!! т.е. если данные читаются то позиционировать их не надо? особенно при таком отображении


chargos   (2008-05-30 16:03:00) [38]

Reindeer Moss Eater ©  
>Через лейблы у тебя уже сделано.Поздравляю
Спасибо :) Но при запуске данные показываются один раз и больше не обновляются, хотя есть и цикл, и Application.processmessages


chargos   (2008-05-30 16:02:00) [39]

Stas ©
Application.processmessages есть.


Reindeer Moss Eater   (2008-05-30 16:01:00) [40]

Но мне нужно во второй и именно через лэйблы

Через лейблы у тебя уже сделано.
Поздравляю.


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо