Base de conhecimento
Encontre respostas para suas dúvidas em quatro fontes de conhecimento diferentes ao mesmo tempo, simplificando o processo de pesquisa.

Cross Segmento - TOTVS Backoffice Linha Protheus - ADVPL - Declaração de sgbd 'max' não funciona em advpl

time.pngTempo aproximado para leitura: 00:03:00 min

Ocorrência
Ao utilizar a declaração de banco "MAX" para trabalhar com grandes tipos de dados, é retornado erro nas funções de execução de comandos SQL (Structured Query Language) na linguagem ADVPL (Advanced Protheus Language).

Ambiente
Cross Segmento - TOTVS Backoffice (Linha Protheus) – ADVPL – A partir da versão 11.8

Causa
O problema acontece devido ao driver SQL Server Native Client, que retorna o tamanho da coluna NVARCHAR(MAX) retornar o valor de tamanho como 0.

Solução
Caso seja utilizado o driver SQL Server, o DbAccess irá identificar esse tipo como campo Memo e retirar essa coluna do retorno, conforme documentado no TDN em DbAccess - Perguntas frequentes.
Para resolver essa situação, deve-se alterar a declaração MAX para um valor numérico (2000, por exemplo), pois dessa forma o DbAccess irá identificar como campo caractere e retornar o valor corretamente.

Exemplo

// BIBLIOTECAS NECESSÁRIAS
#Include "TOTVS.ch"
#Include "TOPCONN.ch"
#Include "TBICONN.ch"

// FUNÇÃO PRINCIPAL (PARA TESTE)
User Function TTCQUERY()
Local cQuery := ""

RPCSetEnv("99", "01") // REMOVER SE EXECUTADO VIA SMARTCLIENT
// cQuery += "SELECT CONVERT(VARCHAR(MAX), " // REMOVER E TROCAR POR NÚMERO
cQuery += "SELECT CONVERT(VARCHAR(2000), "
cQuery += "(SELECT TOP 1 C6_MOPC FROM SC6990 "
cQuery += "WHERE C6_NUM = 'PDV024')) AS BINARY_TO_VARCHAR"

TCQUERY cQuery NEW ALIAS QRY
RPCClearEnv() // REMOVER SE EXECUTADO VIA SMARTCLIENT
Return (NIL)

 

Para campos com valores extensos é necessário verificar as configurações das chaves MaxStringSize e MemoMega para que possa efetuar a leitura desses campos. Verificar os limites das chaves em suas documentações.

 

Saiba mais
Microsoft docs - Using large value types

MaxStringSize

MemoMega

Esse artigo foi útil?
Usuários que acharam isso útil: 0 de 0

0 Comentários

Por favor, entre para comentar.
X Fechar

Olá ,

Há pendência referente a um de seus produtos contratados para a empresa ().

Entre em contato com o Centro de Serviços TOTVS para tratativa.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cobrança – Verificação de pendências financeiras . clique aqui.

TOTVS

X Fechar

Olá ,

Seu contato não está cadastrado no Portal do Cliente como um perfil autorizado a solicitar consultoria telefônica.

Por gentileza, acione o administrador do Portal de sua empresa para: (1)configurar o seu acesso ou (2)buscar um perfil autorizado para registro desse atendimento.

Em caso de dúvidas sobre a identificação do contato administrador do Portal, ligue (11) 4003-0015, opção 7 e, em seguida, opção 4 para buscar o suporte com o time de Assessoria ao Portal do Cliente. . clique aqui.

TOTVS

X Fechar

Olá ,

Para o atendimento de "Consultoria Telefônica" você deverá estar de acordo com o Faturamento.

TOTVS

X Fechar

Olá,

Algo inesperado ocorreu, e o usuario nao foi reconhecido ou você nao se encontra logado

Por favor realize um novo login

Em caso de dúvidas, entre em contato com o administrador do Portal de Clientes de sua empresa para verificação do seu usuário, ou Centro de Serviços TOTVS.

Ligue! 4003-0015 opção 4 e 9 ou registre uma solicitação para CST – Cadastros . clique aqui.

TOTVS

Chat _

Preencha os campos abaixo para iniciar o atendimento:

Chat _