powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro не добавляет записи в таблицу иногда...
21 сообщений из 21, страница 1 из 1
FoxPro не добавляет записи в таблицу иногда...
    #32635247
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Программа написана на MS Visual FoxPro 8.0
Создается свободная табличка, в которую падают записи, потом эти записи уходят на кассовый аппарат и после успешной печати чека падают в таблицу БД!
Так вот иногда (по словам пользователей причин этому внешних нет ;-)
данные не попадают из свободной таблички в таблицу БД, хотя чек распечатывается. С БД могут работать несколько пользователей, происходит это не часто, но есть еще ньанс каждый чек оформляется как документ и детализация чека (2 таб. соотвественно). Так вот последний раз он прекрасно писал в таб. документов, но в датализацию не писал. По данным создано за 1,5 часа много документов и ни одной детализации. В чем может быть причина незаписи в таблицу детализации?
Один из вариантов, ФоксПро не сбросил буфера, но не понятно тогда почему документы появлялись и доугой пользователь-касса работал и детализация фиксировалась....
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32635268
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не было ли конфликтов совместного доступа? Два пользователя сгенерили одинаковое значение ключа или поля, по которому есть индекс типа Candidat или Primary?

Есть какой-нибудь лог ошибок?
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32635274
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователи говорят, что небыло ни одной мессаги с ошибками имено поэтому они и продолжали работать как ни в чем ни бывало...
Индексы в детализации расхода:
все Regular, только id - Primary
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32635293
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DanilПользователи говорят, что небыло ни одной мессаги с ошибками имено поэтому они и продолжали работать как ни в чем ни бывало...

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

Какой принцип генрации id? Как осуществляется добавление записей в базу данных из временных таблиц? Имею в виду генерация внешнего ключа для подчиненной таблицы. Есть ли Referential Integrity между таблицами и по какому принципу настроен триггер Insert? Есть ли Rule на поля и на запись на подчиненную таблицу?

Короче, у меня сильное подозрение, что произошел конфликт совместного доступа. Т.е. при "одновременном" добавлении записей разными пользователями ты что-то где-то не предусмотрел и произошел отказ в создании записи.
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32635298
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лично я применяю в таких случаях транзакции или пишу все в одну таблицу и только после записи печатаю чек...
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636085
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ
Какой принцип генрации id?
Как осуществляется добавление записей в базу данных из временных таблиц? Имею в виду генерация внешнего ключа для подчиненной таблицы. Есть ли Referential Integrity между таблицами и по какому принципу настроен триггер Insert? Есть ли Rule на поля и на запись на подчиненную таблицу?

Короче, у меня сильное подозрение, что произошел конфликт совместного доступа. Т.е. при "одновременном" добавлении записей разными пользователями ты что-то где-то не предусмотрел и произошел отказ в создании записи.
ID- автоинкремент +1, причем нет разрывов в значениях ID.
Внешний ключ:
Вначале добавляется дапись в таб. документы, от туда получаем documents.id,
значение которого и попадает в детализацию документа.
Тригера INSERT нет и нет Rule!



Sergey Ch
Лично я применяю в таких случаях транзакции или пишу все в одну таблицу и только после записи печатаю чек...

Нередко в кассовом аппарате закончилась лента или еще что-то...хотя для этого транзакция и нужна...
Информация о транзакциях на фоксе скудна в доке, ощущение такое что транзакция может заблокировать работу остальных пользователей при добавлении записи!
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636159
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приведи код сброса информации из временных таблиц в базу данных. Не видя кода трудно сказать что-то определенное.

И еще по структуре: Если ты не получил значение documents.id будет ли произведена запись в подчиненную таблицу?
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636280
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМПриведи код сброса информации из временных таблиц в базу данных. Не видя кода трудно сказать что-то определенное.

И еще по структуре: Если ты не получил значение documents.id будет ли произведена запись в подчиненную таблицу?

SELECT (m_alias)
SCAN
INSERT INTO expenses (doc_id,rcpt_id,cnt,log,ruser_id,fullprice, closed,money_cards) ;
VALUES (documents.id,&m_alias..rcpt_id,&m_alias..cnt,&m_alias..log,goAPP.ccurrentuserid,round(&m_alias..price-(&m_alias..price*(thisform.m_discount_percent/100)),2), .T.,iif(thisform.chkMoneyCards.Value=1,.T.,.F.))
m_str=m_str+"'"+ALLTRIM(&m_alias..name) + "' "+STR(&m_alias..cnt) + IIF(&m_alias..log=0,' уп.',' шт.') + " * "+ STR(&m_alias..price,10,2) +" руб. = "+ str(&m_alias..cnt*&m_alias..price,10,2) + " руб."+CHR(13)+ chr(10)
IF thisform.chkRenting.Value=1 AND thisform.chkModeReturn.Value=1 &&возврат проката
REPLACE exp_id WITH EVALUATE(m_alias+'.exp_id') IN expenses
ENDIF
ENDSCAN
=MESSAGEBOX(m_str,0,IIF(thisform.chkModeReturn.Value=0,"ЧЕК","ВОЗВРАТ"),3000)

Если не получил doc_id, все равно добавление происходит в детализацию...
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636386
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В данном контексте сброса не будет если в рабочей области m_alias нет ни одной записи. Нет предмета для сканирования (SCAN...ENDSCAN).

Или же на область m_alias наложен такой фильтр, который исключает все записи. Т.е. по хорошему, надо бы так:

select (m_alias)
SET FILTER TO
SET ORDER TO
SET DELETED OFF
SCAN
...
ENDSCAN

Сам смотри, в чем проблема. Может, у тебя где-то переопределние значение переменной m_alias происходит и ты ссылаешся уже не на ту рабочую область.

И еще, использование синтаксиса

REPLACE ... IN ...

Не есть хорошо. Сильно он глючный. Лучше явно переходить в нужную рабочую область не используя опции IN в команде REPLACE

select expenses
REPLACE exp_id WITH EVALUATE(m_alias+'.exp_id')
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636406
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сказанному Владимиром трудно что либо добавить...

Если Вы автор и можете поменять программу, то я могу немного поделиться опытом программ для кассовых аппаратов... Мне в корне не нравится подход в приведенном Вами примере (очень ненадежная идеология для кассовых чеков)... Если есть желание получть совет, то какую марку кассы или фискального регистратора вы применяете...

P.S. Извините, ежели что не так...
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636518
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey ChК сказанному Владимиром трудно что либо добавить...

Если Вы автор и можете поменять программу, то я могу немного поделиться опытом программ для кассовых аппаратов... Мне в корне не нравится подход в приведенном Вами примере (очень ненадежная идеология для кассовых чеков)... Если есть желание получть совет, то какую марку кассы или фискального регистратора вы применяете...

P.S. Извините, ежели что не так...
Феликс РФ
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636525
lesha_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sorry, за оффтопик. Но в чем заключается глючность replace in?
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636548
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМВ данном контексте сброса не будет если в рабочей области m_alias нет ни одной записи. Нет предмета для сканирования (SCAN...ENDSCAN).
............
Чуть выше у меня точно такой же SCAN..ENDSCAN который перебирает все записи таблички m_alias и формирует позиции в чеке, чек на кассовом аппарате выходит и все в порядке... но не записывается в детализации расхода :-/
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636549
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lesha_spbsorry, за оффтопик. Но в чем заключается глючность replace in?
В том, что иногда он просто не делает присвоения. Т.е. не срабатывает команда REPLACE в указанной рабочей области. Ошибка плавающая, но всегда связана с IN
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636556
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danil ВладимирМВ данном контексте сброса не будет если в рабочей области m_alias нет ни одной записи. Нет предмета для сканирования (SCAN...ENDSCAN).
............
Чуть выше у меня точно такой же SCAN..ENDSCAN который перебирает все записи таблички m_alias и формирует позиции в чеке, чек на кассовом аппарате выходит и все в порядке... но не записывается в детализации расхода :-/

Ну, так и смотри, что ты там делаешь в этом предыдущем SCAN. Может записи удаляешь, может фильтры какие настраиваешь. Может по окончании цикла меняешь значение переменной m_alias или вообще пероткрываешь таблицу в другом алиасе. Да мало ли...
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32636897
joric
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй перед endscan поставить SELECT (m_alias).
А между таблицами таб. документов и датализацией нет ли relation ???
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32637017
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
joricПопробуй перед endscan поставить SELECT (m_alias).
А между таблицами таб. документов и датализацией нет ли relation ???
Чем может помощь в цикле SCAN использование select (m_alias) до ENDSCAN?
Да связь есть:
documents.id->expenses.doc_id
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32637042
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сама функция печати чека на фискальном регистраторе находится в отдельном prg файле... весь его приводить смысла нет вероятно... он принимает аргументом название таблицы из которой брать наименвоание товаров и их цену...
нигде не переопределяется...
часть со SCAN-ом:
*продаем (в цикле по всем товарам)
lcOldAlias=ALIAS()
SELECT (m.tcTableName)
SCAN
objFR.Quantity=ABS(cnt)
objFR.Price=ABS(price)
objFR.StringForPrinting=ALLTRIM(name) &&ограничение в 18 символов
objFR.Department=IIF(division=0,m.tnDepartment,division)
DO CASE
CASE M.TNtYPE=1
objFR.Sale()
CASE m.tnType=2
objFR.ReturnSale()
ENDCASE
llIsErrorFree=objFR.ResultCode=0
IF NOT m.llIsErrorFree
EXIT
ENDIF
ENDSCAN
IF LEN(m.lcOldAlias)>0
SELECT (m.lcOldAlias)
ENDIF
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32637785
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DanilФеликс РФ
OK знакомая техника...

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

И все... Все работает очень быстро и очень надежно проверено в течении многих лет в разных магазинах...

Удачи! Используйте сильные стороны FoxPro - ибо это идеальный продукт для обслуживания розничной торговли
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32640184
Danil
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Ch
Итак, продовец забил эту маленькую локальную таблицу, далее:
- печать чека по этой таблице
- подсчет итогов
- начало транзакции
- пересылка данных на сервер
- закрытие трнзакции
- если успешно - пересылка итогов в фискальную память - иначе откат (С выдачей сообщения на весь экран продавцу, записью протокола т.д.)...

И все... Все работает очень быстро и очень надежно проверено в течении многих лет в разных магазинах...

Удачи! Используйте сильные стороны FoxPro - ибо это идеальный продукт для обслуживания розничной торговли
1. Чек мы напечатали, а транзакция откатилась в самом ФР продажа зарегистрировалась. Что делать в таком случае?
2. Для чего подсчет итогов? Имеется ввиду совокупная стоимостть всех позиций в чеке?
3.Вот более или менее я знаком с транзакциями на ms sql server 2k, а насчет foxpro не знаю специфики и возможностей... если не затруднит дай те ссылку на стетейку по транзакциям на foxpro (желательно на русском)
4. "Пересылка итогов в фискальную память - иначет откат", ;-/ мы же в 1-ом пукте уже напечатали чек?! Я не сильен в ФР (другой программист писал), но не понимаб, что значит "откатить".. транзакцияю понятно откатить можно, а как откатить в ФР?
Поясните пожалуйста...
...
Рейтинг: 0 / 0
FoxPro не добавляет записи в таблицу иногда...
    #32640477
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Danil 1. Чек мы напечатали, а транзакция откатилась в самом ФР продажа зарегистрировалась. Что делать в таком случае?
2. Для чего подсчет итогов? Имеется ввиду совокупная стоимостть всех позиций в чеке?
3.Вот более или менее я знаком с транзакциями на ms sql server 2k, а насчет foxpro не знаю специфики и возможностей... если не затруднит дай те ссылку на стетейку по транзакциям на foxpro (желательно на русском)
4. "Пересылка итогов в фискальную память - иначет откат", ;-/ мы же в 1-ом пукте уже напечатали чек?! Я не сильен в ФР (другой программист писал), но не понимаб, что значит "откатить".. транзакцияю понятно откатить можно, а как откатить в ФР?
Поясните пожалуйста...
1. Вы прочитали не внимательно - если транзакция завершилась - то передаем данные в фискалку (или закрываем продажу см п 2)

2. Да - здесь есть два способа
- передавать в ФР каждую продажу, а затем закрыть ее с пересылкой итогов в ФР
- либо все Вам печатать самому (рисовать чек) а затем подсчитать сумму и уже ее передать в фискальную память (тут есть еще ньюанс с КЛЗ)

3. Здесь очень просто (похоже как и в MS SQL Server):
-begin transaction
- end transaction
- rollback
Есть описание и в документации в FoxPro (да и на FoxClub это кажется было). Я еще использую буферизацию...

4. Печать чека не означает передачу данных в фискальную память - для пересылки туда - надо использовать специальную команду (вот ее то и надо подавать после успешного завершения транзакции)... Обсудите ваши проблемы с тем, кто писал ФР (хотя можете и сами все сделать - работать с ФР очень просто)

Good luck!
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro не добавляет записи в таблицу иногда...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]