Como escrever instruções SQL "Passthrough" e cláusulas "Range Where" no Microsoft Great Plains Dexterity
Este artigo descreve como escrever instruções SQL de passagem e cláusulas Range Where no Microsoft Dynamics GP Dexterity.
Aplica-se a: Microsoft Dynamics GP
Número de KB original: 910129
Ao escrever instruções SQL de passagem e cláusulas Range Where no Dexterity, verifique se o código SQL do Transact é compatível com todas as configurações regionais e ordens de classificação. Além disso, verifique se os valores de campo que são passados para a Microsoft SQL Server são tratados corretamente. Você pode usar os seguintes métodos:
Se você quiser passar um valor de data para a Microsoft SQL Server, use a
Dexterity sqlDate()
função global para garantir que a data esteja no formato YYYYYMMDD. Se você usar aDexterity str()
função, o programa usará o formato MM/DD/YYYY ou o formato DD/MM/YYYYY, dependendo das configurações regionais. SQL Server não aceita o formato DD/MM/YYYYY porque esse formato pode causar erros intermitentes que ocorrem após o 12º dia de cada mês.Observação
A
sqlDate
função não adiciona as aspas individuais necessárias quando você passa a data para SQL Server. Portanto, inclua o resultado da função usando aspas individuais.Se você quiser passar um valor de cadeia de caracteres para SQL Server, use a função global para garantir que as
Dexterity SQL_FormatStrings()
cadeias de caracteres estejam envoltas em aspas individuais. Se existir uma única marca de cotação na cadeia de caracteres, você deverá adicionar uma segunda marca de cotação única para interromper o término prematuro da cadeia de caracteres.Quando um intervalo é selecionado entre os valores mínimo e máximo em um campo de cadeia de caracteres, o valor máximo usado pela Dexterity pode não ser o valor máximo correto para SQL Server. O valor máximo correto para SQL Server depende da ordem de classificação e da ordenação da instância de SQL Server. Usando o comando Destreza de preenchimento, o programa preenche o campo usando ASCII 255 para o comprimento da cadeia de caracteres. No entanto, dependendo da ordem de classificação, o ASCII 255 pode não ser o valor mais alto. Portanto, a cláusula em que não retornará nenhum resultado. O valor máximo para ASCII 255 é ÿ (minúscula y com umlaut). Esse caractere é tratado como um Y por alguns pedidos de classificação SQL. Isso significa que o final do intervalo está definido como Y no MSSQL e que tudo o que começa com o caractere Z não está incluído no intervalo. O código Destreza a seguir é um exemplo que usa o
system 9600
comando para obter o valor máximo de caractere para a ordem de classificação de um sistema. Em seguida, o código usa esse valor para criar uma cláusula em que.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');
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários