Diferenças entre DbStruct e métodos da FWSX3Util | Ti Responde 0099

No vídeo de hoje, vamos demonstrar a diferença de buscar os campos entre a DbStruct e a FWSX3Util.

A dúvida de hoje, nos perguntaram, qual seria a diferença entre usar a DbStruct e a FWSX3Util para buscar os campos.

 

Pensando nisso, montamos esse exemplo, onde as principais diferenças são:

  1. Na DbStruct não traz campos virtuais. Já na FWSX3Util você tem essa opção
  2. Na DbStruct traz o nome do campo, tipo, tamanho e decimais. Já na FWSX3Util traz apenas o nome do campo
  3. Na DbStruct a ordem que vem, é conforme o campo foi criado na base. Já na FWSx3Util traz a ordenação respeitando a configuração do dicionário (X3_ORDEM)

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zVid0099
Exemplo de comparação entre DbStruct e FWSX3Util (por causa do X3_ORDEM)
@type  Function
@author Atilio
@since 01/03/2024
/*/

User Function zVid0099()
    Local aArea     := FWGetArea()
    Local aEstruSB1 := {}
    Local aSX3daSB1 := {}
    Local cMensagem := ""

    //Abre a tabela de produtos e busca todos os campos
    DbSelectArea("SB1")
    aEstruSB1 := SB1->(DbStruct())
    aSX3daSB1 := FWSX3Util():GetAllFields("SB1", .F. /*lVirtual*/)

    //Exibe uma mensagem com a quantidade em comparação
    cMensagem := FormatStr("Com DbStruct: %n , com FWSX3Util %n", {Len(aEstruSB1), Len(aSX3daSB1)})
    FWAlertInfo(cMensagem, "Comparação")

    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