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

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

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:

Código: Selecionar todos

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:

Código: Selecionar todos

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
Editado pela última vez por Pablo César em 11 Abr 2013 11:05, em um total de 2 vezes.
Razão: Título alterado
Avatar do usuário
jjr_rs
Usuário Nível 2
Usuário Nível 2
Mensagens: 72
Registrado em: 18 Mai 2009 18:56
Localização: Porto Alegre
Contato:

Ajuda sobre rotina

Mensagem por jjr_rs »

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:

Código: Selecionar todos

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
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

Ajuda sobre rotina

Mensagem por luiz antonio da silva »

Olá Paulo !

Simplificando...rs

Código: Selecionar todos

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
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

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.

Código: Selecionar todos

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
Editado pela última vez por Pablo César em 11 Abr 2013 10:33, em um total de 2 vezes.
Razão: 3 Tópicos anexados e título re-editado
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Ajuda sobre rotina de alteração

Mensagem por Jairo Maia »

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)
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Alteração dados no Grid

Mensagem por Paulo_CPV »

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:

Código: Selecionar todos

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:

Código: Selecionar todos

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

Código: Selecionar todos

	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

Código: Selecionar todos

   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
Editado pela última vez por Pablo César em 04 Abr 2013 11:15, em um total de 1 vez.
Razão: Titulo re-editado
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Alteração dados no Grid

Mensagem por Pablo César »

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 do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Alteração dados no Grid

Mensagem por Daniel »

Ola

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

Código: Selecionar todos

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
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

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 111 vezes
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

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

Mensagem por luiz antonio da silva »

Olá Paulo !

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

Código: Selecionar todos

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
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

Boa noite!

Esqueci de colocar a variável oDataConv....
Anexos
AltGrid.rar
(521.04 KiB) Baixado 119 vezes
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

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
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

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

Mensagem por Jairo Maia »

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)
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

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

Mensagem por Paulo_CPV »

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
luiz antonio da silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 161
Registrado em: 21 Nov 2006 22:12
Localização: serrana-sp

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

Mensagem por luiz antonio da silva »

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
Responder