Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.05.20;
Скачать: CL | DM;

Вниз

обновление данных при multi-user работе   Найти похожие ветки 

 
Компромисс ©   (2012-01-10 14:38) [160]


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


Ок, в таком случае обновление не нужно. Возможно, временно не нужно.


 
Ega23 ©   (2012-01-10 14:40) [161]


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


Ну скажем так, это небольшая часть программы.
И там я, дабы не менять архитектуру, тупо на таймер повесил выборку записей, время которых больше максимального в последней выборки. Кстати, тоже ещё те пляски с бубном были с MSSQL и его 0, 3 и 7 дискретами в миллисекундах.


 
Компромисс ©   (2012-01-10 14:42) [162]

Ega23 ©   (10.01.12 14:33) [158]

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


 
sniknik ©   (2012-01-10 14:48) [163]

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


 
Ega23 ©   (2012-01-10 14:51) [164]


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


В идеале просмотр анекдота в Notepad логически равнозначен созданию отчёта по данному анекдоту. Который, ваще-та, должен блокироваться от изменений на это время.


 
Компромисс ©   (2012-01-10 15:01) [165]

sniknik ©   (10.01.12 14:48) [163]

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

Ega23 ©   (10.01.12 14:51) [164]

Значит, твоя аналогия неверна...


 
sniknik ©   (2012-01-10 15:03) [166]

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


 
sniknik ©   (2012-01-10 15:04) [167]

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


 
Ega23 ©   (2012-01-10 15:04) [168]


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


Вопрос: когда он это замечает?


 
Компромисс ©   (2012-01-10 15:04) [169]

Вообще предлагаю закончить спор следующим: лучше иметь программу, которая позволяет пользователю настроить автообновление. Потому как программа, которая этого не позволяет, получается из первой путем chAutoRefresh.visible := false и chAutoRefresh.checked := false :)


 
sniknik ©   (2012-01-10 15:07) [170]

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


 
Ega23 ©   (2012-01-10 15:08) [171]

Не надо подменять понятия "автонажимание на Refresh" и обновление по событию.
Это совершенно разные вещи.


 
Компромисс ©   (2012-01-10 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 и см. выше...


 
Компромисс ©   (2012-01-10 15:09) [173]

sniknik ©   (10.01.12 15:07) [170]

Оповещение выскакивает только в том случае, если notepad++ является активным приложением.


 
Ega23 ©   (2012-01-10 15:10) [174]


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


Не в этом дело. Окошко возникает в момент активизации окна нотепада. До этого он как висел на другом мониторе (в моём случае), так и висел, хоть всё поудаляй а потом насоздавай заново но уже с другим содержимым.


 
Компромисс ©   (2012-01-10 15:10) [175]

Ega23 ©   (10.01.12 15:08) [171]

Да, согласен. AutoUpdate лучше подходит наверное.


 
sniknik ©   (2012-01-10 15:12) [176]

> Вообще предлагаю закончить спор следующим: лучше иметь программу, ...
которая которая работает правильно вопреки желаниям клиента... и если автообновление не нужно/лишнее/в разрез логике, а клиент тем не менее "хочет", то нафиг такого клиента! и это не шутка, проще послать "замудрого" клиента насмотревшегося фантастики в детективах, чем после терять из-за него деньги.


 
sniknik ©   (2012-01-10 15:15) [177]

> До этого он как висел на другом мониторе (в моём случае), так и висел, хоть всё поудаляй а потом насоздавай заново но уже с другим содержимым.
так это не автоапдейт, это событийный, т.е. типа закончили редактировать документ, сохранили и по нему обновляется список заголовков документов. это ВЕЗДЕ есть.


 
Ega23 ©   (2012-01-10 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.


Очень показательно твоё "автообновление".


 
Компромисс ©   (2012-01-10 15:52) [179]

Ega23 ©   (10.01.12 15:17) [178]

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

ЗЫ. У меня на компе давно нет Delphi. Точнее, на этом и не было никогда.


 
Ega23 ©   (2012-01-10 16:00) [180]


> Веришь, что есть способ реализовать автообновление notepad++
> таким образом, чтобы он не требовал onActivate для оповещения?


Верю. Есть. Но почему-то признано разработчиками не нужным.
Можно (и более того - нужно!) следующее "автообновление" сделать:
1. Перед редактированием записи вытаскиваем самые актуальные данные по ней на данный момент.
2. После изменения записи (успешного, неуспешного - без разницы) - обновление общей выборки.
3. При активации окна - соответственно.
4. Ну и кнопка "Обновить" в целом.
А вот по таймеру... Лично я - категорически против.


 
Компромисс ©   (2012-01-10 16:21) [181]

Ega23 ©   (10.01.12 16:00) [180]

Нет у меня таймера. И notepad++ он тоже не нужен. Я и сам против таймеров (за редким исключением)


 
знайка   (2012-01-10 16:23) [182]


> А вот по таймеру... Лично я - категорически против.

А что с таймером не так?


 
Ega23 ©   (2012-01-10 16:32) [183]


> А что с таймером не так?


Лишняя нагрузка на сервер.


 
Anatoly Podgoretsky ©   (2012-01-10 21:38) [184]

> vuk  (10.01.2012 11:27:52)  [112]

И если увидит то где, допустим была 10 позиция, три записи до были удалены и
одна вставлена.


 
Anatoly Podgoretsky ©   (2012-01-10 22:30) [185]

> знайка  (10.01.2012 13:09:07)  [127]

Ну и нафига ты привел, ничего общего с обычной работой, да и строк всего
восемь, а не 400 000
И всеравно неприятно смотреть на эту свистопляску


 
Anatoly Podgoretsky ©   (2012-01-10 23:35) [186]

> Ega23  (10.01.2012 14:33:38)  [158]

Более того, ты можешь устроить пакость, сохранить его снова :-)


 
Anatoly Podgoretsky ©   (2012-01-10 23:39) [187]

> Ega23  (10.01.2012 14:40:41)  [161]

> 0, 3 и 7 дискретами

Да это серьезная проблема


 
Ega23 ©   (2012-01-11 01:41) [188]


> Anatoly Podgoretsky ©   (10.01.12 23:39) [187]
>
> > 0, 3 и 7 дискретами
>
> Да это серьезная проблема


Был в жутком шоке, когда на это напоролся. Даже не подозревал, что такое возможно. С тех пор крайне щепетильно к вопросам времени отношусь.



Страницы: 1 2 3 4 5 вся ветка

Текущий архив: 2012.05.20;
Скачать: CL | DM;

Наверх




Память: 0.8 MB
Время: 0.016 c
15-1326499809
KilkennyCat
2012-01-14 04:10
2012.05.20
новый вид памяти


15-1326421412
Андрей_1
2012-01-13 06:23
2012.05.20
Delphi 6 и Windows 7


15-1326237348
MastaK
2012-01-11 03:15
2012.05.20
Инфляция в шахматах


15-1326382496
brother
2012-01-12 19:34
2012.05.20
Хочу не понятного?


15-1326141003
Юрий
2012-01-10 00:30
2012.05.20
С днем рождения ! 10 января 2012 вторник