Letodb e Append from

Fórum sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

amigos fiz uma função nova e não estou tendo exito com o leto no comando append from
este comando não tem no letodb? e se tiver como é o comando e uso do mesmo?

agradeço desde já
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
É um comando que uso.
Qual versão do seu LetoDb ? Cadê o erro ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

Itamar M. Lins Jr. escreveu:Olá!
É um comando que uso.
Qual versão do seu LetoDb ? Cadê o erro ?

Saudações,
Itamar M. Lins Jr.
Nobre estou usando o Leto ultima versão do Elch

Objetivo da Função abaixo é:

É criado um arquivo temporário de nome arq_tmp que receberá a estrutura com novos campos adicionados por outra função no vetor _mat_arq, e ao abrir o arquivo temporário novo eu uso o appe from pra adicionar os registros que existem no arquivo antigo, então eu apago o velho e renomeio o novo já com os registros e campos novos.

Código: Selecionar todos


Function Main()
public _mat_arq := {}
_nom_arq := "men001.dbf"
_mat_arq := {}
aadd(_mat_arq,{"cod_men","c",04,00})
aadd(_mat_arq,{"dia_ven","c",02,00})
aadd(_mat_arq,{"msg_mes","c",01,00})
Verdbf(_nom_arq)


Return Nil




----------------------------------------------------------------------
FUNC VERDBF(_nom_arq)
----------------------------------------------------------------------
     if ! leto_file(_nom_arq)
*		DbCreate(_nomarq,_mat_arq) // assim não funciona no leto
		DbCreate(_nom_arq,_mat_arq,,.t.,'alias')  // assim funciona
        retu .t.
     else
        if _atual # '1'
           leto_ferase('arq_tmp')                      // Perfeito
*		   //DbCreate('arq_tmp',_mat_arq,,.t.,'alias')   // funcionou assim e em baixo tb
		   DbCreate(PathLeto + 'arq_tmp',_mat_arq,,.t.,'alias')   // Perfeito
		   use (PathLeto + 'arq_tmp')
*		   appe from &_nom_arq  // era assim mas não funciona no leto 
           arquivo := PathLeto
		   appe from (_nom_arq)
		   leto_ferase(_nom_arq)
           DbCloseArea()
		   leto_frename('arq_tmp.dbf',_nom_arq)
        endif
        retu .f.
     endif


A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
Respondi errado "acredito" e apaguei.

Veja ai:

Código: Selecionar todos

***************************************
FUNCTION MyAppendFrom(cAO,cAD,cTempDBF) //cAO = Alias Origem, cAD Alias Destino
***************************************
*
*
LOCAL nCount, nCampos := (cAD)->(FCount()), x:=1, nRec:=1, nTotRec := (cAO)->(LastRec())
LOCAL cType := "" , xField
oBar := HProgressBar():NewBox("Importando " + cTempDBF + ", " + (cAO)->(Dbf()) + ": "+lTrim(str(1,9))+" De "+lTrim(Str(nTotRec,9))+" Registro(s)" ,,0,400,, nTotRec, nTotRec,,.f. )

DO WHILE (cAO)->(!Eof())
   (cAD)->(dbAppend())

   FOR nCount := 1 TO nCampos
      cField := (cAD)->(Field(nCount))      
      IF ( (cAO)->(fieldpos( cField )) != 0 )
      
         cTypeDest := ValType( (cAD)->&cField )
         cTypeOrig := ValType( (cAO)->&cField )
         
         IF cTypeDest <> cTypeOrig
         
            IF cTypeDest == "C" .AND. cTypeOrig == "N"
               xField := hb_ntos( (cAO)->&cField  )
            ELSE
               xField := (cAO)->&cField 
            ENDIF 
            
         ELSE
             //hwg_msginfo(cField + " --- " +cTypeOrig)
             xField := (cAO)->&cField 
             //hwg_msginfo(cField + " --- " +ValType(xField))
         ENDIF
         
         (cAD)->&cField := xField
                  
      ENDIF
   NEXT
   (cAO)->(dbSkip())
   iif(x++==100,(nRec+=x,x:=1,ShowGrafico(oBar,nRec,nTotRec)),.t.)
EndDO

oBar : Close()   
FechaDb(cAD)
FechaDb(cAO)

