Rotinas de inclusão/alteração/deleção no GRID
Moderador: Moderadores
Função de Alteração não funciona
Boa noite!
Caro luiz os cálculos que eu faço são baseados que os meses só tenham 30 dias, mesmo no mês de fevereiro. Por acaso você tem uma solução para a meu problema?
[]'s
Paulo - Jacareí/SP
Caro luiz os cálculos que eu faço são baseados que os meses só tenham 30 dias, mesmo no mês de fevereiro. Por acaso você tem uma solução para a meu problema?
[]'s
Paulo - Jacareí/SP
-
luiz antonio da silva
- 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
Boa Noite Paulo !
teste o código abaixo.
1) Para incluir basta um enter no campo data final
2) Para alterar, selecione o item do grid e clique em alterar
3) Para excluir basta duplo clique no item do grid.
veja se isso ajuda.
* Mude para hmg.ch...blz
Abraço.
teste o código abaixo.
1) Para incluir basta um enter no campo data final
2) Para alterar, selecione o item do grid e clique em alterar
3) Para excluir basta duplo clique no item do grid.
veja se isso ajuda.
Código: Selecionar todos
#include "minigui.ch"
func main()
public alterar:=0
set date brit
set century on
set epoch to 1960
DEFINE WINDOW form_1 AT 206 , 290 WIDTH 375 HEIGHT 460 main
DEFINE FRAME Frame_1
ROW 10
COL 10
WIDTH 161
HEIGHT 50
CAPTION "Data Inicial (dd/mm/aaaa)"
OPAQUE .T.
END FRAME
DEFINE TEXTBOX data_ini
ROW 30
COL 30
WIDTH 120
HEIGHT 24
DATE .T.
on enter form_1.data_fim.setfocus
END TEXTBOX
DEFINE FRAME Frame_2
ROW 10
COL 190
WIDTH 161
HEIGHT 50
CAPTION "Data Final (dd/mm/aaaa)"
OPAQUE .T.
END FRAME
DEFINE TEXTBOX data_fim
ROW 30
COL 210
WIDTH 120
HEIGHT 24
DATE .T.
on enter calcula(form_1.data_ini.value,form_1.data_fim.value)
END TEXTBOX
DEFINE FRAME Frame_3
ROW 70
COL 10
WIDTH 341
HEIGHT 48
CAPTION "Tempo Acumulado"
OPAQUE .T.
END FRAME
DEFINE LABEL acumulado
ROW 90
COL 20
WIDTH 320
HEIGHT 22
VALUE ""
FONTBOLD .T.
CENTERALIGN .T.
END LABEL
DEFINE GRID Grid_1
ROW 130
COL 10
WIDTH 340
HEIGHT 223
ITEMS {}
WIDTHS {95,95,50,50,50}
HEADERS {'Dt ini','Dt final','Ano','Mes','Dia'}
COLUMNCONTROLS { {'TEXTBOX','DATE'} , {'TEXTBOX','DATE'} , {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} }
JUSTIFY {BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER}
on dblclick (FORM_1.GRID_1.DELETEITEM(FORM_1.GRID_1.VALUE),ACUMULAR())
END GRID
DEFINE BUTTON bt_altera
ROW 360
COL 10
WIDTH 100
HEIGHT 28
CAPTION "&Alterar"
action alterar_dados()
END BUTTON
DEFINE BUTTON bt_sair
ROW 360
COL 250
WIDTH 100
HEIGHT 28
CAPTION "&Sair"
action form_1.release
END BUTTON
END WINDOW
form_1.data_ini.setfocus
activate window form_1
retu
func calcula(dDataInicial,dDataFinal)
v_dia:=v_mes:=v_ano:=0
v_anof=YEAR(dDataFinal)
v_mesf=MONTH(dDataFinal)
v_diaf=DAY(dDataFinal)
v_anoi=YEAR(dDataInicial)
v_mesi=MONTH(dDataInicial)
v_diai=DAY(dDataInicial)
IF v_diaf < v_diai
v_diaf+=30
v_mesf-=1
ENDIF
v_dia=v_diaf - v_diai
IF v_mesf < v_mesi
v_mesf+=12
v_anof-=1
ENDIF
v_mes=v_mesf - v_mesi
v_ano=v_anof - v_anoi
v_ret=''
IF v_ano>0
v_ret=STRZERO(v_ano,2)+IF(v_ano=1,' ano',' anos')+IF(v_mes>0,IF(v_dia>0,',',' e '),IF(v_dia>0,' e ',''))
ENDIF
IF v_mes>0
v_ret+=STRZERO(v_mes,2)+IF(v_mes=1,' mes ',' meses ')+IF(v_dia>0,'e ','')
ENDIF
IF v_dia>0
v_ret+=STRZERO(v_dia,2)+IF(v_dia=1,' dia',' dias')
ENDIF
if alterar=1
form_1.grid_1.cell(form_1.grid_1.value,1):=form_1.data_ini.value
form_1.grid_1.cell(form_1.grid_1.value,2):=form_1.data_fim.value
form_1.grid_1.cell(form_1.grid_1.value,3):=v_ano
form_1.grid_1.cell(form_1.grid_1.value,4):=v_mes
form_1.grid_1.cell(form_1.grid_1.value,5):=v_dia
else
add item { form_1.data_ini.value, form_1.data_fim.value,v_ano,v_mes,v_dia} to grid_1 of form_1
endif
acumular()
alterar:=0
form_1.data_ini.value:=""
form_1.data_fim.value:=""
form_1.data_ini.setfocus
Return (v_ret)
retu
func alterar_dados()
alterar:=1
form_1.data_ini.value:=form_1.grid_1.cell(form_1.grid_1.value,1)
form_1.data_fim.value:=form_1.grid_1.cell(form_1.grid_1.value,2)
form_1.data_ini.setfocus
retu
func acumular()
_dia:=_mes:=_ano:=0
for x=1 to form_1.grid_1.itemcount
_dia:=_dia+form_1.grid_1.cell(x,5)
_mes:=_mes+form_1.grid_1.cell(x,4)
_ano:=_ano+form_1.grid_1.cell(x,3)
if _dia>30
_dia:=0
_mes:=_mes+1
endif
if _mes>12
_mes:=0
_ano:=_ano+1
endif
next x
if _dia>1; f_dia:="dias"; else; f_dia:="dia"; endif
if _mes>1; f_mes:="meses"; else; f_mes:="mes"; endif
if _ano>1; f_ano:="anos"; else; f_ano:="ano"; endif
form_1.acumulado.value:=alltrim(str(int(_ano)))+" "+f_ano+", "+;
alltrim(str(int(_mes)))+" "+f_mes+", e "+;
alltrim(str(int(_dia)))+" "+f_dia
form_1.acumulado.refresh
form_1.grid_1.value:=form_1.grid_1.itemcount
retu
Abraço.
HMG 3.4.4 - SQL SERVER - ORACLE
Função de Alteração não funciona
Luiz, muito obrigado pela sua ajuda. Funcionou muito bem e precisando eu estou por aqui.
[]'s
Paulo - Jacareí/SP
[]'s
Paulo - Jacareí/SP
-
luiz antonio da silva
- 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
Perdão por ter esquecido algo tão importante.
A rotina de cálculo entre datas citada acima, foi retirada aqui mesmo do forum.
https://pctoledo.org/forum/viewto ... 979#p50979
post do nosso amigo Toledo.
Abraço.
Luiz.
A rotina de cálculo entre datas citada acima, foi retirada aqui mesmo do forum.
https://pctoledo.org/forum/viewto ... 979#p50979
post do nosso amigo Toledo.
Abraço.
Luiz.
Editado pela última vez por Pablo César em 10 Abr 2013 08:16, em um total de 1 vez.
Razão: URL editada. Uso de URL tag.
Razão: URL editada. Uso de URL tag.
HMG 3.4.4 - SQL SERVER - ORACLE
-
luiz antonio da silva
- 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
Olá Pssoal !
Analisando o código passado no post acima percebi um erro danado de grande na rotina de acumulo...rsrs
segue correção do mesmo
Abraço.
Analisando o código passado no post acima percebi um erro danado de grande na rotina de acumulo...rsrs
segue correção do mesmo
Código: Selecionar todos
func acumular()
_dia:=_mes:=_ano:=0
for x=1 to form_1.grid_1.itemcount
_dia:=_dia+form_1.grid_1.cell(x,5)
_mes:=_mes+form_1.grid_1.cell(x,4)
_ano:=_ano+form_1.grid_1.cell(x,3)
while .t.
if _dia>=30
_dia:=_dia-30
_mes:=_mes+1
else
exit
endif
enddo
while .t.
if _mes>=12
_mes:=_mes-12
_ano:=_ano+1
else
exit
endif
enddo
next x
if _dia>1; f_dia:="dias"; else; f_dia:="dia"; endif
if _mes>1; f_mes:="meses"; else; f_mes:="mes"; endif
if _ano>1; f_ano:="anos"; else; f_ano:="ano"; endif
form_1.acumulado.value:=alltrim(str(int(_ano)))+" "+f_ano+", "+;
alltrim(str(int(_mes)))+" "+f_mes+", e "+;
alltrim(str(int(_dia)))+" "+f_dia
form_1.acumulado.refresh
form_1.grid_1.value:=form_1.grid_1.itemcount
retu
HMG 3.4.4 - SQL SERVER - ORACLE
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Função de Alteração não funciona
Não é fácil entender o código de outros... principalmente quando a indentação não está no padrão. Eu levo mais tempo indentando do que entendo o próprio código rs
Graças aos códigos do Paulo e do Luiz, eis a minha contribuição:Ainda tinha um erro ao zerar o textbox. Sugiro o uso de DatePicker em lugar de TextBoxes, fica mais prático e tem melhor estética. Adicionei o botão de Adicionar e modifiquei o botão alterar para que exclua e o dobleclick do grid servirá para alterar. Acho que ficou mais intuitivo, espero que gostem !
Graças aos códigos do Paulo e do Luiz, eis a minha contribuição:
Código: Selecionar todos
#include "hmg.ch"
Function Main()
// Public alterar:=0
set date brit
set century on
// set epoch to 1960
DEFINE WINDOW form_1 AT 206 , 290 WIDTH 375 HEIGHT 460 main
DEFINE FRAME Frame_1
ROW 10
COL 10
WIDTH 161
HEIGHT 50
CAPTION "Data Inicial (dd/mm/aaaa)"
OPAQUE .T.
END FRAME
/*
DEFINE TEXTBOX data_ini
ROW 30
COL 30
WIDTH 120
HEIGHT 24
DATE .T.
on enter form_1.data_fim.setfocus
END TEXTBOX
*/
DEFINE DATEPICKER data_ini
ROW 30
COL 30
WIDTH 110
HEIGHT 24
VALUE CTOD(" / / ")
FONTNAME "Arial"
FONTSIZE 10
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .T.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER form_1.data_fim.setfocus
HELPID Nil
TABSTOP .T.
VISIBLE .T.
SHOWNONE .F.
UPDOWN .F.
RIGHTALIGN .T.
END DATEPICKER
DEFINE FRAME Frame_2
ROW 10
COL 190
WIDTH 161
HEIGHT 50
CAPTION "Data Final (dd/mm/aaaa)"
OPAQUE .T.
END FRAME
/*
DEFINE TEXTBOX data_fim
ROW 30
COL 210
WIDTH 120
HEIGHT 24
DATE .T.
on enter calcula(form_1.data_ini.value,form_1.data_fim.value)
END TEXTBOX
*/
DEFINE DATEPICKER data_fim
ROW 30
COL 210
WIDTH 110
HEIGHT 24
VALUE CTOD(" / / ")
FONTNAME "Arial"
FONTSIZE 10
TOOLTIP ""
ONCHANGE Nil
ONGOTFOCUS Nil
ONLOSTFOCUS Nil
FONTBOLD .T.
FONTITALIC .F.
FONTUNDERLINE .F.
FONTSTRIKEOUT .F.
ONENTER Nil
HELPID Nil
TABSTOP .T.
VISIBLE .T.
SHOWNONE .F.
UPDOWN .F.
RIGHTALIGN .T.
END DATEPICKER
DEFINE FRAME Frame_3
ROW 70
COL 10
WIDTH 341
HEIGHT 48
CAPTION "Tempo Acumulado"
OPAQUE .T.
END FRAME
DEFINE LABEL acumulado
ROW 90
COL 20
WIDTH 320
HEIGHT 22
VALUE ""
FONTBOLD .T.
CENTERALIGN .T.
END LABEL
DEFINE GRID Grid_1
ROW 130
COL 10
WIDTH 340
HEIGHT 223
ITEMS {}
WIDTHS {95,95,50,50,50}
HEADERS {'Dt ini','Dt final','Ano','Mes','Dia'}
ALLOWEDIT .T.
COLUMNCONTROLS { {'TEXTBOX','DATE'} , {'TEXTBOX','DATE'} , {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} , {'TEXTBOX','NUMERIC','999'} }
JUSTIFY {BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER}
COLUMNWHEN { { || .T. },{ || .T. },{ || .F. },{ || .F. },{ || .F. } }
COLUMNVALID { { || Calcula(This.CellValue,form_1.grid_1.cell(form_1.grid_1.value,2),.f.) } , ;
{ || Calcula(form_1.grid_1.cell(form_1.grid_1.value,1),This.CellValue,.f.) },;
{ || Nil },;
{ || Nil },;
{ || Nil } }
END GRID
DEFINE BUTTON bt_inclui
ROW 360
COL 10
WIDTH 100
HEIGHT 28
CAPTION "&Incluir"
action calcula(form_1.data_ini.value,form_1.data_fim.value,.t.)
END BUTTON
DEFINE BUTTON bt_exclui
ROW 360
COL 130
WIDTH 100
HEIGHT 28
CAPTION "&Excluir"
action (FORM_1.GRID_1.DELETEITEM(FORM_1.GRID_1.VALUE),ACUMULAR())
END BUTTON
DEFINE BUTTON bt_sair
ROW 360
COL 250
WIDTH 100
HEIGHT 28
CAPTION "&Sair"
action form_1.release
END BUTTON
END WINDOW
form_1.data_ini.setfocus
activate window form_1
Return Nil
Function calcula(dDataInicial,dDataFinal,lAdd)
v_dia:=v_mes:=v_ano:=0
v_anof=YEAR(dDataFinal)
v_mesf=MONTH(dDataFinal)
v_diaf=DAY(dDataFinal)
v_anoi=YEAR(dDataInicial)
v_mesi=MONTH(dDataInicial)
v_diai=DAY(dDataInicial)
IF v_diaf < v_diai
v_diaf+=30
v_mesf-=1
ENDIF
v_dia=v_diaf - v_diai
IF v_mesf < v_mesi
v_mesf+=12
v_anof-=1
ENDIF
v_mes=v_mesf - v_mesi
v_ano=v_anof - v_anoi
v_ret=''
IF v_ano>0
v_ret=STRZERO(v_ano,2)+IF(v_ano=1,' ano',' anos')+IF(v_mes>0,IF(v_dia>0,',',' e '),IF(v_dia>0,' e ',''))
ENDIF
IF v_mes>0
v_ret+=STRZERO(v_mes,2)+IF(v_mes=1,' mes ',' meses ')+IF(v_dia>0,'e ','')
ENDIF
IF v_dia>0
v_ret+=STRZERO(v_dia,2)+IF(v_dia=1,' dia',' dias')
ENDIF
if lAdd
add item { form_1.data_ini.value, form_1.data_fim.value,v_ano,v_mes,v_dia} to grid_1 of form_1
Else
form_1.grid_1.cell(form_1.grid_1.value,1):=form_1.data_ini.value
form_1.grid_1.cell(form_1.grid_1.value,2):=form_1.data_fim.value
form_1.grid_1.cell(form_1.grid_1.value,3):=v_ano
form_1.grid_1.cell(form_1.grid_1.value,4):=v_mes
form_1.grid_1.cell(form_1.grid_1.value,5):=v_dia
endif
acumular()
//alterar:=0
form_1.data_ini.value:=CtoD("")
form_1.data_fim.value:=CtoD("")
form_1.data_ini.setfocus
// Return (v_ret)
Return .T.
Function alterar_dados()
// alterar:=1
form_1.data_ini.value:=form_1.grid_1.cell(form_1.grid_1.value,1)
form_1.data_fim.value:=form_1.grid_1.cell(form_1.grid_1.value,2)
form_1.data_ini.setfocus
Return Nil
Function acumular()
_dia:=_mes:=_ano:=0
for x=1 to form_1.grid_1.itemcount
_dia:=_dia+form_1.grid_1.cell(x,5)
_mes:=_mes+form_1.grid_1.cell(x,4)
_ano:=_ano+form_1.grid_1.cell(x,3)
while .t.
if _dia>=30
_dia:=_dia-30
_mes:=_mes+1
else
exit
endif
enddo
while .t.
if _mes>=12
_mes:=_mes-12
_ano:=_ano+1
else
exit
endif
enddo
next x
if _dia>1; f_dia:="dias"; else; f_dia:="dia"; endif
if _mes>1; f_mes:="meses"; else; f_mes:="mes"; endif
if _ano>1; f_ano:="anos"; else; f_ano:="ano"; endif
form_1.acumulado.value:=alltrim(str(int(_ano)))+" "+f_ano+", "+;
alltrim(str(int(_mes)))+" "+f_mes+", e "+;
alltrim(str(int(_dia)))+" "+f_dia
form_1.acumulado.refresh
form_1.grid_1.value:=form_1.grid_1.itemcount
Return NilUm 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.
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.
Função de Alteração não funciona
Bom dia!
Obrigado a todos que me ajudaram a resolver o meu problema, em especial ao Luiz e ao Pablo, muito obrigado!
[]'s
Paulo - Jacareí/SP
Obrigado a todos que me ajudaram a resolver o meu problema, em especial ao Luiz e ao Pablo, muito obrigado!
[]'s
Paulo - Jacareí/SP
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Alteração dados no Grid
Ok, Paulo fico contente que tenha servido o seu propósito. Custou mas saiu... bastou você postar o seu código. Viu como é ? Dessa forma é melhor e mais objetivo ajudar alguém...
Os tópicos foram juntados, mas por favor Paulo, não abra novos tópicos se o assunto for o mesmo.Jairo Maia escreveu: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?
Paulo_CPV escreveu: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.
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.
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.
-
ROBERTO SÁVIO
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 29 Mai 2014 10:56
- Localização: CORONEL FABRICIANO/MG
Rotinas de inclusão/alteração/deleção no GRID
Senhores
Estou aprendendo agora e só tenho dúvidas, não era para ser diferente.
Não vi nenhum exemplo de rotinas de alteração e exclusão de informações do grid que alteram o banco de dados.
Que horas isto acontece? No meu entender no momento que altero o grid tenho que replicar isto no banco, senão...
Abraços
Roberto Sávio
Estou aprendendo agora e só tenho dúvidas, não era para ser diferente.
Não vi nenhum exemplo de rotinas de alteração e exclusão de informações do grid que alteram o banco de dados.
Que horas isto acontece? No meu entender no momento que altero o grid tenho que replicar isto no banco, senão...
Abraços
Roberto Sávio
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Rotinas de inclusão/alteração/deleção no GRID
Oi ROberto. Tudo depende do tipo do Grid que você irá escolher. Se você escolher o grid com opção a interagir diretamente no seu dbf, então não precisaria ter rotina para dar manutenção. Mas se você carregar os dados em forma de vetores, certamente você terá que repassar os dados obtidos para o seu bd. Lembrando que alteração de dados no Grid, funciona com double click ou enter. Existe uma opção pre-modelada para exibir os dados e alterar. Veja os exemplos de: C:\hmg.3.3.0\samples\Miscellaneous\EDIT\EDIT_1 e ...\EDIT_2
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.
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.
-
ROBERTO SÁVIO
- Usuário Nível 1

