Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

IBX и обновление данных   Найти похожие ветки 

 
Nexel   (2004-11-24 10:18) [0]

Hello all!
Начал переводить базу данных из файловой в клиент - серверную и вот на что наткнулся, при завершении транзакции добавление или изменение данных становяться видимыми всем пользователям однако другие пользователи не видят этих обновлений, ПОЛУЧАЕТСЯ ЧТОБЫ ПОЛЬЗОВАТЕЛЬ УВИДЕЛ ИЗМЕННЕИЯ ДРУГИМИ КЛИЕНТАМИ НУЖНО ОТКРЫВАТЬ И ЗАКРЫВАТЬ НАБОР ДАННЫХ(ТАБЛИЦУ)???? Подскажите что можно сделать или лучше вообще с InterBase не связываться?


 
Johnmen ©   (2004-11-24 10:20) [1]

Надо правильно указать параметры транзакции.


 
Sergey13 ©   (2004-11-24 10:21) [2]

2Nexel   (24.11.04 10:18)
>Начал переводить базу данных из файловой в клиент - серверную и вот на что наткнулся
А что ты хотел получить от перехода? Это нормальное поведение для любого сервера БД. Они показывают инфу на момент запроса.


 
Nexel   (2004-11-24 10:26) [3]

Я сейчас не говорю а правильности транзакций, параметры таковы
write
read_committed
rec_version
nowait

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


 
Sandman25 ©   (2004-11-24 10:29) [4]

[3] Nexel   (24.11.04 10:26)

В принципе, не следует отображать жуткое количество таблиц и данных. Вообще с "таблицами" (TIBTable и пр.) работать не следует, заменяя их запросами (выборками).


 
Sergey13 ©   (2004-11-24 10:31) [5]

2[3] Nexel   (24.11.04 10:26)
>открытие - закрытие датасетов довольно как мне кажется жуткое занятие учитывя количество таблиц и количество данных,
Именно "учитывя количество таблиц и количество данных" и, добавлю, количество одновременно работающих пользователей - это единственно правильный подход.

>кто нибудь сталкивался с этим делом в принципе???
Не, ты первый. 8-)


 
Johnmen ©   (2004-11-24 10:34) [6]

>Nexel   (24.11.04 10:26) [3]

Все сталкивались. И, как правило, идеологически это делается "кнопкой <Обновить>". И тип БД здесь совершенно непричём.
Использование механизма генерации событий в IB представляется порочным или очень узко специализированным.


 
Nexel   (2004-11-24 10:37) [7]

Т.е. елки палки, из за одной записи перечитать все данные это ж одуреть можно! Встаить таймер и по таймеру валить

With TIBQuery do
 Begin
   Close;
   Open;
 End;

У меня таблиц штук 50... или я в корень не прав в своих рассуждениях...???


 
Nexel   (2004-11-24 10:39) [8]

to Johnmen
Да но кнопка обновить не совсем подойдет, т.к. это оперативный учет и продажи ведутся в реал-тайм отображение остатков здесь очень важно автоматическое иначе могут возникнуть траблы серьезные


 
Sergey13 ©   (2004-11-24 10:42) [9]

2[7] Nexel   (24.11.04 10:37)
>Т.е. елки палки, из за одной записи перечитать все данные это ж одуреть можно!
Это все от незнания основ, как правило. SQL, теории баз, проектирования и т.д. Это не наезд, я сам через это проходил. И у тебя пройдет, со временем, если не бросишь это дело.


 
Johnmen ©   (2004-11-24 10:43) [10]

>Nexel

>У меня таблиц штук 50...

И на все смотришь одновременно ? :)))

>[8]

Есть кнопа "Показать текущие остатки" и лейбл "Остатки показаны по состоянию на 01.04.2099 23:59:59"


 
Nexel   (2004-11-24 11:03) [11]

Нет вы меня немного не поняли, постораюсь пояснить, по поводу SQL и так понятно что генерится запрос посылается серверу и его результат и отображается клиенту на момент запроса, клиенты могут работать с различными наборами данных в БД справочники, документы и т.п. все это желательно обновлять автоматически на каждом клиенте, так вот, как это лучше сделать по таймеру с определенным интервалом просто переоткрыть все наборы или как??? что лучше сделать меня только это интересует! через IBEVENTS?Или типа создать доп таблицу соответсвующий триггер и накапливать данные об изменениях типа имя таблицы и как только таймер тикнул зачитать из этой таблицы данные и обновить их??? я уже голову сломал как будет правльнее и коректнее опять же обновляя каждые 5-15 секунд запросы возрастает нагрузка на сервер.... короче полный геморой я уже не знаю как лучше поступить, на счет не знания SQL и теории баз данных это вы зря, просто именно на дельфах работать с этим не приходилось в основном все на web интерфейсе было


 
Sergey13 ©   (2004-11-24 11:08) [12]

2[11] Nexel   (24.11.04 11:03)
>Нет вы меня немного не поняли,
Поняли, поняли. Недели не проходит без вопросов с такими желаниями. 8-)
Кстати поискать попробуй.

> все это желательно обновлять автоматически на каждом клиенте
Зачем "автоматически"? Тебе же порекомендовали
[6] Johnmen ©   (24.11.04 10:34)
И, как правило, идеологически это делается "кнопкой <Обновить>".


 
Наталия ©   (2004-11-24 11:11) [13]

Ты пользователей-то пожалей - зачем им это мельтешение на экране?
Сделай, как тебе сказали
Johnmen ©   (24.11.04 10:43) [10].


 
Nexel   (2004-11-24 11:13) [14]

Короче понятно! :-) кнопка Refresh решение все проблем и любых головных болей!!!! :-) да уж меня заживо погебут юзвери... хотя можно сделать только на форму подбора такой рефреш! :-) а почему бы и нет! :-) но все таки неужели нет ничего вразумительного по этому поводу?


 
Sergey13 ©   (2004-11-24 11:16) [15]

2[14] Nexel   (24.11.04 11:13)
>но все таки неужели нет ничего вразумительного по этому поводу?
Да поищи тут, говорю же - часто обсуждается.


 
Johnmen ©   (2004-11-24 11:17) [16]

>Nexel   (24.11.04 11:13) [14]
>но все таки неужели нет ничего вразумительного по этому поводу?

Да определение "вразумительности". А то похоже у нас оно разное.


 
Sandman25 ©   (2004-11-24 11:18) [17]

>но все таки неужели нет ничего вразумительного по этому поводу?

Можно записывать время последнего изменения, тогда обновление данных будет заключаться в чтении только изменившихся записей.
Можно использовать многозвенную архитектуру и заставить сервер приложений уведомлять об изменениях и вообще передавать клиенту изменившиеся записи. Но ИМХО кнопка Обновить "правильнее" в большинстве случаев :)


 
Nexel   (2004-11-24 11:20) [18]

Какой остроумный.... под вразумительным понимается КОНКРЕТНОЕ РЕШЕНИЕ ДАННОЙ ЗАДАЧИ НА ПРАКТИКЕ ЕСЛИ ЕГО НЕТ ТОГДА И НЕ ИМЕЕТ СМЫСЛА ВЕЛОСИПЕД ИЗОБРЕТАТЬ ЛОГИЧНО? ЕСЛИ ВСЕ ПОЛЬЗУЮСЯ КНОПКОЙ ОБНОВИТЬ Кстати в на ibtable refresh тоже интересно работает :-) но дело не в этом раз кнопка так кнопка хрен с ней но хотелось бы посмотреть как массы боряться с этим


 
Deniz ©   (2004-11-24 12:26) [19]

> Nexel   (24.11.04 11:20) [18]
> ... Кстати в на ibtable refresh тоже интересно работает :-) ...

Я правильно прочитал? IBTable?
Забудь про IBTable это раз, смотри на IBDataSet это два, при правильной организации IBDataSet.Refresh перечитывает только 1 запись.


 
Nexel   (2004-11-24 12:28) [20]

Блин ну хоть кто то подсказал что то!!!!! Спасибо огромное буду ковырять!


 
msguns ©   (2004-11-24 12:34) [21]

>Nexel   (24.11.04 11:20) [18]

"Массы" с этим не борятся. Они просто используют другой подход к интерфейсу узера. Ты хочешь сказать, что у тебя есть таблица остатков, из которой оператор выбирает нужную позицию, чтобы вставить ее в счет (накладную) ?
Вопрос, а нафиг ей видеть остатки по всей номенклатуре, если в данный момент ей нужна конкретная позиция ? Если покупатель спрашивает тапочки, зачем ей показывать сколько на складе веленков ? По кнопульке "включить в документ" показывай ей запрошенную отдельным запросом позицию с актуальным остатком и всего делов.

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


 
Nexel   (2004-11-24 12:38) [22]

Да именно об  этом реч и шла, спасибо большое! вы подсказали решение данной проблемы!



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.038 c
1-1102846034
Dema-X
2004-12-12 13:07
2004.12.26
из юникод в вин


1-1102981494
Bobby Digital
2004-12-14 02:44
2004.12.26
Canvas


1-1103109012
Бульбаш
2004-12-15 14:10
2004.12.26
Принудительное закрытие узла в TreeView


3-1101896654
СержК
2004-12-01 13:24
2004.12.26
Не получается сделать выборку


14-1102495093
Vlad Oshin
2004-12-08 11:38
2004.12.26
Как ограничить посещение страниц www в IE?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский