- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Confirmação de inclusao
×
Linguagem de Programação ADVPL
Perguntas Confirmação de inclusao
- danielcamilo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
11 anos 2 semanas atrás #18169
por danielcamilo
Confirmação de inclusao foi criado 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
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.
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 2 semanas atrás #18213
por mbrigagao
Respondido por mbrigagao no tópico Confirmação de inclusao
Daniel,
Sua lógica está inversa:
Ou é assim :
Ou Assim
At.
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.
- danielcamilo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
11 anos 2 semanas 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
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.
- mbrigagao
- Desconectado
- Membro Platina
Menos
Mais
- Postagens: 350
- Obrigados Recebidos: 1
11 anos 2 semanas 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:
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.
- danielcamilo
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 10
- Obrigados Recebidos: 0
11 anos 2 semanas 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.
- rogerfsp
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 9
- Obrigados Recebidos: 0
11 anos 1 semana atrás - 11 anos 1 semana 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/
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 semana atrás por rogerfsp.
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Confirmação de inclusao
Tempo para a criação da página:0.115 segundos