/*
   oBar := HProgressBar():NewBox( cDirImport + " - Importando... "+lTrim(str(1,9))+" De "+lTrim(Str(nTotRec,9))+" Registro(s)" ,,0,400,, nTotRec, nTotRec,,.f. )
   x    := 0
   nRec := 0
   //dbSelectArea('dbc')
   //hwg_msginfo(Alias()+"---"+string+'---'+cTempDBF)
   Append from &cDirImport via iif(lRddLeto,"LETO","DBFCDX") For iif(x++==100,(nRec+=x,x:=0,ShowGrafico(oBar,nRec,nTotRec)),.t.)

   oBar : Close()   
   dbc->(DbCloseArea())
*/
RETURN .T.
Eu fiz o meu, pq o "append from" não verifica a estrutura "N" para "C"
Mas a forma antiga está ai usando o flag "VIA"

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

vou testar aqui amigo , mais a minha função funciona legal para o que foi determinado, no harbour direto
agora no leto deu pau, como seria essa linha de comando para usar o proprio append from no leto? vc
poderia me explicar e ou corrigir a linha que devo ter cometido Mer....
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
Usava com sucesso... Muitos anos usando. Mudei pq precisei mudar um campo NUMERICO para CARACTERE, só isso. "append from" não faz isso.
agora no leto deu pau,

Como está ai. APPEND FROM ... VIA "LETO" ou "DBFCDX" não dá erro.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
Na verdade agora estou na dúvida dessa MACRO... Tem tempo que fiz isso.
Caso usando a cláusula VIA dê erro, não pode usar MACRO substituição.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
Olhando o Changelog.

Código: Selecionar todos

2010-10-09 13:00 UTC+0300 Pavel Tsarenko (tpe2/at/mail.ru)
  * source/server/letofunc.c
  * source/client/leto1.c
    + leto_SetAreaEnv() and leto_ClearAreaEnv() functions for navigation
      operations on server
    + added support for letoTrans(). The commands COPY TO / APPEND FROM
      (functions __dbCopy() / __dbApp()) can evaluated on the server now
  * tests/test_tr.prg
    + added sample for functions Leto_dbTrans(), Leto_dbCopy(), Leto_dbApp().
      The difference of these functions from standard __dbTrans(), __dbCopy(),
       __dbApp() that instead of codeblocks for "for" and "while" their
       string representation is transferred.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

sem querer abusar da sua boa vontade e ja abusando ... eu li o changelog , mais na pratica a minha função teima em não querer funcionar corretamente ,
teria com vc analisar onde esta esse maledeto erro na minha função??
agradeço desde ja
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Letodb e Append from

Mensagem por JoséQuintas »

Código: Selecionar todos

IF cTypeDest <> cTypeOrig
   IF cTypeDest == "C" .AND. cTypeOrig == "N"
      xField := hb_ntos( ValType( (cAO)->&cField ) )
   ELSE
      xField := (cAO)->&cField
   ENDIF
Sei lá.... me parece errado... deveria ser hb_Ntos() do conteúdo, e não de ValType() que retorna uma letra com o tipo.
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/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Letodb e Append from

Mensagem por Itamar M. Lins Jr. »

Olá!
me parece errado...
Tá errado mesmo.
Só usei 1 vez isso, depois devo ter alterado e ficou sem usar e com esse bug. tem que tirar valtype... e outro if sem necessidade.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

É fui usar sua função n deu certo e ainda batendo cabeça com a minha
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

JoséQuintas escreveu:

Código: Selecionar todos

IF cTypeDest <> cTypeOrig
   IF cTypeDest == "C" .AND. cTypeOrig == "N"
      xField := hb_ntos( ValType( (cAO)->&cField ) )
   ELSE
      xField := (cAO)->&cField
   ENDIF
Sei lá.... me parece errado... deveria ser hb_Ntos() do conteúdo, e não de ValType() que retorna uma letra com o tipo.

rapaz né que essa eu achei engraçado rsrs, a função que eu uso e estou batendo cabeça , n teve resposta , a do amigo que eu não uso teve correção kkkk

vou pedir pra o itamar postar a minha , quem sabe se não dou sorte assim rsrs
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Letodb e Append from

Mensagem por JoséQuintas »

É que erro referente Harbour dá pra identificar, mas de lib que não uso, aí complica.

Mas pensando em RDDs.... talvez o APPEND FROM não esteja identificando direito de onde pra onde.
Lembrando que, como o Itamar já comentou, APPEND FROM dá erro se foi alterado o tipo do campo de numérico pra caractere e vice-versa, tratar campo a campo pode ser mais interessante.

Considerando que você consegue ler DBF e gravar DBF, substituir o APPEND FROM por uma rotina "manual" vai acabar eliminando o possível problema no APPEND FROM.
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/
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Letodb e Append from

Mensagem por Nascimento »

entendo mestre quintas só foi para descontrair mesmo rsrs
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder