Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вложенные процедуры / 19 сообщений из 19, страница 1 из 1
30.04.2016, 10:28
    #39227960
a_lexfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Нужно сделать процедуру по работе с товарным чеком, который имеет несколько атрибутов, и записи товарного чека с несколькими своими атрибутами.

Это код добавления записи в товарный чек
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
create or alter procedure ADD_RECORD_IN_SALES_RECEIPT (
    IN_IDSALESRESEIPT integer,
    IN_NAMEPRODUCT varchar(50),
    IN_QUANTITY smallint)
returns (
    OUT_PRICE numeric(7,2))
as
declare variable ID integer;
begin
select product.id_product from product where product.nameproduct = :IN_nameproduct  into id;
select product.price from product where product.id_product = :id into OUT_price ;

OUT_price = :OUT_price * :IN_quantity;

insert into record_sales_receipt values (:IN_idsalesreseipt, :id, :IN_quantity);

  suspend;
end^



Как сделать так чтобы при создании товарного чека, можно сразу было добавить неопределенное количество записей в него?
Вызов процедуры внутри другой, причем только передавать ID_товарного_чека, а остальные поля ручками записывать
Это примерный, как я думал, но не рабочий код.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create or alter procedure ADD_SALES_RECEIPT (
    IN_QUANTITYRECORDS integer,
    IN_DATESALE date)
as
declare variable PR_TOTALPRICE numeric(8,2);
declare variable ID_SALES integer;
declare variable PR_PRICE integer;
begin

id_sales = gen_id(gen_sales_receipt_id,1);

 WHILE(in_quantityrecords > 0)DO
  BEGIN
    EXECUTE PROCEDURE add_record_in_sales_receipt :id_sales, null, null //????
    RETURNING_VALUES :pr_price;
    pr_totalprice = :pr_totalprice + :pr_price;
    IN_quantityrecord = :IN_quantityrecord - 1;
  END

insert into sales_receipt values (:id_sales, :pr_totalprice, :IN_datesale);

  suspend;
end^
...
Рейтинг: 0 / 0
30.04.2016, 11:05
    #39227965
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfoxКак сделать так чтобы при создании товарного чека, можно сразу было
добавить неопределенное количество записей в него?
Неопределённое количество записей с неопределённым содержимым?
В морг. Рихтуй консерваторию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 11:28
    #39227968
a_lexfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry Sibiryakov,
Я имел ввиду, что можно добавить и 1 запись, и 10. Это определяется при вызове процедуры, по созданию товарного чека (сколько будет записей в товарном чеке).
...
Рейтинг: 0 / 0
30.04.2016, 11:35
    #39227969
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfoxЯ имел ввиду, что можно добавить и 1 запись, и 10. Это определяется при
вызове процедуры, по созданию товарного чека (сколько будет записей в товарном чеке).

Обычно чек создают когда ещё неизвестно сколько в нём будет позиций. И добавляют их одну
за другой.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 12:09
    #39227974
a_lexfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry Sibiryakov,

Во отлично, так было бы еще лучше. Не подскажешь как это можно сделать через процедуры в FB?
...
Рейтинг: 0 / 0
30.04.2016, 12:14
    #39227976
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfoxНе подскажешь как это можно сделать через процедуры в FB?

Э-э-э... Существует только один способ: одна процедура на шапку, вторая - на спецификацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 12:24
    #39227980
a_lexfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry Sibiryakov,
Извини меня, но мне не особо понятно. Можешь дать какой нибудь пример? Чтобы я смог разобраться решении своей задачи.
...
Рейтинг: 0 / 0
30.04.2016, 12:51
    #39227985
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfoxмне не особо понятно.
Что именно тебе непонятно?

PS: забей вообще на процедуры, всё сразу станет проще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 13:00
    #39227988
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfox,

Я бы сделал через GTT ON COMMIT PRESERVE ROWS, что бы не держать пишущую транзакцию.
Если в конце пользователь нажал Ok, сохраняем шапку и копируем из временной таблицы позиции с привязкой к созданной шапке.
А если пользователь отменил действие, то очищаем временную таблицу.

С уважением, Polesov.
...
Рейтинг: 0 / 0
30.04.2016, 13:15
    #39227990
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
PolesovА если пользователь отменил действие, то очищаем временную таблицу.

А если у пользователя комп отрубился, то слушаем его нецензурное мнение о себе, ага.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 13:32
    #39227996
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry Sibiryakov,

если у пользователя отрубился комп, то по любому без нецензурщины не обойдется :)
...
Рейтинг: 0 / 0
30.04.2016, 13:42
    #39227999
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Polesovесли у пользователя отрубился комп, то по любому без нецензурщины не
обойдется :)
Разница только в том чью морду лица он будет хотеть начистить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 13:45
    #39228000
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry Sibiryakov,

а какой вариант оптимальнее в данном случае?
...
Рейтинг: 0 / 0
30.04.2016, 13:49
    #39228002
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
PolesovDimitry Sibiryakov,

а какой вариант оптимальнее в данном случае?
Постоянная таблица.
...
Рейтинг: 0 / 0
30.04.2016, 13:50
    #39228003
Polesov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
miwaonline,

с признаком того, что ввод данных подтвержден?
...
Рейтинг: 0 / 0
30.04.2016, 13:57
    #39228004
miwaonline
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Polesovmiwaonline,

с признаком того, что ввод данных подтвержден?
Тут уже зависит от услових на месте. Может быть признак "данные подтверждены", может быть отдельная таблица на спецификацию, данные из которой в момент подтверждения переносятся в "главную" таблицу спецификаций. Может кто-то еще как-то иначе делает.
...
Рейтинг: 0 / 0
30.04.2016, 16:47
    #39228034
a_lexfox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Dimitry SibiryakovPS: забей вообще на процедуры, всё сразу станет проще.
С удовольствием, если бы это не был отдельный пункт в задании =)

Polesova_lexfox,

Я бы сделал через GTT ON COMMIT PRESERVE ROWS, что бы не держать пишущую транзакцию.
Если в конце пользователь нажал Ok, сохраняем шапку и копируем из временной таблицы позиции с привязкой к созданной шапке.
А если пользователь отменил действие, то очищаем временную таблицу.

С уважением, Polesov.

Спасибо за помощь, что нибудь попробую сделать в этом стиле =)
...
Рейтинг: 0 / 0
30.04.2016, 17:01
    #39228041
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
a_lexfoxС удовольствием, если бы это не был отдельный пункт в задании =)

А, так это лаба... Это не интересно. Читай Language Reference и статью о хранимых
процедурах на ibase.ru (если сможешь её найти в новом дизайне, что лично мне не удалось)
до просветления.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
30.04.2016, 19:47
    #39228066
YuRock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные процедуры
Polesovесли у пользователя отрубился комп, то по любому без нецензурщины не обойдется :)Нет, не по любому.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вложенные процедуры / 19 сообщений из 19, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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