Clipper On Line • Ver Tópico - Rotinas de inclusão/alteração/deleção no GRID

Rotinas de inclusão/alteração/deleção no GRID

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Rotinas de inclusão/alteração/deleção no GRID

Mensagempor Paulo_CPV » 29 Mar 2013 15:45

Boa tarde!

Colegas do grupo, estou criando uma função para deletar itens de uma grid, mas ela não esta funcionando dá o seguinte erro:

Date: 29/03/2013 Time: 15:33:23
Error BASE/1072 Erro nos parÆ’metros: <>

Called from DATACONVERT:APAGAR(2298)
Called from (b)TELA(2874)
Called from _DOCONTROLEVENTPROCEDURE(1582)
Called from EVENTS(507)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1307)
Called from DOMETHOD(4649)
Called from TELA(2999)
Called from (b)DATACONVERT(197)
Called from DATACONVERT:SOMAMULT(0)
Called from (b)TELA(71)
Called from _DOCONTROLEVENTPROCEDURE(1582)
Called from EVENTS(1383)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1307)
Called from DOMETHOD(4649)
Called from TELA(165)
Called from (b)INICIARAMBIENTE(221)
Called from INICIARAMBIENTE:INITTELA(0)
Called from MAIN(21)


A função é chamada pela tecla [DEL] e é a seguinte:

Function Apagar()

    IF Form_1.grid_1.ItemCount = 0

      MSGINFO('Não há iTens')

    ENDIF

    i := Form_1.grid_1.Value

    IF MSGYESNO('Excluir ?','Excluir Item')

      IF i <> 0 // -> Aqui que está dando o erro

        Form_1.Grid_1.DeleteItem(i)

        IF i > Form_1.grid_1.Itemcount

          Form_1.grid_1.Value:= i-1

        ELSE

          Form_1.grid_1.Value:= i

        ENDIF

        Form_1.grid_1.Setfocus
        Form_1.grid_1.Refresh

      ENDIF

    ENDIF

RETURN Nil


Espero que algum colega do grupo saiba o porque deste erro, que eu acho que está certo, mas posso estar errado.

[]'s
Paulo - Jacareí/SP
Nota de Moderação:
Pablo César: Título alterado
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Ajuda sobre rotina

Mensagempor jjr_rs » 29 Mar 2013 20:34

Olá meu amigo, abaixo fiz um ajuste na tua função.

Pode ser bobagem mas te peço fazer um teste para ver se dá certo.

Faço isso imaginando que realmente só naquele ponto que teu sistema dá erro.

Abaixo está o ajuste da forma que utilizo nos meus sistemas:
Function Apagar()

IF Empty( Form_1.grid_1.ItemCount )
   MSGINFO('Não há iTens')
   Return .T.
Endif

If ! Empty( Form_1.grid_1.Value )
   Delete Item Form_1.grid_1.Value From Grid_1 Of Form_1
   Form_1.grid_1.Setfocus
   Form_1.grid_1.Refresh
Endif
Return .T.


Espero ter lhe ajudado !

Abraços !
Bahsis Sistemas de Gestão
Avatar de usuário

jjr_rs
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 72
Data de registro: 18 Mai 2009 18:56
Cidade/Estado: Porto Alegre
Curtiu: 0 vez
Mens.Curtidas: 2 vezes

Ajuda sobre rotina

Mensagempor luiz antonio da silva » 01 Abr 2013 10:57

Olá Paulo !

Simplificando...rs

Function Apagar()
   
       IF Form_1.grid_1.ItemCount = 0
                      MSGINFO('Não há iTens')
                      RETURN NIL
       ELSE
                      i := Form_1.grid_1.Value
           IF MSGYESNO('Excluir ?','Excluir Item')
                         Form_1.Grid_1.DeleteItem(i)
           ENDIF
        ENDIF
                   Form_1.grid_1.Value:=Form_1.grid_1.itemcount
                   Form_1.grid_1.Setfocus
                   Form_1.grid_1.Refresh

RETURN Nil


Abraço.
Luiz.
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

Rotinas de alteração/inclusão/deleção no GRID

Mensagempor Paulo_CPV » 01 Abr 2013 16:17

Boa tarde!

Colegas do grupo, estou criando uma rotina para alteração numa Grid, mas não estou conseguindo que ele me mostre o dado alterado. Digito na coluna desejada a data e ele mostra a data alterada na Grid, mas quando vou mostrar MSGINFO() ela me mostra a data que estava antes da alteração.

Estou usando ALLOWEDIT .T., a função de alteração coloquei na COLUMNVALID{}. A minha Grid tem 5 colunas, Data 1, Data 2,Valor 1, Valor 2 e Valor 3.

Function Alterar()

   Form_1.grid_1.Refresh

   FOR x = 1 TO Form_1.grid_1.ItemCount

      aDados := Form_1.grid_1.Item(x)

   NEXT

   cData1 := aDados[1]
   cData2 := aDados[2]

   MSGINFO(DTOC(cData1)+" "+DTOC(cData2),"Teste")

RETURN .T.


Desde já agradeço a atenção de todos e espero que alguém do grupo possa me ajudar.

[]'s
Paulo - Jacareí/SP
Harbour / xHarbour / Minigui 2.20 / HMG 3.11
Nota de Moderação:
Pablo César: 3 Tópicos anexados e título re-editado
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Ajuda sobre rotina de alteração

Mensagempor Jairo Maia » 03 Abr 2013 10:07

Olá Paulo,

Não entendo o laço FOR/NEXT que você colocou. A mim está estranho. Porém, verifique o exemplo em C:\hmg.3.1.1\SAMPLES\GRID.07 e veja a função Modificar() que acho que você resolve seu problema.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Alteração dados no Grid

Mensagempor Paulo_CPV » 04 Abr 2013 11:12

Bom dia!

Colegas dos grupo, estou fazendo uma rotina de alteração para o contrele Grid, e não estou conseguindo desenvolver está rotina, já fiz de tudo e nada feito. Estou me baseando no exemplo do HMG 3.1.1 ...Samples/Basic/Grid.7 na rotina Modificar().

Rotina do Exemplo:

Procedure Modificar()
Local i := Form_1.Grid_1.Value , aTemp

   Op := 'MODIFICAR'

   If i != 0

      aTemp := Form_1.Grid_1.Item(i)

      Form_1.Text_1.Value := aTemp [1]
      Form_1.Text_2.Value := aTemp [2]
      Form_1.Text_3.Value := aTemp [3]

      Form_1.Text_1.Enabled :=.t.
      Form_1.Text_2.Enabled :=.t.
      Form_1.Text_3.Enabled :=.t.

      Form_1.Button_1.Enabled :=.f.
      Form_1.Button_2.Enabled :=.f.
      Form_1.Button_3.Enabled :=.f.

      Form_1.Button_A.Enabled :=.t.
      Form_1.Button_B.Enabled :=.t.

      Form_1.Grid_1.Enabled := .f.

      Form_1.Text_1.SetFocus

   EndIf

Return

Procedure Ok()
Local aTemp := {} , i

   If   Op == 'AGREGAR'

      Form_1.Grid_1.AddItem ( { Form_1.Text_1.Value , Form_1.Text_2.Value , Form_1.Text_3.Value } )
      Form_1.Grid_1.Value := Form_1.Grid_1.ItemCount

   ElseIf   Op == 'MODIFICAR'

      i := Form_1.Grid_1.Value
      Form_1.Grid_1.Item (i) := { Form_1.Text_1.Value,Form_1.Text_2.Value ,Form_1.Text_3.Value }

   EndIf

   Form_1.Text_1.Value := ''
   Form_1.Text_2.Value := ''
   Form_1.Text_3.Value := ''

   Form_1.Text_1.Enabled :=.f.
   Form_1.Text_2.Enabled :=.f.
   Form_1.Text_3.Enabled :=.f.

   Form_1.Button_1.Enabled :=.t.
   Form_1.Button_2.Enabled :=.t.
   Form_1.Button_3.Enabled :=.t.

   Form_1.Button_A.Enabled :=.f.
   Form_1.Button_B.Enabled :=.f.

   Form_1.Grid_1.Enabled := .t.

   Form_1.Grid_1.SetFocus

Return


Minha Rotina:

Function Alterar()
   LOCAL x , aDados , nFim , i

   nFim := Form_1.grid_1.ItemCount

   FOR x = 1 TO nFim

      aDados := Form_1.grid_1.Item(x)

   NEXT x

   Form_1.text_1.Value := aDados[1]
   Form_1.text_2.Value := aDados[2]

   Form_1.text_1.SetFocus

   i := Form_1.grid_1.Value
   Form_1.grid_1.Item(i) := {Form_1.text_1.Value,Form_1.text_2.Value}
RETURN NIL


Na minha rotina Form_1.text_1 e Form_1.text_2 são do tipo DATE ele não está atualizando o item selecionado e sim está acrescentando mais um item. Estranho que eu coloco as seguintes linhas na minha rotina do exemplo Grid.7 e dá erro

   If i != 0

      aTemp := Form_1.Grid_1.Item(i)


Dai eu tenho que fazer o seguinte para dar certo como no exemplo Grid.7, estou utilizando o Minigui 2.20
   nFim := Form_1.grid_1.ItemCount

   FOR x = 1 TO nFim

      aDados := Form_1.grid_1.Item(x)

   NEXT x

   Form_1.text_1.Value := aDados[1]
   Form_1.text_2.Value := aDados[2]


Desde já agradeço a todos que me veem me ajudando e espero que alguém possa me ajudar urgêntimente, pois não sei mais o que fazer para resolver este problema.

[]'s
Paulo - Jacareí/SP
Nota de Moderação:
Pablo César: Titulo re-editado
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Alteração dados no Grid

Mensagempor Pablo César » 04 Abr 2013 12:15

Paulo você mostra os exemplos do próprio Minigui, mas não mostra o seu código... como saber de que forma está o seu grid, as suas rotinas ? Não sei por quê tanto receio de postar o código. Sem código, eu não tenho como rodar... e ficaria dando alternativas A, B... como um tiro no escuro... Eu nem sequer entendi o seu problema. Tentou transformar o conteúdo de data para caracter ? Sei lá...
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Alteração dados no Grid

Mensagempor Daniel » 04 Abr 2013 13:30

Ola

o erro e que vc esta alterando mais de um dado do grid

Function Alterar()
      LOCAL x , aDados:= {} , nFim , i
   
      nFim := Form_1.grid_1.ItemCount
   
      FOR x = 1 TO nFim
   
         AADD(aDados, Form_1.grid_1.Item(x))
   
      NEXT x
   
      Form_1.text_1.Value := aDados[1][1]
      Form_1.text_2.Value := aDados[1][2]
   
      Form_1.text_1.SetFocus
   
      i := Form_1.grid_1.Value
      Form_1.grid_1.Item(i) := {Form_1.text_1.Value,Form_1.text_2.Value}
   RETURN NIL
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar de usuário

Daniel
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 373
Data de registro: 13 Ago 2003 22:42
Cidade/Estado: Apucarana - PR
Curtiu: 0 vez
Mens.Curtidas: 36 vezes

Função de Alteração não funciona

Mensagempor Paulo_CPV » 08 Abr 2013 21:54

Boa noite!

Colegas do grupo estou tentando criar uma função de alteração para uma GRis, já faz dias e não estou conseguindo de jeito nenhum, o que está acontecendo é o seguinte: Quando pesso para alterar o dado no grid ele nã muda o valor no grid e não faz o cálculo para o novo período. Estou anexando executável e fontes para quem puder me ajudar. O Exemplo está em Minigui 2.20 e Harbour 3.2 e BCC 5.5.1

[]'s
Paulo - Jacareí/SP
Anexos
AltGrid.rar
(521.32 KiB) Baixado 93 vezes
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Função de Alteração não funciona

Mensagempor luiz antonio da silva » 08 Abr 2013 22:16

Olá Paulo !

Deu erro na execução aqui na hora de incluir ("oDataConv"), mas acredito que com a alteração abaixo deva funcionar.

IF Op == "ADICIONAR"

   Form_1.Grid_1.AddItem ( { Form_1.Text_1.Value , Form_1.Text_2.Value } )
   Form_1.Grid_1.Value := Form_1.Grid_1.ItemCount

     ELSEIF Op == "ALTERAR"

   i := Form_1.Grid_1.Value
             
//   Form_1.Grid_1.Item(i) := { Form_1.Text_1.Value,Form_1.Text_2.Value }

              Form_1.Grid_1.cell(i,1):= Form_1.Text_1.Value
              Form_1.Grid_1.cell(i,2):= Form_1.Text_2.Value
              Form_1.Grid_1.refresh

        oDataConv:ConvertaDatas(Form_1.text_1.Value,Form_1.Text_2.Value,1,2)

     ENDIF


Abraço.
Luiz.
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

Função de Alteração não funciona

Mensagempor Paulo_CPV » 08 Abr 2013 22:42

Boa noite!

Esqueci de colocar a variável oDataConv....
Anexos
AltGrid.rar
(521.04 KiB) Baixado 100 vezes
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Função de Alteração não funciona

Mensagempor Paulo_CPV » 09 Abr 2013 07:38

Bom dia!

Luiz fiz a modificações que você me propôs mas mesmo assim não deu certo, continua não atualizando o Grid e não fazendo o cálculo do período alterado.

[]'
Paulo -Jacareí/SP
Harbour 3.x Minigui 2.x HMG 3.x MYSQL
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Função de Alteração não funciona

Mensagempor Jairo Maia » 09 Abr 2013 09:03

Olá Paulo,

O problema é que você tem mais 2 tópicos além deste sobre o mesmo assunto, a saber:
Em 01/04/12 - Ajuda sobre rotina de alteração
Em 04/04/12 - Alteração dados na Grid


Neste último (04/04/12), você tentou as alterações sugeridas pelo colega Daniel? Se sim, também não funcionou?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Função de Alteração não funciona

Mensagempor Paulo_CPV » 09 Abr 2013 10:57

Bom dia!

Luiz, já fiz o teste com o que o Daniel me passou e também não deu certo. Estou fazendo de tudo, mas não funciona de geito nenhum. Pelo exemplo que eu peguei no HMG (Grid.7) funciona perfeitamente.

[]'s
Paulo - Jacareí/SP
Harbour 3.2 Minigui 2.20 HMG 3.x MYSQL
Paulo_CPV
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 178
Data de registro: 07 Mar 2013 10:27
Cidade/Estado: Jacarei/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Função de Alteração não funciona

Mensagempor luiz antonio da silva » 09 Abr 2013 19:50

Olá Paulo !

Posso alterar seu código ?, nos testes que fiz tem diferença nos resultados dos cálculos, se puder alterar acredito que ficará mais enchuto e funcional.

* O resultado calculado data a data vai levar em conta ano bi, mas a soma dos dados registro a registro vai tomar como base o mes comercial, (30 dias) ?.
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro