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

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




Best regards,
Dnico.
...
Рейтинг: 0 / 0
09.03.2004, 14:16
    #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
09.03.2004, 15:19
    #32434910
Tiran
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
а если в ХП есть переменная и её надо привести к такому виду?
+ перед тем как эту переменную записать в поле к ней в начале прибавится еще шапка из каких-либо символов

в приведенных примерах описывается выборка с таблицы, - а мне надо вставку записи сделать, для этого я сделал генератор... а в поле должно попадать значения с 00...1 ну и еще коекакие символы впереди
...
Рейтинг: 0 / 0
09.03.2004, 15:34
    #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
09.03.2004, 15:39
    #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
09.03.2004, 15:50
    #32434988
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
надо подключить стандарный UDF ib_udf.dll


Best regards,
Dnico.
...
Рейтинг: 0 / 0
09.03.2004, 15:52
    #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
09.03.2004, 16:28
    #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
09.03.2004, 16:32
    #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
10.03.2004, 06:58
    #32435559
Triran
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
все вроде нормально откомпилировалось, но теперь проблема вылезла :
после добавления этих функций у меня ничего не работает :(
connection lost to database.

мда... постепенно склоняюсь к мысли чтобы отказаться от этих ХП и вообще использовать IB только для хранения таблиц с данными и ВСЁ!
просто осталась привычка от SQL Server`a , но я и не подозревал что тут так все Не получится:)
...
Рейтинг: 0 / 0
10.03.2004, 10:23
    #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
10.03.2004, 12:13
    #32436103
Tiran
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
у меня FireBird 1.5
а что мне может дать этот скрипт?
у меня же сервер падает:)
...
Рейтинг: 0 / 0
10.03.2004, 12:16
    #32436113
Dnico
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
Сервер падает из-за того что не правильно определена UDF.

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

Best regards,
Dnico.
...
Рейтинг: 0 / 0
10.03.2004, 13:10
    #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
10.03.2004, 13:17
    #32436246
Tiran
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
преобразование числа к определенному виду
вроде получилось:)

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


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