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:
O nome, telefone e CPF acima são fictícios.
Comentários recentes