Microsoft Great Plains Dexterity에서 "통과" SQL 문 및 "Range Where" 절을 작성하는 방법

이 문서에서는 Microsoft Dynamics GP Dexterity에서 통과 SQL 문 및 Range Where 절을 작성하는 방법을 설명합니다.

적용 대상: Microsoft Dynamics GP
원본 KB 번호: 910129

Passthrough SQL 문 및 Range Where 절을 Dexterity에 작성하는 경우 Transact SQL 코드가 모든 국가별 설정 및 정렬 순서와 호환되는지 확인합니다. 또한 Microsoft SQL Server 전달되는 필드 값이 올바르게 처리되었는지 확인합니다. 다음 메서드를 사용할 수 있습니다.

  • 날짜 값을 Microsoft SQL Server 전달하려면 전역 함수를 Dexterity sqlDate() 사용하여 날짜가 YYYYMMDD 형식인지 확인합니다. 함수를 Dexterity str() 사용하는 경우 프로그램은 지역 설정에 따라 MM/DD/YYYY 형식 또는 DD/MM/YYYY 형식을 사용합니다. 이 형식으로 인해 매월 12일 이후에 발생하는 일시적인 오류가 발생할 수 있으므로 SQL Server DD/MM/YYYY 형식을 허용하지 않습니다.

    참고

    이 함수는 sqlDate 날짜를 SQL Server 전달할 때 필요한 작은따옴표를 추가하지 않습니다. 따라서 작은따옴표를 사용하여 함수의 결과를 묶습니다.

  • 문자열 값을 SQL Server 전달하려면 전역 함수를 Dexterity SQL_FormatStrings() 사용하여 문자열이 작은따옴표로 래핑되었는지 확인합니다. 문자열에 작은따옴표가 있는 경우 문자열의 조기 종료를 중지하려면 두 번째 작은따옴표를 추가해야 합니다.

  • 문자열 필드의 최소값과 최대값 사이에서 범위를 선택하면 Dexterity에서 사용하는 최대값이 SQL Server 올바른 최대값이 아닐 수 있습니다. SQL Server 대한 올바른 최대값은 정렬 순서와 SQL Server instance 데이터 정렬에 따라 달라집니다. Dexterity fill 명령을 사용하면 프로그램에서 문자열 길이에 ASCII 255를 사용하여 필드를 채웁니다. 그러나 정렬 순서에 따라 ASCII 255가 가장 높은 값이 아닐 수 있습니다. 따라서 where 절은 결과를 반환하지 않습니다. ASCII 255의 최대값은 입니다(소문자 y와 움라우트 사용). 이 문자는 일부 SQL 정렬 순서에 의해 Y로 처리됩니다. 즉, 범위의 끝은 MSSQL에서 Y로 설정되며 Z 문자로 시작하는 모든 항목은 범위에 포함되지 않습니다. 다음 Dexterity 코드는 명령을 사용하여 system 9600 시스템의 정렬 순서에 대한 최대 문자 값을 가져오는 예제입니다. 그런 다음 코드는 이 값을 사용하여 where 절을 빌드합니다.

    local string l_MaxChar;
    local integerl_Result,l_Length;
    
    system 9600, table SOP_HDR_WORK, l_MaxChar, l_Result;
    
    if empty('End Location Code') or filled('End Location Code') then
    fill 'End Location Code';
    l_Length = length('End Location Code');
    clear 'End Location Code';
    'End Location Code' = pad('End Location Code', TRAILING, l_MaxChar, l_Length);
    end if;
    
    range table SOP_HDR_WORK where physicalname('Location Code' of table SOP_HDR_WORK) + CH_SPACE + CH_GREATERTHAN + CH_EQUAL + CH_SPACE
    + SQL_FormatStrings('Start Location Code') + CH_SPACE + SQL_AND + CH_SPACE
    + physicalname('Location Code' of table SOP_HDR_WORK) + CH_SPACE + CH_LESSTHAN + CH_EQUAL + CH_SPACE
    + SQL_FormatStrings('End Location Code');