AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.02.2024, 09:13   #4  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
643 / 347 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Там еще идет функция вдовесок. В принципе не сложная, думаю.
PHP код:
CREATE FUNCTION [dbo].[PPOPeekValue](@FieldId INT, @FieldType TINYINT, @Data VARBINARY(MAX), @Position BIGINTRETURNS NVARCHAR(MAX)
AS
BEGIN
    
DECLARE @Result        NVARCHAR(MAX)
          , @
N            INT
          
, @IntValue    INT
          
, @Exp        INT
          
, @Sign        INT
          
, @FloatValue    FLOAT
          
, @Year        INT
          
, @Month        TINYINT
          
, @Day        TINYINT
          
, @BigValue    BIGINT

    
-- decode string/text values
    
IF @FieldType OR @FieldType 8
    BEGIN
        SET 
@0
        
WHILE CAST(SUBSTRING(@Data, @Position + @N2) AS SMALLINT) <> 0
            SET 
@= @2
        SET 
@Result CAST(SUBSTRING(@Data, @Position, @N) AS NVARCHAR(MAX))
    
END ELSE

    -- 
decode integer/time values
    
IF @FieldType 1
    BEGIN
        SET 
@IntValue 0
        SET 
@3
        
WHILE @>= 0
        BEGIN
            SET 
@IntValue = @IntValue 256 ASCII(SUBSTRING(@Data, @Position + @N1))
            
SET @= @1
        END
        
IF @FieldId 61441 OR @FieldId 61445
        BEGIN
            SET 
@Result CAST(dbo.PPOInt2Time(@IntValue) AS NVARCHAR(MAX));
        
END
        
ELSE
            
SET @Result CAST(@IntValue AS NVARCHAR(MAX))
    
END ELSE

      -- 
decode float values
      
IF @FieldType 2
      BEGIN
        SET 
@9
        SET 
@FloatValue 0;
        WHILE @
1
        BEGIN
            SET 
@Exp ASCII(SUBSTRING(@Data, @Position + @N1))
            
SET @FloatValue 100 * @FloatValue + (@Exp 0xF0) / 16 10 + (@Exp 0x0F)
            
SET @= @1
        END
        SET 
@Sign = CASE WHEN ASCII(SUBSTRING(@Data, @Position 11)) & 0x80 0 THEN 1 ELSE -1 END
        SET 
@Exp ASCII(SUBSTRING(@Data, @Position1))
        IF (@
Exp >= 0x80)
            
SET @Exp = @Exp 0x100
        SET 
@FloatValue = @FloatValue * @Sign POWER(CAST(10 AS FLOAT), @Exp 15)
        
SET @Result CAST(STR(@FloatValue163) AS NVARCHAR(MAX))
    
END ELSE
    
    -- 
decode date values
    
IF @FieldType 3
    BEGIN
        SET 
@Year   1900 ASCII(SUBSTRING(@Data, @Position1))
        
SET @Month  =    ASCII(SUBSTRING(@Data, @Position 11))
        
SET @Day    =    ASCII(SUBSTRING(@Data, @Position 21))
        
SET @Result CAST(@Month AS VARCHAR(2)) + '/' CAST(@Day AS VARCHAR(2)) + '/' CAST(@Year AS VARCHAR(4))
    
END ELSE

    -- 
decode enum values
    
IF @FieldType 4
    BEGIN
        SET 
@ASCII(SUBSTRING(@Data, @Position1))
        
SET @IntValue ASCII(SUBSTRING(@Data, @Position+11)) + 256 ASCII(SUBSTRING(@Data, @Position+21))
        
SELECT @Result EnumItemLabel FROM SRSAnalysisEnums AS [AE]
            
WHERE [AE].EnumId = @IntValue
              
AND [AE].EnumItemValue = @N
    END 
ELSE

    -- 
decode int64 values
    
IF @FieldType 49
    BEGIN
        SET 
@BigValue 0
        SET 
@7
        
WHILE @>= 0
        BEGIN
            SET 
@BigValue = @BigValue 256 ASCII(SUBSTRING(@Data, @Position + @N1))
            
SET @= @1
        END
        SET 
@Result CAST(@BigValue AS VARCHAR(MAX))
    
END

    
RETURN @Result
END 
__________________
// no comments
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: AX Performance Troubleshooting Checklist Part 1A [Introduction and SQL Configuration] Blog bot DAX Blogs 0 05.09.2014 21:11
amer-ax: It was a great day! Blog bot DAX Blogs 3 29.12.2012 01:02
ax-erp: Creating SSRS-Reports in Dynamics AX 2012 – What’s no longer possible in AX-reports Blog bot DAX Blogs 0 18.07.2012 12:11
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
Dynamics AX: SQL Sever 2008 - Performance with Dynamics AX 2009 - Resource Governor Blog bot DAX Blogs 0 23.01.2009 22:05

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:44.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.