powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / преобразование числа к определенному виду
18 сообщений из 18, страница 1 из 1
преобразование числа к определенному виду
    #32434507
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Снова я:)
Привет всем!
наверняка есть уже написанный код ХП или чего-либо для преобразования однозначного, двухзначного итд в например шестизначное значение.
Скажем :
"1" --> "000001" или "56" -- "000056", "1234" -- "001234" ну итп

если не жалко конечно:)
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434578
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
врядли есть у кого-то, потому что крутые делают это на клиенте средствами Дельфи, Джавы или С++
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434617
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждалось.\r
Смотри тут
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434645
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
 DOC = substrlen('000000', 1 , 6 -strlen(DOC)) || DOC;




Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434727
Denis Uskov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UDF LPAD - из DLL стандартной установки
lpad (instring, length, padcharacter)
DECLARE EXTERNAL FUNCTION lpad
CSTRING(80), INTEGER, CSTRING(1)
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT 'IB_UDF_lpad' MODULE_NAME 'ib_udf';

select lpad(MyField, 6, '0') from ...
------------------------
С уважением, Denis Uskov
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434910
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а если в ХП есть переменная и её надо привести к такому виду?
+ перед тем как эту переменную записать в поле к ней в начале прибавится еще шапка из каких-либо символов

в приведенных примерах описывается выборка с таблицы, - а мне надо вставку записи сделать, для этого я сделал генератор... а в поле должно попадать значения с 00...1 ну и еще коекакие символы впереди
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434944
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
DECLARE DOC VARCHAR( 10 );
...
DOC = CAST( 123  AS VARCHAR( 10 ));

DOC = 'Что-нужно-' || substrlen('000000', 1 , 6 -strlen(DOC)) || DOC;
 /* Вставляем или что нужно  ====> 'Что-нужно-000123 */ 






Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434952
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
An error was found in the application program input parameters for the SQL statement.
Dynamic SQL Error.
SQL error code = -804.
Function unknown.
SUBSTRLEN.

это вышло при комл ХП
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434988
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
надо подключить стандарный UDF ib_udf.dll


Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32434993
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Best regards,
Dnico.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
DECLARE EXTERNAL FUNCTION substrlen 
	CSTRING( 80 ), SMALLINT, SMALLINT
	RETURNS CSTRING( 80 ) FREE_IT
	ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';

DECLARE EXTERNAL FUNCTION strlen 
	CSTRING( 32767 )
	RETURNS INTEGER BY VALUE
	ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32435083
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 -------------
 
DECLARE EXTERNAL FUNCTION STRLEN
    CSTRING( 80 )
RETURNS INTEGER FREE_IT
ENTRY_POINT 'ib_udf_strlen' MODULE_NAME 'ib_udf'
 -----------
 
DECLARE EXTERNAL FUNCTION SUBSTRLEN
    CSTRING( 80 ),
    INTEGER,
    INTEGER
RETURNS CSTRING( 80 ) FREE_IT
ENTRY_POINT 'ib_udf' MODULE_NAME 'ib_udf'


чтото я сделал правильно потому что выходит вот это:
Invalid token.
invalid request BLR at offset 783.
function SUBSTRLEN is not defined.
module name or entrypoint could not be found
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32435091
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
DECLARE EXTERNAL FUNCTION substrlen 
	CSTRING( 80 ), SMALLINT, SMALLINT
	RETURNS CSTRING( 80 ) FREE_IT
	ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';



Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32435559
Triran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все вроде нормально откомпилировалось, но теперь проблема вылезла :
после добавления этих функций у меня ничего не работает :(
connection lost to database.

мда... постепенно склоняюсь к мысли чтобы отказаться от этих ХП и вообще использовать IB только для хранения таблиц с данными и ВСЁ!
просто осталась привычка от SQL Server`a , но я и не подозревал что тут так все Не получится:)
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32435791
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автормда... постепенно склоняюсь к мысли чтобы отказаться от этих ХП и вообще использовать
IB только для хранения таблиц с данными и ВСЁ!
просто осталась привычка от SQL Server`a ,
но я и не подозревал что тут так все Не получится:)
Ну не надо так уж сразу ... На самом деле все прекрасно работает.
Просто скорее всего существуют другие причины по которым возникает connection lost to database .
И это как раз связано с UDF.

Начнем с того, какая версия сервера. Я привел регистрацию UDF для FB 1.5.
Для других версий нужно смотреть в директории UDF файл ib_udf.sql - там написан DDL для подключения этих функций.

Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32436103
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
у меня FireBird 1.5
а что мне может дать этот скрипт?
у меня же сервер падает:)
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32436113
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сервер падает из-за того что не правильно определена UDF.

Приведи пож. текст скрипта этих двух функций ?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32436236
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE EXTERNAL FUNCTION substrlen 
	CSTRING( 80 ), SMALLINT, SMALLINT
	RETURNS CSTRING( 80 ) FREE_IT
	ENTRY_POINT 'IB_UDF_substrlen' MODULE_NAME 'ib_udf';

DECLARE EXTERNAL FUNCTION strlen 
	CSTRING( 32767 )
	RETURNS INTEGER BY VALUE
	ENTRY_POINT 'IB_UDF_strlen' MODULE_NAME 'ib_udf';


не значит ли это что при объявлении UDF у меня должен быть такой код?!
...
Рейтинг: 0 / 0
преобразование числа к определенному виду
    #32436246
Tiran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вроде получилось:)

Всем спасибо, и авторотдельная благодарность Dnico
бушь у нас в Астане - милости просим:)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / преобразование числа к определенному виду
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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