|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.09.2013, 09:55 | #1 |
Новичок
Джуниор
Регистрация: 30.09.2013
Сообщений: 3
|
Запись в БД с помощью SQL
Доброе утро.
Опишу ситуацию: у нас есть 2 кассы с приложениями, написанными на делфи, для продажи и пробивания чеков, одна база, которая находится на одной из касс. Запись в БД происходит по нажатию кнопки с помощью SQL запросов. Когда народа много, работают обе кассы. При одновременном пробивании чека (записи информации о чеках в БД) данные о товарах перемешиваются, т.е. товар из одного чека может записаться в другой, суммы меняются, отчеты по кассам не сходятся. Потом приходится искать этот косяк и вручную править чеки, что очень напрягает. Запись происходит одновременно с помощью 2х SQL запросов в одни и те же таблицы: JOURNALDOC (общая информация о чеке:дата,сумма,кассир и тд..) и TABLEDOC (товары в чеке: №чека,наименование товара, кол-во и тд..). Пример: после исправления чеков:снимок до исправления (суммы указаны красным):снимок2 если открыть чек 58829, то в нем обнаруживаются товары из чека 58828, но сумма верная, при этом чек 58828 пустой, а сумма сохраняется с прошлого чека этой кассы. Вот такая вот белеберда... Сначала грешили на то,что на кассах время совпадало секунда в секунду,поменяли,а косяк остался. Следовательно причина в том,что пробивают чек одновременно. Подскажите, как можно избежать этих перекрестов? |
30.09.2013, 10:18 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
чтобы товар не попадал в чужой чек.
исправить запросы для записи данных по чеку(фиксации товаров), чтобы использовать не некий ВЫЧИСЛЕННЫЙ код чека ( к примеру последний номер), а реальный указанный. номер чека должен быть известен ДО фиксации товара в чеке. Вычислять сумму чека после фиксации всех товаров в чеке. обсуждение похожей проблемы.
программа — запись алгоритма на языке понятном транслятору
|
30.09.2013, 11:00 | #3 |
Новичок
Джуниор
Регистрация: 30.09.2013
Сообщений: 3
|
номер документа мы берем из генератора в самой бд при пробивании чека, т.е., как я поняла, при одновременном нажатии кнопки обоим кассам выдается одинаковый номер чека...Переставлю генерацию номера в самое начало, т.е. при заведении нового чека.
А не получится такая же история,если кассиры одновременно заведут новый чек? |
30.09.2013, 11:16 | #4 | |||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Цитата:
Цитата:
Разница между номер документа(чека) как отчетного документа, и идентификатор чека как записи БД смотри ссылку на обсуждение в предыдущем посте. Цитата:
потом к нему цепляем(добавляем) все товары (в TABLEDOC). и рассчитываем цену по прицепленным товарам (по сути "сумма чека" в journalDoc это лишнее поле его всегда можно и нужно считать по TABLEDOC)
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 30.09.2013 в 11:21. |
|||
30.09.2013, 12:13 | #5 |
Новичок
Джуниор
Регистрация: 30.09.2013
Сообщений: 3
|
Спасибо большое, теперь будем тестить.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление строки с помощью SQL запроса (Query1.SQL.ADD('Delete....')) | Schutze | Помощь студентам | 6 | 29.11.2009 22:15 |
Запись формул в ячейки с помощью VBA | Lyubov1990 | Microsoft Office Excel | 6 | 13.05.2009 16:53 |
Добавление столбца в таблицу с помощью SQL | andirock2112 | БД в Delphi | 15 | 11.04.2009 09:15 |
вставить запись с помощью AbsQuery | furstenberg | БД в Delphi | 2 | 07.08.2008 14:49 |
написать БД на Delphi с помощью SQL | Tanchik | Фриланс | 2 | 13.06.2007 19:06 |