ARRAY para append e EDITar tabelas DBF

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

syslink
Usuário Nível 3
Usuário Nível 3
Mensagens: 132
Registrado em: 20 Fev 2018 13:13
Localização: joinvile/sc

ARRAY para append e EDITar tabelas DBF

Mensagem por syslink »

pessoal, tenho um arquivo DBF com 4 campos: COD, DESCRICAO, SIMNAO, VALOR, com 2 ou 3 registros.

Quero copiar todo o conteúdo de um array pra gravar no DBF. Mas, "arrays" sempre me deixam de cabeça quente.
Penso no seguinte código:

Código: Selecionar todos

      sele ARQUIVO
      go top
      for I = 1 to len aRows[]
            mCOD[I]             := aRows{I,1]
            mDESCRICAO[I]   := aRows{I,1,1]
            mSIMNAO[I]        := aRows{I,1,1,1]
            mVALOR[I]          := aRows{I,1,1,1,1]
      next I
	
    do while .t.
			if rlock()
				replace  COD         with mCOD[I]	,;
                     DESCRICAO   with mDESCRICAO[I]	   ,;
                     SIMNAO      mSIMNAO[I]	   ,;
                     VALOR       with mVALOR[I]
				unlock
				commit
				exit
			endif
    enddo
return
Mas, não estou conseguindo entender, pois, como disse, MATRIZes sempre me mordem, e, não sei manipular. Sou humilde em vir aqui pra tentar aprender.

obrigado!
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

ARRAY para append e EDITar tabelas DBF

Mensagem por JoséQuintas »

Igual coloquei em outro post.... a gente é que complica.... rs

imagine o array como uma fila...
O array multidimensional, fila de filas....
qual é o primeiro da primeira fila, o 1 de 1, o [1,1]

fila de registros, com fila de campos..

fila 1, campo 1 [1,1]
fila 1, campo 2 [1,2]

Código: Selecionar todos

FOR nCont = 1 TO Len( aList )
   ? aList[ nCont, 1 ]
   ? aList[ nCont, 2 ]
   ? aList[ nCont, 3 ]
NEXT
Se preferir...

Código: Selecionar todos

#define CODIGO 1
#define DESCRICAO 2
#define SIMNAO 3
#define VALOR 4
FOR nCont = 1 TO Len( aList )
   ? aList[ nCont, CODIGO ]
   ? aList[ nCont, DESCRICAO ]
   ? aList[ nCont, SIMNAO ]
   ? aList[ nCont, VALOR ]
NEXT
se preferir trabalhar com um elemento de cada vez, pode facilitar

Código: Selecionar todos

#define CODIGO 1
#define DESCRICAO 2
#define SIMNAO 3
#define VALOR 4
FOR EACH aRegistro IN aList
   ? aRegistro[ CODIGO ]
   ? aRegistro[ DESCRICAO ]
   ? aRegistro[ SIMNAO ]
   ? aRegistro[ VALOR ]
NEXT
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder