![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновление данных на форме [D7]
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]Но мне нужно во второй и именно через лэйблы
Через лейблы у тебя уже сделано.
Поздравляю.