Página 1 de 1
Alterar dados no DBF inclusos através de uma MATRIZ
Enviado: 09 Ago 2004 08:26
por janio
Olá a todos,
Pessoal, não estou ainda familiarizado com o uso de MATRIZES.
Peguei um exemplo aqui no Fórum e consegui adaptar ao meu sistema e até o momento tem funcionado blz no lançamento de PARCELAS no contas a pagar. Para inclusão e gravação no DBF, blz. Mas se eu quiser alterar depois de lançados, por exemplo, estes dados? Como fazer?
Espero a ajuda de vcs.
Janio
Segue parte do meu PRG.
vQTDPAR := 0
vDATVEM := CTOD("")
PARCELAS := {}
@ li+11,ci+60 get vQTDPAR Pict "99" valid vQTDPAR()
READ
lin := 16
PARCELAS := {}
For i=1 to vQTDPAR
AADD(parcelas, {vVAL, i, vDATVEM})
Next
For i=1 to vQTDPAR
@ lin,41 say parcelas[i,2] Pict "99"
@ lin,45 get parcelas[i,3]
@ lin,56 get parcelas[i,1] pict "@E 999,999.99"
lin := lin + 1
Next
read
SELECT OP
SET ORDER TO 2
go bottom
vNUMOPA = NUMOPA + 1
vFLGPAG="N"
nQTD := vQTDPAR
for I = 1 to nQTD
APPEND BLANK
replace QTDPAR with vQTDPAR,;
CODEMP with vCODEMP,;
CODCRE with vCODCRE,;
TIPDOC with vTIPDOC,;
NUMDOC with vNUMDOC,;
DATDIG with vDATDIG,;
DATEMI with vDATEMI,;
HISTOR with vHISTOR,;
VALDOC with vVALDOC,;
VALNOT with vVALNOT,;
FLGPAG with vFLGPAG,;
NUMOPA with vNUMOPA,;
VALPAR with parcelas[i,1],;
SEQOPA with parcelas[i,2],;
DATVEN with parcelas[i,3]
Next
COMMIT
endif
Enviado: 10 Ago 2004 10:04
por Dudu_XBase
Janio crie um tbrowse ou um dbedit mostrando as parcelas desse pagamento, usuário seleciona qual parcela qr alterar no browse, vc criar uma tela com os dados daquela parcela selecionada, usuário altera e grava.
No meu contas a pagar eu utilizo 2 bancos o cabeçalho (dados gerais do pagmento), o detalhe(parcelas como foi pago), e 2 browses....entendeu..fui
Enviado: 10 Ago 2004 11:52
por janio
Blz Dudu.
A sua sugestão é proveitosa e bem poderia ser utilizada no meu caso. Só tem um problema: Até agora agora só utilizei o DBEDIT para exibição de dados. Não sei utilizar o DBEDIT para alterar dados.
Poderia me passar um exemplo bem "light"?
Aguardooooo.
Janio
Enviado: 10 Ago 2004 13:08
por Dudu_XBase
Código: Selecionar todos
#include "inkey.ch"
procedure manutencao ()
local oConsulta, cTela := savescreen (), cCor := setcolor ()
local cCod,cNom,cCodigo,cDescricao
local nOrdem, getlist := {}
dbselectarea("bancos")
dbsetorder (1)
set dele on
setcolor ("w+/b,n/w,n,n,w/b")
// bordas
@ 04,01 to 06,77
@ 05, 22 say " Cadastro de Bancos"
@ 07,01 to 22,77
/* cria tbrowse */
oConsulta := tbrowsedb (08,02,21,76)
/* define separadores do tbrowse */
oConsulta:colorspec := "w+/b,n/w,n,n,w/b"
oConsulta:colsep := chr (032) + chr (179) + chr (032)
oConsulta:headsep := chr (196) + chr (194) + chr (196)
oConsulta:footsep := chr (196) + chr (193) + chr (196)
/* define colunas do tbrowse */
oCol1 := tbcolumnnew ("Codigo", {|| bancos->CODIGO })
oCol2 := tbcolumnnew ("Descricao", {|| bancos->DESCRICAO })
/* adiciona colunas no tbrowse */
oConsulta:addcolumn(oCol1)
oConsulta:addcolumn(oCol2)
while ( .t. )
setcursor (0)
while ( !oConsulta:stabilize () )
enddo
// para deixar selecionada toda a linha
oConsulta:colorrect({oConsulta:rowpos,1,oConsulta:rowpos,oConsulta:colCount},{2,1})
nTecla := inkey (0)
do case
case ( nTecla == K_ESC )
exit
case ( nTecla == K_DOWN )
oConsulta:down ()
case ( nTecla == K_UP )
oConsulta:up ()
case ( nTecla == K_LEFT )
oConsulta:left ()
case ( nTecla == K_RIGHT )
oConsulta:right ()
case ( nTecla == K_PGUP )
oConsulta:pageup ()
case ( nTecla == K_PGDN )
oConsulta:pagedown ()
case ( nTecla == K_CTRL_PGUP )
oConsulta:gotop ()
case ( nTecla == K_CTRL_PGDN )
oConsulta:gobottom ()
case ( nTecla == K_HOME )
oConsulta:gotop ()
case ( nTecla == K_END )
oConsulta:gobottom ()
// Alteração...
case ( nTecla == K_ENTER )
cTela2 := savescreen ()
setcolor ("w+/bg+,n/w,n,n,w/bg+")
setpos (08,13); dispout ("[ A L T E R A C A O ]","gr+/bg+")
setpos (09,19); dispout (bancos->CODIGO, "w/bg+")
cCODIGO := bancos->CODIGO
setcursor (1)
setcursor (0)
// aki vc colocar suas varives os gets read...replace
setcolor (cCor)
restscreen(,,,,cTela2)
oConsulta:refreshall ()
// pesquisa por codigo
case ( nTecla == K_C .or. nTecla == K_c )
nRecno := recno ()
dbsetorder (1)
while ( .t. )
mud (11,25,15,40)
centraliza (11, "[ C¢digo ]", 25, 40, "w+/b")
setcursor (2)
cCod := 0
@ 13,30 get cCod picture "99999" valid (zeros(@cCod))
read
setcursor (0)
if ( escape () .or. empty (cCod) )
exit
endif
dbseek(ccod,.t.)
if (eof())
rin ()
dbgoto (nRecno)
loop
else
exit
endif
enddo
oConsulta:refreshall ()
// pesquisa por nome
case ( nTecla == K_N .or. nTecla == K_n )
nRecno := recno ()
dbsetorder (2)
while ( .t. )
mud (11,25,15,60)
centraliza (11, "[ Nome ]", 25, 60, "w+/b")
setcursor (2)
cNom := space (len(bancos->DESCRICAO))
@ 13,28 get cNom picture "@!"
read
setcursor (0)
if ( escape () .or. empty (cNom) )
exit
endif
dbseek(cNom,.t.)
if (eof())
rin ()
dbgoto (nRecno)
loop
else
exit
endif
enddo
oConsulta:refreshall ()
endcase
oConsulta:refreshcurrent()
enddo
dbcloseall ()
restscreen (,,,, cTela)
setcolor (cCor)
setcursor (1)
return
Enviado: 10 Ago 2004 13:35
por janio
Valeu, Dudu.
Vou ver se consigo adaptar ao sistema.
Aceito mais sugestões, alguém se habilita?
Um abraço,
Janio