Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.09.2013, 09:55   #1
Анка_К
Новичок
Джуниор
 
Регистрация: 30.09.2013
Сообщений: 3
По умолчанию Запись в БД с помощью SQL

Доброе утро.
Опишу ситуацию: у нас есть 2 кассы с приложениями, написанными на делфи, для продажи и пробивания чеков, одна база, которая находится на одной из касс. Запись в БД происходит по нажатию кнопки с помощью SQL запросов. Когда народа много, работают обе кассы. При одновременном пробивании чека (записи информации о чеках в БД) данные о товарах перемешиваются, т.е. товар из одного чека может записаться в другой, суммы меняются, отчеты по кассам не сходятся. Потом приходится искать этот косяк и вручную править чеки, что очень напрягает.
Запись происходит одновременно с помощью 2х SQL запросов в одни и те же таблицы: JOURNALDOC (общая информация о чеке:дата,сумма,кассир и тд..) и TABLEDOC (товары в чеке: №чека,наименование товара, кол-во и тд..).

Пример:
после исправления чеков:снимок
до исправления (суммы указаны красным):снимок2

если открыть чек 58829, то в нем обнаруживаются товары из чека 58828, но сумма верная, при этом чек 58828 пустой, а сумма сохраняется с прошлого чека этой кассы.
Вот такая вот белеберда...
Сначала грешили на то,что на кассах время совпадало секунда в секунду,поменяли,а косяк остался. Следовательно причина в том,что пробивают чек одновременно.
Подскажите, как можно избежать этих перекрестов?
Изображения
Тип файла: jpg Снимок.jpg (8.7 Кб, 137 просмотров)
Тип файла: jpg Снимок2.jpg (8.0 Кб, 128 просмотров)
Анка_К вне форума Ответить с цитированием
Старый 30.09.2013, 10:18   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

чтобы товар не попадал в чужой чек.
исправить запросы для записи данных по чеку(фиксации товаров), чтобы использовать не некий ВЫЧИСЛЕННЫЙ код чека ( к примеру последний номер), а реальный указанный.

номер чека должен быть известен ДО фиксации товара в чеке.
Вычислять сумму чека после фиксации всех товаров в чеке.

обсуждение похожей проблемы.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 30.09.2013, 11:00   #3
Анка_К
Новичок
Джуниор
 
Регистрация: 30.09.2013
Сообщений: 3
По умолчанию

номер документа мы берем из генератора в самой бд при пробивании чека, т.е., как я поняла, при одновременном нажатии кнопки обоим кассам выдается одинаковый номер чека...Переставлю генерацию номера в самое начало, т.е. при заведении нового чека.
А не получится такая же история,если кассиры одновременно заведут новый чек?
Анка_К вне форума Ответить с цитированием
Старый 30.09.2013, 11:16   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
А не получится такая же история,если кассиры одновременно заведут новый чек?
Нет, на то и генератор, чтобы не было дублей.

Цитата:
номер документа мы берем из генератора в самой бд при пробивании чека,
т.е. сначала вносим ВСЕ товары неизвестно кому, а потом задаем номер и цепляем все пустые товарные позиции.

Разница между номер документа(чека) как отчетного документа, и идентификатор чека как записи БД смотри ссылку на обсуждение в предыдущем посте.

Цитата:
Переставлю генерацию номера в самое начало, т.е. при заведении нового чека.
именно, сначала делаем чек (в journaldoc)
потом к нему цепляем(добавляем) все товары (в TABLEDOC).
и рассчитываем цену по прицепленным товарам (по сути "сумма чека" в journalDoc это лишнее поле его всегда можно и нужно считать по TABLEDOC)
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 30.09.2013 в 11:21.
evg_m вне форума Ответить с цитированием
Старый 30.09.2013, 12:13   #5
Анка_К
Новичок
Джуниор
 
Регистрация: 30.09.2013
Сообщений: 3
По умолчанию

Спасибо большое, теперь будем тестить.
Анка_К вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление строки с помощью 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