Конференция "Прочее" » обновление данных при multi-user работе
 
  • Компромисс © (10.01.12 14:38) [160]

    > почему удален? ссылка изменена, а новая в выбранный фильтр
    > не попадает. да и вообще это может быть временное изменение.
    >


    Ок, в таком случае обновление не нужно. Возможно, временно не нужно.
  • Ega23 © (10.01.12 14:40) [161]

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


    Ну скажем так, это небольшая часть программы.
    И там я, дабы не менять архитектуру, тупо на таймер повесил выборку записей, время которых больше максимального в последней выборки. Кстати, тоже ещё те пляски с бубном были с MSSQL и его 0, 3 и 7 дискретами в миллисекундах.
  • Компромисс © (10.01.12 14:42) [162]
    Ega23 ©   (10.01.12 14:33) [158]

    Речь про многопользорвательские программы. Сидишь, читаешь анекдоты в Notepad, в это время начальник удаляет у тебя соответствующий файл. В идеале, Notepad должен написать "Файл был удален пользователем "Big Boss"  с комментарием "Живо работать!" :)
  • sniknik © (10.01.12 14:48) [163]
    > в это время начальник удаляет у тебя соответствующий файл.
    не у тебя, а в сети/базе откуда ты его взял. а к тебе это изменение типа "автоприлетело".
  • Ega23 © (10.01.12 14:51) [164]

    > Речь про многопользорвательские программы. Сидишь, читаешь
    > анекдоты в Notepad, в это время начальник удаляет у тебя
    > соответствующий файл. В идеале, Notepad должен написать
    > "Файл был удален пользователем "Big Boss"  с комментарием
    > "Живо работать!" :)
    >


    В идеале просмотр анекдота в Notepad логически равнозначен созданию отчёта по данному анекдоту. Который, ваще-та, должен блокироваться от изменений на это время.
  • Компромисс © (10.01.12 15:01) [165]
    sniknik ©   (10.01.12 14:48) [163]

    Он его взял из файловой системы. Из нее и автоприлетит уведомление об удалении файла. Кстати, Notepad++ замечает, что файл был удален и спрашивает, продолжить ли его просмотр или закрыть...

    Ega23 ©   (10.01.12 14:51) [164]

    Значит, твоя аналогия неверна...
  • sniknik © (10.01.12 15:03) [166]
    > Который, ваще-та, должен блокироваться от изменений на это время.
    это при нормальной работе, с которой "автообновление" (полное, без ограничивающих условий) конфликтует. т.е. либо либо. а если - тут делаем, тут не делаем, а тут рыбу заворачивали, то это уже должно быть подробно описано. желаемая логика.
  • sniknik © (10.01.12 15:04) [167]
    > Кстати, Notepad++ замечает, что файл был удален и спрашивает, продолжить ли его просмотр или закрыть...
    локально? а если из сети открыть?
  • Ega23 © (10.01.12 15:04) [168]

    > Кстати, Notepad++ замечает, что файл был удален и спрашивает,
    >  продолжить ли его просмотр или закрыть...


    Вопрос: когда он это замечает?
  • Компромисс © (10.01.12 15:04) [169]
    Вообще предлагаю закончить спор следующим: лучше иметь программу, которая позволяет пользователю настроить автообновление. Потому как программа, которая этого не позволяет, получается из первой путем chAutoRefresh.visible := false и chAutoRefresh.checked := false :)
  • sniknik © (10.01.12 15:07) [170]
    > Вопрос: когда он это замечает?
    да это в общем то не сложно, система оповещает о событиях/изменениях в локальных файлах... (на дельфимастере даже статья с примерами есть, могу найти)
  • Ega23 © (10.01.12 15:08) [171]
    Не надо подменять понятия "автонажимание на Refresh" и обновление по событию.
    Это совершенно разные вещи.
  • Компромисс © (10.01.12 15:08) [172]
    sniknik ©   (10.01.12 15:03) [166]

    Так я ж и говорю - смотрим ТЗ и делаем, что там написано.

    sniknik ©   (10.01.12 15:04) [167]

    Не знаю, не могу проверить. Просить коллегу удалить файл не хочется.

    Ega23 ©   (10.01.12 15:04) [168]

    При переключении (Application.onActivate) на него точно делает. Когда еще делает, не знаю, потому как для удаления файла я должен deactivate notepad++, а потом срабатывает onActivate и см. выше...
  • Компромисс © (10.01.12 15:09) [173]
    sniknik ©   (10.01.12 15:07) [170]

    Оповещение выскакивает только в том случае, если notepad++ является активным приложением.
  • Ega23 © (10.01.12 15:10) [174]

    > да это в общем то не сложно, система оповещает о событиях/изменениях
    > в локальных файлах... (на дельфимастере даже статья с примерами
    > есть, могу найти)


    Не в этом дело. Окошко возникает в момент активизации окна нотепада. До этого он как висел на другом мониторе (в моём случае), так и висел, хоть всё поудаляй а потом насоздавай заново но уже с другим содержимым.
  • Компромисс © (10.01.12 15:10) [175]
    Ega23 ©   (10.01.12 15:08) [171]

    Да, согласен. AutoUpdate лучше подходит наверное.
  • sniknik © (10.01.12 15:12) [176]
    > Вообще предлагаю закончить спор следующим: лучше иметь программу, ...
    которая которая работает правильно вопреки желаниям клиента... и если автообновление не нужно/лишнее/в разрез логике, а клиент тем не менее "хочет", то нафиг такого клиента! и это не шутка, проще послать "замудрого" клиента насмотревшегося фантастики в детективах, чем после терять из-за него деньги.
  • sniknik © (10.01.12 15:15) [177]
    > До этого он как висел на другом мониторе (в моём случае), так и висел, хоть всё поудаляй а потом насоздавай заново но уже с другим содержимым.
    так это не автоапдейт, это событийный, т.е. типа закончили редактировать документ, сохранили и по нему обновляется список заголовков документов. это ВЕЗДЕ есть.
  • Ega23 © (10.01.12 15:17) [178]

    > Когда еще делает, не знаю, потому как для удаления файла
    > я должен deactivate notepad++, а потом срабатывает onActivate
    > и см. выше...
    >


    Ну вот тебе простой код:

    unit Unit31;

    interface

    uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, ExtCtrls, StdCtrls;

    type
     TForm31 = class(TForm)
       Timer1: TTimer;
       Label1: TLabel;
       Button1: TButton;
       procedure Timer1Timer(Sender: TObject);
       procedure Button1Click(Sender: TObject);
     private
       { Private declarations }
     public
       { Public declarations }
     end;

    var
     Form31: TForm31;

    implementation

    {$R *.dfm}

    procedure TForm31.Button1Click(Sender: TObject);
    begin
     Timer1.Enabled := True;
    end;

    procedure TForm31.Timer1Timer(Sender: TObject);
    begin
     Timer1.Enabled := False;
     if DeleteFile('E:\1.txt') then
       Label1.Caption := 'OK'
     else
       Label1.Caption := 'Fail';
    end;

    end.



    Очень показательно твоё "автообновление".
  • Компромисс © (10.01.12 15:52) [179]
    Ega23 ©   (10.01.12 15:17) [178]

    Это к чему? Я уже 3 раза писал, что всё определеятся пожеланиями заказчика. Веришь, что есть способ реализовать автообновление notepad++ таким образом, чтобы он не требовал onActivate для оповещения?

    ЗЫ. У меня на компе давно нет Delphi. Точнее, на этом и не было никогда.
 
Конференция "Прочее" » обновление данных при multi-user работе
Есть новые Нет новых   [134431   +10][b:0.001][p:0.001]