Aprenda a deletar um registro

Foto de Anderson

Aprenda a deletar um registro do banco de dados em nossa rotina comentada abaixo. Consultamos se existe o CPF no banco de dados e se verdadeiro mostra os dados do registro na tela e pede confirmação do usuário para apagar.

FUNCTION DELETA()
	USE AGENDA ALIAS AG SHARED NEW // ABRE O BANCO DE DADOS EM MODO COMPARTILHADO
	SET INDEX TO AGENDA            // ABRE O ARQUIVO DE ÍNDICE  
	AG->(ORDSETFOCUS("CPF"))       // COLOCA ORDENADO POR CPF
	
	SETCOLOR("W+/N")
	@ 04,01 SAY PADC("APAGAR REGISTRO DA AGENDA", 77, " ") // CENTRALIZA DENTRO DE 77 CARACTERES
	
	DO WHILE .T. // CRIA UM LOOP SUPOSTAMENTE INFINITO
		@ 07,01 CLEAR TO 22,78  // LIMPA ESSA ÁREA
		
		cCPF  := SPACE(11) // DEFINE CPF CARACTER PORQUE O PONTO DA MÁSCARA É LIDO COMO DECIMAL
		@ 09,10 SAY "CPF.:" GET cCPF PICTURE "@R 999.999.999-99" // EXIBE UMA MÁSCARA NO GET QUE RETORNA 99999999999
		@ 24,00 SAY PADL("Insira um número de CPF para pesquisar",54, " ") COLOR "W+/BG"      // MENSAGEM NA LINHA DE STATUS
		READ // AGUARDA A LEITURA DOS GETs
	
		IF LASTKEY() = K_ESC	   
		   EXIT // SAI DO LOOP
		ELSEIF EMPTY(cCPF) // SE DEIXOU EM BRANCO
			   ALERT("PRECISA DIGITAR O CPF")
			   LOOP        // VOLTA PRA LINHA SEGUINTE AO 'DO WHILE'
		ENDIF   
	
		nCPF := VAL( cCPF ) // CONVERTE cCPF CARACTER PARA nCPF NUM�RICO COM VAL()
		IF !AG->(DBSEEK(nCPF)) // SE A PESQUISA DBSEEK() É NÃO VERDADEIRA, OU SEJA, FALSA, NÃO ENCONTROU NADA.
		   ALERT("ESSA PESSOA NÃO ESTÁ CADASTRADA")
		   LOOP
		ELSE
		   // REGISTRO FOI ENCONTRADO, MOSTRA DADOS NA TELA E PEDE CONFIRMAÇÃO PARA APAGAR
		   cSN := " " // DEFINE A VARIÁVEL cSN COMO STRING VAZIA DE 1 CARACTER
		   @ 10,10 SAY "NOME: " + AG->NOME 
		   @ 11,10 SAY "FONE: " + TRANSFORM(AG->FONE, "@R (99) 99999-9999") // ESSA FUNÇÃO TRABALHA IGUAL AO PICTURE DO @...GET
		   @ 24,00 SAY SPACE(79) COLOR "W+/BG" // LIMPA A LINHA DE STATUS
		   @ 24,00 SAY "Confirma deletar o registro? (S/N):" COLOR "W+/BG" GET cSN COLOR "GR+/N" PICTURE "@!" VALID cSN $ "SN" 
		   READ
		   
		   // MAIORES DETALHES SOBRE O @...GET ACIMA
		   // PICTURE "@!": Significa que tudo o que for digitado será MAIÚSCULO
		   // VALID cSN $ "SN": Valida o campo GET se cSN está contido na string "SN", só sai se o usuário pressionar "S" ou "N".
		   		   
		   IF cSN = "S"        // SE DIGITOU "S"
			  AG->(RLOCK())    // BLOQUEIA O REGISTRO
			  AG->(DBDELETE()) // MARCA O REGISTRO PARA DELEÇÃO
			  AG->(DBUNLOCK()) // DESBLOQUEIA O REGISTRO
		   ENDIF
		ENDIF   
	ENDDO // VOLTA PRA LINHA SEGUINTE DO 'DO WHILE'
	
	AG->(DBCLOSEAREA()) // FECHA O BANCO DE DADOS
RETURN

Resultado:

aprenda deletar registro dbf

O nome, telefone e CPF acima são fictícios.

Total votes: 0