• Ласкаво просимо на Спільнота для обміну досвідом між користувачами програм УкрБланк, УкрСклад, УкрЗарплата.
 

Нужен скрипт для изменения кодов во всей базе

Автор seerr, Березень 20, 2013, 19:38:59

Попередня тема - Наступна тема

0 Користувачі і 2 Гостей дивляться цю тему.

seerr

Здравствуйте!
У меня в графе "код" товара идет нумерация "1,2,3,4,5,..2145" и тд., что нужно сделать чтобы нумерация была в виде "000001,000002,000003,000004,000005,...002145" и тд..?
Как изменение "кода" к такому виду отобразиться на  уже проведенных документах?

admin

#1
Цитата: seerr від Березень 20, 2013, 19:38:59
Здравствуйте!
У меня в графе "код" товара идет нумерация "1,2,3,4,5,..2145" и тд., что нужно сделать чтобы нумерация была в виде "000001,000002,000003,000004,000005,...002145" и тд..?
Как изменение "кода" к такому виду отобразиться на  уже проведенных документах?

1. Все скрипты что буду описаны тут выполняются в меню Опции : SQL менеджер
2. ОБЯЗАТЕЛЬНО сделайте резервную копию базы перед началом эксперимента.
3. Вот скрипт который покажет все коды товаров с количеством символов 1 :

SELECT
  tn.kod,
  CHAR_LENGTH(tn.kod) AS strlen
FROM
  tovar_name tn
WHERE
  CHAR_LENGTH(tn.kod) = 1


чтобы показать с 2-мя символами надо поменять последнюю строку на:

CHAR_LENGTH(tn.kod) = 2

и.т.д.

4. Если вы выбрали 6 знаков для кода, вот скрипт который добавит 5 нулей для кода у которого количество символов 1:

UPDATE
  tovar_name tn
SET
  tn.kod = '00000' || tn.kod
WHERE
  CHAR_LENGTH(tn.kod) = 1


потом выполните код который добавит 4 нуля для котда у которых количество символов 2:

UPDATE
  tovar_name tn
SET
  tn.kod = '0000' || tn.kod
WHERE
  CHAR_LENGTH(tn.kod) = 2


и т.д. до 1 нуля и 5 символов.

seerr

#2
Спасибо за столь развернутый ответ.Буду пробовать.
По поводу второго вопроса:
как повлияет изменение кода на уже проведенные ранее документы?
и еще :
при добавлении нового товара код уже будет 6-ти значным ?( ps: я догодываюсь что нет  :)  но хотелось бы уточнить)

Все получилось.скрипт сработал.
Но при добавлении нового товара ему автоматом присваивается код типа "2145"...в настройках автонумерацию включил и выбрал "#номер_5#"получился код формата "02145"...как сделать чтобы новый товар получал код формата 6 знаков "002145"

admin

Цитата: seerr від Березень 21, 2013, 11:32:58
как повлияет изменение кода на уже проведенные ранее документы?

Никак не повлияет.

Цитата: seerr від Березень 21, 2013, 11:32:58
Все получилось.скрипт сработал.
Но при добавлении нового товара ему автоматом присваивается код типа "2145"...в настройках автонумерацию включил и выбрал "#номер_5#"получился код формата "02145"...как сделать чтобы новый товар получал код формата 6 знаков "002145"

#номер_5# это максимум в программе для автонумерации товаров, это 100 тыс наименований.

seerr



Цитата: admin від Березень 21, 2013, 15:10:22
Цитата: seerr від Березень 21, 2013, 11:32:58
как повлияет изменение кода на уже проведенные ранее документы?

Никак не повлияет.

Цитата: seerr від Березень 21, 2013, 11:32:58
Все получилось.скрипт сработал.
Но при добавлении нового товара ему автоматом присваивается код типа "2145"...в настройках автонумерацию включил и выбрал "#номер_5#"получился код формата "02145"...как сделать чтобы новый товар получал код формата 6 знаков "002145"

#номер_5# это максимум в программе для автонумерации товаров, это 100 тыс наименований.


Не получается  100 000 наименований... с применением данной автонумерации получается цифра 02145 никак не 002145.. судя из примера в описании максимум у меня
получиться 10 000
(#номер_5# - номер документа с лидирующими нулями при разрядности 5 например 00005),
а мне нужно 6-значное число (позиций товаров очень много)

admin

Цитата: seerr від Березень 21, 2013, 15:30:47
Не получается  100 000 наименований... с применением данной автонумерации получается цифра 02145 никак не 002145.. судя из примера в описании максимум у меня
получиться 10 000

Вы это серьезно? 5 символов это максимальное число 99999 + код 00000 = 100 тыс.

seerr

Теперь все ясно, извините за глупость.. сразу не понял :)

Спасибо вам огромное за вашу отзывчивость :)

Dextar


sergius200803

а от в мене щось не получається з цим скриптом. копіюю його в SQL менеджер і от...

admin

Цитата: sergius200803 від Січень 22, 2018, 16:38:37
а от в мене щось не получається з цим скриптом. копіюю його в SQL менеджер і от...

Это сообщение от 2013 года, тогда еще был Firebird 1.5, сейчас вместо strlen используйте CHAR_LENGTH.

sergius200803

#10
 :'( не получаетцо, извините.

admin

Цитата: sergius200803 від Січень 23, 2018, 10:01:03
:'( не получаєтцо, извините.

Сверху подправили скрипты как надо делать

sergius200803

#12
Все ОК! Справився. Дякую.

SELECT
  tn.kod,
  CHAR_LENGTH(tn.kod)
FROM
  tovar_name tn
WHERE
  CHAR_LENGTH(tn.kod) = 1

--------------------------------------------------------

UPDATE
  tovar_name tn
SET
  tn.kod = '0000' || tn.kod
WHERE
  CHAR_LENGTH(tn.kod) = 1