- Mensagens: 29
- Registrado em: 29 Mai 2014 10:56
- Localização: CORONEL FABRICIANO/MG
Rotinas de inclusão/alteração/deleção no GRID
Paulo César
Vamos ver se estou captando vossas mensagens corretamente.
Já vi em outras postagens, neste mesmo forum, alguém dizendo que o velho e bom objeto TBROWSEDB() do clipper/xharbour estaria sendo substituido pelo GRID, por diversos motivos.
No TBROWSEDB() eu consigo fazer tudo que preciso. Mostrar os registros do banco, navegar, pesquisar, alternar índices, editar no proprio browse ou não, incluir, excluir, abrir vários objetos relacionando as informações (mestreXdetalhe), etc, etc, etc. Todos os meus sistemas são baseados em transações deste tipo. Posso dizer que funcionam muito bem e com muito boa performance.
Sei que com a HMG estamos falando de outro tipo de programação, como já me disseram aqui no forum, mas porque eu desenvolveria uma transação utilizando o GRID?
Se não puder repercutir todas as modificações ocorridas no GRID para o banco de dados, no momento em que foi modificado, fica difícil achar uma aplicação para isto.
No exemplo em EDIT1, EDIT2 e no EDIT EXTENDED achei algo parecido com o TBROWSEDB(). No entando no EDIT1 há um PRG de 49 linhas que faz milagres.
Nos outros exemplos também. No PRG não mostra como aparece aquela tela muito bonita por sinal.
Como pode ser?
P.S.: Encontrei em C:\hmg.3.3.0\SAMPLES\Applications\AGENDA um bom exemplo da utilização do GRID com atualização simultânea do banco de dados. Com alguns incrementos acho que podemos ter uma boa aplicação para o objeto.
Abraços
Roberto Sávio
Vamos ver se estou captando vossas mensagens corretamente.
Já vi em outras postagens, neste mesmo forum, alguém dizendo que o velho e bom objeto TBROWSEDB() do clipper/xharbour estaria sendo substituido pelo GRID, por diversos motivos.
No TBROWSEDB() eu consigo fazer tudo que preciso. Mostrar os registros do banco, navegar, pesquisar, alternar índices, editar no proprio browse ou não, incluir, excluir, abrir vários objetos relacionando as informações (mestreXdetalhe), etc, etc, etc. Todos os meus sistemas são baseados em transações deste tipo. Posso dizer que funcionam muito bem e com muito boa performance.
Sei que com a HMG estamos falando de outro tipo de programação, como já me disseram aqui no forum, mas porque eu desenvolveria uma transação utilizando o GRID?
Se não puder repercutir todas as modificações ocorridas no GRID para o banco de dados, no momento em que foi modificado, fica difícil achar uma aplicação para isto.
No exemplo em EDIT1, EDIT2 e no EDIT EXTENDED achei algo parecido com o TBROWSEDB(). No entando no EDIT1 há um PRG de 49 linhas que faz milagres.
Nos outros exemplos também. No PRG não mostra como aparece aquela tela muito bonita por sinal.
Como pode ser?
P.S.: Encontrei em C:\hmg.3.3.0\SAMPLES\Applications\AGENDA um bom exemplo da utilização do GRID com atualização simultânea do banco de dados. Com alguns incrementos acho que podemos ter uma boa aplicação para o objeto.
Abraços
Roberto Sávio