Организация работы Firebird на розничной точке. Проблема.

ЧАстые Вопросы и Ответы

Модераторы: kdv, CyberMax

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 19 дек 2007, 13:10

Mironico писал(а): На тот момент в таблице есть абсолютно все товары
причем есть же проверка where tovar_kod=такойто
абсолютного ничего не бывает, товары как-бы новые появляются :)
тебе не проверка нужна, а вставка того товара, которого у тебя нет в справочнике товаров (а вот поставщик взял и поставил тебе новую модель) или сигнал об отсутствующем товаре
ЗЫ
а вот этот вариант к примеру на мой взгляд гораздо хуже ХП

Код: Выделить всё

update zakaz z
set z.kolvo=
(SELECT SUM( P.KOLVO ) SUM_OF_KOLVO
FROM TOVARS t
   JOIN PARTIONS p ON (P.ID_TOV = T.ID_TOVAR)
where T.TOVAR_KOD=z.tovar_kod
GROUP BY T.TOVAR_KOD)

Mironico
Сообщения: 81
Зарегистрирован: 17 янв 2007, 12:23

Сообщение Mironico » 19 дек 2007, 14:15

Мда, долго так.

Даже дольше чем с локейтом.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 19 дек 2007, 14:40

Mironico писал(а):Мда, долго так.

Даже дольше чем с локейтом.
подобная штука тебе тоже не нравится? :)

Код: Выделить всё

CREATE PROCEDURE NEW_PROCEDURE 
RETURNS (
 vtovar_kod integer,
 vsum integer)
AS

begin
  /* Procedure Text */
  for SELECT T.TOVAR_KOD, SUM( P.KOLVO )
   FROM TOVARS t
   JOIN PARTIONS p ON (P.ID_TOV = T.ID_TOVAR)
   GROUP BY T.TOVAR_KOD
   into:vtovar_kod,:vsum
   do
    begin
     update zakaz z
     set z.kolvo=:vsum
      where z.tovar_kod=:vtovar_kod;
    end
  exit;
end
ЗЫ
забыл where z.tovar_kod=:vtovar_kod; :(

Mironico
Сообщения: 81
Зарегистрирован: 17 янв 2007, 12:23

Сообщение Mironico » 19 дек 2007, 16:29

тоже долго шо жуть

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 19 дек 2007, 16:34

Mironico писал(а):тоже долго шо жуть
Включаю ТЛ.

Код: Выделить всё

CREATE INDEX PARTIONS_IDX1 ON PARTIONS (ID_TOVAR);
CREATE INDEX ZAKAZ_IDX1 ON ZAKAZ (TOVAR_KOD);
Если структура на самом деле сложнее - пиши, почитаем.

Mironico
Сообщения: 81
Зарегистрирован: 17 янв 2007, 12:23

Сообщение Mironico » 19 дек 2007, 16:47

Йомае! Супер!

На товарах и партиях были индексы а на заказе не было.

Теперь за 4 сек. перечитывается.


БОЛЬШОЕ СПАСИБО!!!!!!!
С меня много пива.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 19 дек 2007, 17:07

На товарах и партиях были индексы а на заказе не было.
у тебя что, таблицы без FK?

Mironico
Сообщения: 81
Зарегистрирован: 17 янв 2007, 12:23

Сообщение Mironico » 19 дек 2007, 17:17

Не все, забывал про них

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 20 дек 2007, 08:26

Mironico писал(а):Не все, забывал про них
какой вариант-то выбрал? :)

Mironico
Сообщения: 81
Зарегистрирован: 17 янв 2007, 12:23

Сообщение Mironico » 20 дек 2007, 10:56

выбрал с ХП

ForMal
Сообщения: 1
Зарегистрирован: 07 дек 2009, 16:30

Re: Организация работы Firebird на розничной точке. Проблема.

Сообщение ForMal » 07 дек 2009, 17:48

Этот текстовый файл который построчно локэйтом обрабатывается, он является внешней таблицей FireBird-а? Если да, то тогда сначала попробуй этот файл загнать во внутреннюю таблицу, а уже внутреннюю обрабатывать ХП, но не в коем случае не локэйтом!!! Он ушел в прошлое вместе с BDE! Лучше чем курсор на нужную запись ставить, лучше Select-ом отбирать данные в переменные, а затем уже данные из этих переменных обрабатывать! :arrow: Нужно всю обработку перенести на сервер.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Организация работы Firebird на розничной точке. Проблема.

Сообщение kdv » 07 дек 2009, 18:38

забавно читать ответы на топики двухлетней давности. ForMal, смотрите на даты, "некрофилия" тут не поощряется.
Как и безапелляционные утверждения типа "Нужно всю обработку перенести на сервер.".

Ответить