Member 13550326 Ответов: 1

Немедленно отражайте изменения в таблице другим пользователям.


При запуске приложения в многопользовательской среде изменения, внесенные одним пользователем, то есть изменение, добавление или удаление записей, не видны другому пользователю до тех пор, пока он не перезапустит приложение. Я думаю, что знаю, почему возникает эта проблема. Во время Form_load данные из таблицы собираются в набор данных, который отображается на форме с помощью привязки данных. При запуске приложения данные ,содержащиеся в таблице, передаются только в Dataset, поэтому пользователь не может видеть изменения, внесенные другим пользователем во время выполнения.

Пожалуйста, помогите в этом вопросе.

заранее спасибо.


ОБНОВЛЕНИЕ

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

Что я уже пробовал:

Я попытался запустить код для извлечения данных в Dataset при каждом изменении, но он все еще не отражается на другом пользователе. И я думаю, что это не очень хороший метод, потому что это займет много времени, чтобы загрузить данные о каждом изменении.

DerekT-P

I'm assuming this is a desktop app rather than browser-based. It would be helpful if you would confirm that. From your question, it sounds like there's one table whose contents are displayed to multiple users simultaneously, and some/all of those users can add / delete / update rows in that table. How are you dealing with cases where a row in the process of being modified by one user is deleted by another? What if two users concurrently make changes to the same row, but different columns? I suspect you may have much bigger problems than how to refresh the screen automatically unless you've addressed these issues. To update the screen(s) on any data update, there are essentially two options: (1) Polling - each client periodically re-checks some d/b indicator to see if anything's been updated, and if it has, refresh the screen; or (2) Push notifications - the process of updating a row pushes out notifications to each client to tell them something has changed. Your choice will depend on various things - just how "immediate" do changes need to be reflected; how often are changes made; is your app the only way that data can be changed; how many clients are there; are all clients on the same network; and probably many other considerations too.
Вы говорите, что пробовали повторно извлекать набор данных при каждом изменении, но ваш комментарий предполагает, что вы думаете, что обновление экрана одного пользователя каким-то образом обновит все остальные? Несмотря на это, я все еще подозреваю, что вы столкнетесь с проблемами, если просто будете постоянно показывать статический набор данных всем пользователям, позволяя любому пользователю обновлять данные в любое время.
Вернитесь назад и подумайте о требованиях ваших пользователей и о том, как ваш общий дизайн может их удовлетворить.

Member 13550326

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

1 Ответов

Рейтинг:
2

MadMyche

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

Есть несколько способов сделать это, и это может быть очень сложно, я бы посоветовал вам сделать еще несколько исследований в этом направлении