Página 1 de 2

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

Enviado: 29 Mar 2013 15:45
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

Ajuda sobre rotina

Enviado: 29 Mar 2013 20:34
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 !

Ajuda sobre rotina

Enviado: 01 Abr 2013 10:57
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.

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

Enviado: 01 Abr 2013 16:17
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

Ajuda sobre rotina de alteração

Enviado: 03 Abr 2013 10:07
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.

Alteração dados no Grid

Enviado: 04 Abr 2013 11:12
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

Alteração dados no Grid

Enviado: 04 Abr 2013 12:15
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á...

Alteração dados no Grid

Enviado: 04 Abr 2013 13:30
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

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

Enviado: 08 Abr 2013 21:54
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

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

Enviado: 08 Abr 2013 22:16
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.

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

Enviado: 08 Abr 2013 22:42
por Paulo_CPV
Boa noite!

Esqueci de colocar a variável oDataConv....

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

Enviado: 09 Abr 2013 07:38
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

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

Enviado: 09 Abr 2013 09:03
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?

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

Enviado: 09 Abr 2013 10:57
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

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

Enviado: 09 Abr 2013 19:50
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) ?.