Vídeo Aula – AdvPL 008 – Manipulação de Banco de Dados

Olá pessoal…

Na vídeo aula de hoje, vou falar um pouco sobre Manipulação de Banco de Dados em AdvPL (DbSkip, Eof, DbSelectArea, etc).



Abaixo os links do TDN sobre o assunto:
Funções genéricas

Abaixo o código fonte utilizado para os testes:

//Bibliotecas
#Include "Protheus.ch"

/*/{Protheus.doc} zBanco
Exemplo de manipulação de Banco de Dados via AdvPL
@author Atilio
@since 15/11/2015
@version 1.0
	@example
	u_zBanco()
/*/

User Function zBanco()
	Local aArea		:= GetArea()
	Local aAreaB1		:= SB1->(GetArea())
	Local cMens		:= ""
	
	//Se a tabela já estiver posicionada
	If Select("SB1") > 0
		MsgStop("Tabela SB1 já está aberta!", "Atenção")
	EndIf
	
	//Selecionando a tabela de produtos
	DbSelectArea("SB1")
	SB1->(DbSetOrder(1)) // B1_FILIAL+B1_COD
	SB1->(DbGoTop())
	
	//Posicionando no produto de código F00002
	If SB1->(DbSeek(FWxFilial("SB1") + "F00002"))
		Alert(SB1->B1_DESC)
	EndIf
	
	//Agora, percorro todos os registros e adiciono a descrição em uma variável
	SB1->(DbGoTop())
	While !SB1->(EoF())
		cMens += Alltrim(SB1->B1_DESC)+";"+Chr(13)+Chr(10)
	
		SB1->(DbSkip())
	EndDo
	
	//Mostrando a mensagem
	Aviso('Atenção', cMens, {'OK'}, 03)
	
	RestArea(aAreaB1)
	RestArea(aArea)
Return

/*
O ideal de usar referências:
Modo Errado:
	DbSelectArea("SB1")
	
	While ! EoF()
		//Tratamentos para o relatório....
		
		DbSelectArea("SB2")
		//Pega o saldo do produto
		
		DbSkip()
	EndDo

Modo Certo:
	DbSelectArea("SB1")
	DbSelectArea("SB2")
	
	//Referencia a tabela de produtos
	While ! SB1->(EoF())
		//Tratamentos para o relatório....
		
		DbSelectArea("SB2")
		//Pega o saldo do produto
		
		SB1->(DbSkip())
	EndDo
*/

Esses e outros códigos, estão disponíveis gratuitamente no nosso GitHub, acesse em github.com/dan-atilio/AdvPL.

Se quiser fazer o download desse código ou do conteúdo mostrado na vídeo aula, acesse nosso GitHub pelo link github.com/dan-atilio/AdvPL (Exemplos > Vídeo Aulas > 008 – Manipulação de Banco de Dados).

Bom pessoal, por hoje é só.
Abraços e até a próxima.

About Dan_Atilio

Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor do projeto Terminal de Informação, onde são postados tutoriais e notícias envolvendo o mundo da tecnologia.

Deixe uma resposta