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:
- Na DbStruct não traz campos virtuais. Já na FWSX3Util você tem essa opção
- Na DbStruct traz o nome do campo, tipo, tamanho e decimais. Já na FWSX3Util traz apenas o nome do campo
- 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.
 
 
