Alterar dados no DBF inclusos através de uma MATRIZ

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Alterar dados no DBF inclusos através de uma MATRIZ

Mensagem 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
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem 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. :wink:

Janio
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Mensagem 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



________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Mensagem por janio »

Valeu, Dudu.

Vou ver se consigo adaptar ao sistema.

Aceito mais sugestões, alguém se habilita?

Um abraço,


Janio
Responder