- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ordenar Chamados - chamus.prw
×
Linguagem de Programação ADVPL
Perguntas Ordenar Chamados - chamus.prw
- parks
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 5
- Obrigados Recebidos: 0
11 anos 1 mês atrás #17574
por parks
Ordenar Chamados - chamus.prw foi criado por parks
Bom dia a todos !
Essa é a primeira vez que posto no Forum. Sou iniciante em ADVPL e tenho como primeiro trabalho, criar uma função que ordene os chamados de acordo com uma posição que eu informar, por exemplo, o chamado 001234 quero que seja o primeiro da lista, então determino posição = 1, o chamado 001235 posição = 2 e assim sucessivamente, porem quero que ao indicar uma posição já existente ele reposicione os outros aumentando 1, ou seja, se eu adicionar um novo chamado e colocar na posição 2 - aquele da posição 2 atualmente será 3.
Chamo a função enviando (numero da posicao, numero opcao(incluir, alterar e etc))
Lembrando que antes de chamar a função, eu já verifico antes se existe um valor de posição igual.
User Function Ordena(nPosNova, nOp)
Local nPosNova
Local nOp
Private aRetorno := {}
Private cQuery := ""
//Verifico se a opção é incluir - no momento estou so preocupado com a inclusão
//Faço o select para pegar a posição igual e maior que o valor que passei
If nOp == 3
cQuery := " SELECT ZD_NUMCHAM, ZD_HIPPOS "
cQuery += " FROM " + RetSqlName("SZD") + " SZD "
cQuery += " WHERE ZD_HIPPOS >= "+ str(nPosNova)+""
cQuery += " AND D_E_L_E_T_ <> '*'"
If Select("Qry") <> 0
Qry->(dbCloseArea())
End
TCQuery cQuery Alias Qry New
//Aqui TENTO fazer o incremento das posições
While Qry->(!Eof())
RecLock('SZD', .F.)
SZD->ZD_HIPPOS := (Qry->ZD_HIPPOS + 1)
MsUnLock()
Qry->(dbSkip())
EndDo
EndIf
O que ocorre com essa função é que ela incrementa somente o ultimo objeto do select.
Gostaria de opiniões sobre o que estou fazendo, se estou na direção certa, ou estou viajando muito.. e caso seja por ai, o que estou fazendo de errado na função....
Essa é a primeira vez que posto no Forum. Sou iniciante em ADVPL e tenho como primeiro trabalho, criar uma função que ordene os chamados de acordo com uma posição que eu informar, por exemplo, o chamado 001234 quero que seja o primeiro da lista, então determino posição = 1, o chamado 001235 posição = 2 e assim sucessivamente, porem quero que ao indicar uma posição já existente ele reposicione os outros aumentando 1, ou seja, se eu adicionar um novo chamado e colocar na posição 2 - aquele da posição 2 atualmente será 3.
Chamo a função enviando (numero da posicao, numero opcao(incluir, alterar e etc))
Lembrando que antes de chamar a função, eu já verifico antes se existe um valor de posição igual.
User Function Ordena(nPosNova, nOp)
Local nPosNova
Local nOp
Private aRetorno := {}
Private cQuery := ""
//Verifico se a opção é incluir - no momento estou so preocupado com a inclusão
//Faço o select para pegar a posição igual e maior que o valor que passei
If nOp == 3
cQuery := " SELECT ZD_NUMCHAM, ZD_HIPPOS "
cQuery += " FROM " + RetSqlName("SZD") + " SZD "
cQuery += " WHERE ZD_HIPPOS >= "+ str(nPosNova)+""
cQuery += " AND D_E_L_E_T_ <> '*'"
If Select("Qry") <> 0
Qry->(dbCloseArea())
End
TCQuery cQuery Alias Qry New
//Aqui TENTO fazer o incremento das posições
While Qry->(!Eof())
RecLock('SZD', .F.)
SZD->ZD_HIPPOS := (Qry->ZD_HIPPOS + 1)
MsUnLock()
Qry->(dbSkip())
EndDo
EndIf
O que ocorre com essa função é que ela incrementa somente o ultimo objeto do select.
Gostaria de opiniões sobre o que estou fazendo, se estou na direção certa, ou estou viajando muito.. e caso seja por ai, o que estou fazendo de errado na função....
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 1 mês atrás #17576
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ordenar Chamados - chamus.prw
Peterson bom dia, que loucura isso hein, posso perguntar porque essa necessidade ? sendo que os chamados já tem uma numeração sequencial ? Porque neste caso não usa o conceito de prioridade ao invez deste tipo de numeração para posicionar os mais urgentes ?
Tipo Prioridade Baixa, Normal e Urgente ?, porque pensando nisso, vc tem a obrigatoriedade de varrer toda a tabela de chamados a cada inclusão, vai chegar uma hora que vai tornar-se extremamente lento seu sistema.
Abraços.
Tipo Prioridade Baixa, Normal e Urgente ?, porque pensando nisso, vc tem a obrigatoriedade de varrer toda a tabela de chamados a cada inclusão, vai chegar uma hora que vai tornar-se extremamente lento seu sistema.
Abraços.
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- parks
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 5
- Obrigados Recebidos: 0
11 anos 1 mês atrás #17577
por parks
Respondido por parks no tópico Ordenar Chamados - chamus.prw
Bom dia Luiz Alberto.
Obrigado pela pronta resposta...
Pois é, na verdade me passaram isso, primeiro para que eu pudesse ir me familiarizando cada vez mais com o advpl e segundo o analista Protheus aqui da empresa, facilitaria ainda mais a identificação dos chamados com maior prioridade.
Olhando pela sua perspectiva, realmente não tem grande necessidade essa alteração.
Quanto a lentidão, acredito que não foi pensado nisso...
Mas Luiz, como é minha primeira missão gostaria de resolve-la, até mesmo pela satisfação pessoal e do analista que me pediu isso.
Abraço...
Obrigado pela pronta resposta...
Pois é, na verdade me passaram isso, primeiro para que eu pudesse ir me familiarizando cada vez mais com o advpl e segundo o analista Protheus aqui da empresa, facilitaria ainda mais a identificação dos chamados com maior prioridade.
Olhando pela sua perspectiva, realmente não tem grande necessidade essa alteração.
Quanto a lentidão, acredito que não foi pensado nisso...
Mas Luiz, como é minha primeira missão gostaria de resolve-la, até mesmo pela satisfação pessoal e do analista que me pediu isso.
Abraço...
Por favor Acessar ou Registrar para participar da conversa.
- lalberto
- Desconectado
- Administrador
Menos
Mais
- Postagens: 3676
- Obrigados Recebidos: 6
11 anos 1 mês atrás #17578
por lalberto
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Respondido por lalberto no tópico Ordenar Chamados - chamus.prw
Faz Assim:
//Verifico se a opção é incluir - no momento estou so preocupado com a inclusão
//Faço o select para pegar a posição igual e maior que o valor que passei
If nOp == 3
cQuery := " SELECT ZD_NUMCHAM, ZD_HIPPOS, R_E_C_N_O_ REG "
cQuery += " FROM " + RetSqlName("SZD") + " SZD "
cQuery += " WHERE ZD_HIPPOS >= "+ str(nPosNova)+""
cQuery += " AND D_E_L_E_T_ <> '*'"
If Select("Qry") <> 0
Qry->(dbCloseArea())
End
TCQuery cQuery Alias Qry New
//Aqui TENTO fazer o incremento das posições
While Qry->(!Eof())
SZD->(dbGoTo(Qry->REG))
RecLock('SZD', .F.)
SZD->ZD_HIPPOS := (Qry->ZD_HIPPOS + 1)
SZD->(MsUnLock())
Qry->(dbSkip())
EndDo
EndIf
//Verifico se a opção é incluir - no momento estou so preocupado com a inclusão
//Faço o select para pegar a posição igual e maior que o valor que passei
If nOp == 3
cQuery := " SELECT ZD_NUMCHAM, ZD_HIPPOS, R_E_C_N_O_ REG "
cQuery += " FROM " + RetSqlName("SZD") + " SZD "
cQuery += " WHERE ZD_HIPPOS >= "+ str(nPosNova)+""
cQuery += " AND D_E_L_E_T_ <> '*'"
If Select("Qry") <> 0
Qry->(dbCloseArea())
End
TCQuery cQuery Alias Qry New
//Aqui TENTO fazer o incremento das posições
While Qry->(!Eof())
SZD->(dbGoTo(Qry->REG))
RecLock('SZD', .F.)
SZD->ZD_HIPPOS := (Qry->ZD_HIPPOS + 1)
SZD->(MsUnLock())
Qry->(dbSkip())
EndDo
EndIf
Luiz Alberto Vieira Alves
Proprietário
55 (12) 9 8256-5905 (Vivo)
www.3lsystems.com.br
www.masteradvpl.com.br
Por favor Acessar ou Registrar para participar da conversa.
- parks
- Autor do Tópico
- Desconectado
- Membro Iniciado
Menos
Mais
- Postagens: 5
- Obrigados Recebidos: 0
11 anos 1 mês atrás #17619
por parks
Respondido por parks no tópico Ordenar Chamados - chamus.prw
Luiz Alberto. Funcionou perfeitamente.
Vou terminar de fazer a loukura aqui hehe, e depois deixo a disposição caso alguém tenha interesse.
Obrigado !
Vou terminar de fazer a loukura aqui hehe, e depois deixo a disposição caso alguém tenha interesse.
Obrigado !
Por favor Acessar ou Registrar para participar da conversa.
- Fórum
- Protheus/Microsiga/Totvs
- AdvPL (Advanced Protheus Language)
- Dúvidas Gerais
- Ordenar Chamados - chamus.prw
Tempo para a criação da página:0.185 segundos