× Linguagem de Programação ADVPL

Perguntas Confirmação de inclusao

Mais
11 anos 3 dias atrás #18169 por danielcamilo
Ola prezado;

Sou novo em advpl e estou apanhando um pouco para validar se o registro já existe gostaria de verificar a inserção do dado antes de confirmar. Exemplo inseri o codigo cliente 1 linha 1 se for inserir novamente este dado vai dar erro pois ele é unico como ao invez do erro no protheus que fecha o programa retornaria uma segue abaixo minhas funções. Quem puder me ajudar agradeço muito.

#INCLUDE "PROTHEUS.CH
#INCLUDE "TOTVS.CH


User Function armx()

//DbSelectArea("ZXX")
//dbSetOrder(1)

//AxCadastro("ZXY","Cadastro de Cliente x Linha ",".T.",".T.")

Private cAlias := "ZXY"
//Local aCores := {}//
Private cCadastro := "Cadastro de Cliente X Linha"
Private aRotina := {}
Private aCampos :={}

AADD(aRotina,{"Pesquisar" ,"AxPesqui",0,1}) //+
AADD(aRotina,{"Visualizar" ,"AxVisual",0,2})
AADD(aRotina,{"Incluir" ,"u_verinc",0,3})
AADD(aRotina,{"Alterar" ,"AxAltera",0,4})
AADD(aRotina,{"Excluir" ,"AxExclui",0,5})
//AADD(aRotina,{"Legenda" ,"U_BLegenda" ,0,3})
dbSelectArea(cAlias)//
dbGoTop()
AADD(aCampos,{"Cliente","ZXY_CODCLI"})
AADD(aCampos,{"Condição de pagamento","ZXY_CODPAG"})
mBrowse(6,1,22,75,"ZXY",aCampos)
Return

User Function verinc()
DbSelectArea("ZXY")
DbSetOrder(1) //numero do indice
DbGoTop()
If DbSeek(xFilial("ZXY")+ZXY_CODCLI+ZXY_CODPAG)
axInclui("ZXY",0,3,,,,)
Else
MSGALERT("Alerta"," Não foi possível inserir o novo cadastro,verifique se o mesmo já existe.")
Endif

//endif
return

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 13 horas atrás #18213 por mbrigagao
Respondido por mbrigagao no tópico Confirmação de inclusao
Daniel,

Sua lógica está inversa:

Ou é assim :
User Function verinc()
DbSelectArea("ZXY")
DbSetOrder(1) //numero do indice
DbGoTop()
If  ! DbSeek(xFilial("ZXY")+ZXY_CODCLI+ZXY_CODPAG)
axInclui("ZXY",0,3,,,,)
Else
MSGALERT("Alerta"," Não foi possível inserir o novo cadastro,verifique se o mesmo já existe.")
Endif

Ou Assim
User Function verinc()
DbSelectArea("ZXY")
DbSetOrder(1) //numero do indice
DbGoTop()
If  DbSeek(xFilial("ZXY")+ZXY_CODCLI+ZXY_CODPAG)
MSGALERT("Alerta"," Não foi possível inserir o novo cadastro,verifique se o mesmo já existe.")
Else
axInclui("ZXY",0,3,,,,)
Endif

At.

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 10 horas atrás #18231 por danielcamilo
Respondido por danielcamilo no tópico Confirmação de inclusao
Private cAlias := "ZXY"
Private cCadastro := "Cadastro de Cliente X Linha"
Private aRotina := {}
Private aCampos :={}
dbSelectArea(cAlias)
dbGoTop()
AADD(aCampos,{"Cliente","ZXY_CODCLI"})
AADD(aCampos,{"Condição de pagamento","ZXY_CODPAG"})
AADD(aRotina,{"Pesquisar" ,"AxPesqui",0,1})
AADD(aRotina,{"Incluir" ,"u_verinc",0,3})
AADD(aRotina,{"Alterar" ,"AxAltera",0,4})
AADD(aRotina,{"Excluir" ,"AxExclui",0,5})
mBrowse(6,1,22,75,"ZXY",aCampos)
Return

User Function verinc()
Local lDel := .T.

DbSelectArea("ZXY")
DbSetOrder(1)
DbGoTop()

If dbSeek(xFilial("ZXY")+ZXY->ZXY_CODCLI+ZXY->ZXY_CODPAG)
lDel := .F.
endif
if ldel
axInclui("ZXY",0,3,,,,,,)
else

Endif
return



assim esta dando o lance é o seguinte quando clico no botao de incluir ele executa a funcao verific o certo desta função estaria no confirmar do mbrowse mas nao sei como fazer isso

Por favor Acessar ou Registrar para participar da conversa.

Mais
11 anos 9 horas atrás #18235 por mbrigagao
Respondido por mbrigagao no tópico Confirmação de inclusao
Daniel,

Acho que o correto seria fazer a validação desta forma:
User Function verinc()

ALTERA := .F.

Return AxInclui(cAlias,nReg,nOpc,,,,"U_VALIDA()")



User Function valida()
lRet := .F.
aArea := GetArea()

DbSelectArea("ZXY")
DbSetOrder(1)
DbGoTop()

If dbSeek(xFilial("ZXY")+M->ZXY_CODCLI+M->ZXY_CODPAG)  // Se achou retorna F pois não pode dar chave duplicada
  lRet := .F. 
Else
  lRet := .T.
Endif

RestArea(aArea)

Return(lRet)

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás #18269 por danielcamilo
Respondido por danielcamilo no tópico Confirmação de inclusao
Muito obrigado era isso mesmo valews

Por favor Acessar ou Registrar para participar da conversa.

Mais
10 anos 11 meses atrás - 10 anos 11 meses atrás #18510 por rogerfsp
Respondido por rogerfsp no tópico Confirmação de inclusao
Daniel,

Só observando: O DbGoTop() antes de um dbSeek() é desnecessário, pois o dbSeek() usa índice(s).
Se fosse uma busca sequencial (do primeiro, até achar o registro que quer), sem índice, aí sim se usaria um DbGoTop().

At.,
Roger.

microsigadvpl.blogspot.com/
Ultima edição: 10 anos 11 meses atrás por rogerfsp.

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.131 segundos
Joomla templates by a4joomla