× Linguagem de Programação ADVPL

Perguntas Consulta SQL em relatório

Mais
8 anos 8 meses atrás #30230 por Morgado
Boa tarde!

Estou tentando executar um select via advpl que inclui uma função SQL para contar dias úteis.
A query de teste é essa:
SELECT TOP(1) D2_TOTAL, dbo.DiasUteis('01/02/2016','29/02/2016') as DiasUteis FROM SD2010

Executando no banco de dados funciona normal, mas quando tento executar pelo programa dá este erro na query:
[Microsoft][ODBC SQL Server Driver][SQL Server] Não é possível localizar a coluna DBO ou a função ou agregação definida pelo usuário "DBO.DIASUTEIS", ou o nome é ambíguo.

Alguém tem alguma dica que possa ajudar?

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 7 meses atrás #30240 por fmmattos
Respondido por fmmattos no tópico Consulta SQL em relatório
Precisaria do trecho em Advpl dessa query pra responder corretamente, mas pela resposta do Sql Server, tenta tirar o "dbo." da query no seu fonte.

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 7 meses atrás #30243 por Morgado
Respondido por Morgado no tópico Consulta SQL em relatório
Bom dia!

O trecho é este:
oSection:BeginQuery() 
    BeginSQL alias "QRYTMP"

	SELECT TOP(1) D2_TOTAL, dbo.DiasUteis('01/02/2016','29/02/2016') as DiasUteis FROM SD2010

    EndSQL
oSection:EndQuery()

Já tentei retirar o dbo. da frente do nome da função. Quando faço isso o retorno é de que a função não é reconhecida pelo SQL.

Alguma sugestão?

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 7 meses atrás #30255 por jmfrolim
Respondido por jmfrolim no tópico Consulta SQL em relatório
E ai Sylas consegui resolver esse problema, ou desistiu?

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 7 meses atrás #30257 por Morgado
Respondido por Morgado no tópico Consulta SQL em relatório
Bom dia João!

O problema relatado sobre a utilização de função do SQL não consegui resolver.
Como não tinha mais prazo e tinha que entregar, acabei criando uma função em ADVPL para calcular os dias úteis entre datas. Utilizei o retorno dela para compor a query.

Deixo aqui, caso alguém tenha alguma necessidade parecida:
USER FUNCTION Uteis(dDtIni,dDtFim)
Local dData:=dDtIni
Local nDias:=0

if VALTYPE(dData) <> "D"
	dData := CtoD(dData)
EndIf
if VALTYPE(dDtFim) <> "D"
	dDtFim := CtoD(dDtFim)	                        
EndIf

Do While dData <= dDtFim
     If Dow(dData) <> 7 ; nDias++
     EndIf
     dData++
EndDo
Return(nDias)

Por favor Acessar ou Registrar para participar da conversa.

Mais
8 anos 7 meses atrás #30270 por Morgado
Respondido por Morgado no tópico Consulta SQL em relatório
Bom dia pessoal,

Para quem possa interessar:
A Totvs me respondeu o chamado informando que funções do SQL Server não são reconhecidas pelo TopConnect, então não funcionam mesmo.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.106 segundos
Joomla templates by a4joomla