Como transformar um campo em Date em uma query executada no Protheus | Ti Responde 0182

No vídeo de hoje, vamos demonstrar em como pegar um campo no SQL e trazer o conteúdo dele como Date.

A dúvida de hoje, nos perguntaram, que ao executar uma query, o campo não vem formatado como Data (DD/MM/YYYY).

 

Pensando nisso, montamos um exemplo, onde vamos mostrar a utilização da função TCSetField para transformar de caractere para data.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "tlpp-core.th"
#Include "TopConn.ch"

//Declaração da namespace
Namespace custom.terminal.youtube

//Constantes
#Define CRLF Chr(13) + Chr(10) //Carriage Return Line Feed

/*/{Protheus.doc} User Function video0182
Exemplo de como transformar uma coluna no tipo Data
@type Function
@author Atilio
@since 21/06/2024
@example custom.terminal.youtube.u_video0182()
/*/

User Function video0182()
    Local aArea     := FWGetArea()      As Array
    Local cQuery    := ""               As Character
    Local cMessage  := ""               As Character

    //Monta uma query simples, buscando informações da SC5, pegando um campo de Data
    cQuery += " SELECT TOP 5 " + CRLF
    cQuery += "     C5_EMISSAO AS DTEMIS " + CRLF
    cQuery += " FROM " + CRLF
    cQuery += "     " + RetSQLName("SC5") + " SC5 " + CRLF
    cQuery += " WHERE " + CRLF
    cQuery += "     C5_FILIAL = '" + FWxFilial("SC5") + "' " + CRLF
    cQuery += "     AND SC5.D_E_L_E_T_ = ' ' " + CRLF
    TCQuery cQuery New Alias "QRY_SC5"

    //Vamos ver como que está o conteúdo
    cMessage += "Tipo: " + ValType(QRY_SC5->DTEMIS) + " | Conteúdo: " + QRY_SC5->DTEMIS + CRLF

    //Será transformado no tipo Data, e vamos incrementar a mensagem
    TCSetField("QRY_SC5", "DTEMIS", "D")
    cMessage += "Tipo: " + ValType(QRY_SC5->DTEMIS) + " | Conteúdo: " + dToC(QRY_SC5->DTEMIS) + CRLF

    //Exibe a mensagem
    ShowLog(cMessage)
    QRY_SC5->(DbCloseArea())
    
    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação