× Linguagem de Programação ADVPL

Perguntas Confirmação de inclusao

Mais
11 anos 1 mês 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 1 mês 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 1 mês 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 1 mês 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
11 anos 1 mês 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
11 anos 1 mês atrás - 11 anos 1 mês 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: 11 anos 1 mês atrás por rogerfsp.

Por favor Acessar ou Registrar para participar da conversa.

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