как обновить все клиенты после каждого перевода БД - PullRequest
0 голосов
/ 29 июля 2010

альтернативный текст http://i27.tinypic.com/24d4pw3.jpg

Я занимаюсь разработкой приложения на базе клиент-сервер с использованием WPF, SQL-Server и WCF.Это в основном своего рода POS-приложение (не использующее POS-библиотеку, но функции почти такие же).Кодирование на стороне сервера практически завершено.Теперь я перехожу к кодированию на стороне клиента.Я новичок в WCF (первое приложение на WCF) и клиент-серверной архитектуре, поэтому меня окружили некоторые сомнения, прежде чем я начну писать код. По словам моего Клиента (Персона), он должен иметь возможность распечатывать товарный чек (Памятка) с клиентских компьютеров, а также с Сервера.Каждое напоминание должно иметь номер напоминания для этой транзакции, который должен увеличиваться автоматически, и продавец должен иметь возможность видеть, какое напоминание он не собирается использовать .Поэтому для этой цели я добавил поле Memo No в Windows Sales Application, в котором будет отображаться Memo No (Last Memo No + 1) из базы данных.

Здесь возникает проблема, предположим, что есть 3 счетчика продаж, и когда продавецоткрыл соответствующие окна продаж для выставления счетов, чтобы все они увидели (последнее примечание № 1).И если 3 из них выставят счет одновременно, то одна и та же памятка не будет сохранена для 3 разных транзакций.

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

Эта ситуация переполнила мой мозг и пришла сюда, чтобы найти решение.Что я могу сделать, чтобы преодолеть это.Любое предложение, ссылка, код будет очень полезным.

1 Ответ

0 голосов
/ 30 июля 2010

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

Один из способов реализовать это - использовать другую таблицу для хранения последовательности номеров заметок:

CREATE TABLE MemoSequence
(MemoId int identity(1,1),
 DateAssigned datetime
)

Каждый раз, когда окно продаж открывается на клиенте, текущая дата / время должны быть вставлены в MemoSequence.DateAssigned, а соответствующее значение MemoId возвращено (используя предложение OUTPUT или SCOPE_IDENTITY()) клиенту в качестве MemoId.

Таким образом, каждый клиент получит уникальный номер памятки, назначенный с начала транзакции.

NB - это может не быть подходящим решением, если требуется, чтобы в последовательности номеров памятки не было пробелов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...