Página 2 de 2

Letodb e Append from

Enviado: 17 Jan 2023 18:20
por Itamar M. Lins Jr.
Olá!
Para testar tenho que mudar o HD. Ou usar uma VM aqui no Linux. É um notebook Samsung.
Já tenho TUDO pronto no HD com win10, o azar foi que minha placa mãe deu pau. Aqui uma placa mãe de 100 reais custa mais de 600 reais na loja.

Saudações,
Itamar M. Lins Jr.

Letodb e Append from

Enviado: 17 Jan 2023 23:52
por Itamar M. Lins Jr.
Olá!
Testei aqui está funcionando normal com a função que fiz.
Comecei umas 20:00h de hoje agora são 23:55.
Screenshot_20230118_001339.png
Screenshot_20230118_001339.png (6.64 KiB) Exibido 2605 vezes
Vou ver com "append from ..."

Saudações,
Itamar M. Lins Jr.

Letodb e Append from

Enviado: 18 Jan 2023 00:06
por Itamar M. Lins Jr.
Olá!
Com "append from" rodou ok. (USANDO LETODBf)

Saudações,
Itamar M. Lins Jr.

Letodb e Append from

Enviado: 18 Jan 2023 10:25
por carlaoonline
Aqui, o APPEND FROM funciona normal com o LetoDbf (Fork_do_Elch)


Fiz esse código, é só mudar os parâmetro e testar ai.

A principio deve funcionar.

Código: Selecionar todos


// Compilei esse exemplo assim:

// HBMK2.exe prog LETODB.HBC 

/*
--->>> Parte do meu arquivo letodb.ini
Lower_Path = 0
EnableFileFunc = 1
EnableAnyExt = 1
Allow_UDF = 1
Default_Driver = NTX
Share_Tables = 0
No_Save_WA = 1
DataPath = D:\DATA_LETO
*/


#ifdef RDDLETO_CH_   // Se foi compilado com LETODB.HBC
   REQUEST LETO
   #include "rddleto.ch"  // Arquivo header principal para utilização do LetoDbf
   #include "letofile.ch" // Para trabalhar com gerenciamento de arquivos no LetoDbf
#ENDIF

//-----------------------------------------------------------
Function Main()
//-----------------------------------------------------------

SET EXCLU OFF
SET DATE BRIT
SET DELETED ON

PUBLIC NET1, NET2, NET3             // Nome dos arquivos temporarios
PUBLIC Temporario   :="C:\Teste_ape\" // Path dos arquivos temporarios no PC do usuario. Pode usar "mem:"
PUBLIC Resources    :="Resources\"  // Caminho que sera criado dentro do TEMPORARIO no cliente
PUBLIC CONEXAO_LETO :=""            // Conexao Leto, recebera o LETO_GETCURRENTCONNECTION()
PUBLIC cUserLeto    :="usuario"      // Usuario para conexao LetoDBf
PUBLIC cPasswd      :="senha"   // Senha para conexao LetoDBf
PUBLIC PATH_LETO    :="DINA_MK\"    // Path onde esta o banco de dados (Essa pasta deve existir dentro do "DataPath =" que e´ setado la no letodb.ini do servidor)
PUBLIC cAddress     := "//200.99.999.999:2812/" //Servidor LETO via INTERNET 


//-----------------------------------------------------------
// Aqui define arquivos temporarios
// Nesse caso optei em comecar todos por Y_
//-----------------------------------------------------------
cTresUltDigSec=Right( Str( Int( SECOND() ) ),3 )
FOR nQuantTemps = 1 TO 3
    cString = "NET" + AllTrim( Str( nQuantTemps ) )
    &cString = Temporario + "Y_" + Right( NetName(), 2 ) + Chr( 64 + nQuantTemps ) + cTresUltDigSec  
    // NetName sao sempre Term01, term02,term03, logo os temporarios serao -> // Ex.: -> Y_50A879.dbf
NEXT
//-----------------------------------------------------------


//-----------------------------------------------------------
// Conexao Leto ao Banco de dados
//-----------------------------------------------------------
#ifdef RDDLETO_CH_  // // Se foi compilado com LETODB.HBC

    // IF leto_Connect( cAddress ) < 0
   IF leto_Connect( cAddress, cUserLeto, cPasswd ) == -1
      Alert( "Nao foi possivel conectar no servidor - ERRO: " + leto_Connect_Err( .T. ) )
      QUIT
   ELSE
      Alert("Conectado a "+cAddress)
   ENDIF

   CONEXAO_LETO=LETO_GETCURRENTCONNECTION()

   LETO_SETPATH(Left( PATH_LETO , Len(PATH_LETO)-1 ),.T.) // TIRA A "\" do Path_Leto  -> Com argumento .T. os arquivo novos serao criados nessa pasta

#ENDIF
//-----------------------------------------------------------



//-----------------------------------------------------------
// Cria no cliente a pasta de arquivos temporarios caso nao exista
// Obs.: Pasta temporaria no cliente NAO recebera arquivos DBF, pois
// qdo o leto estiver ativo eles serao sempre criados no servidor
// apenas demais saidas de texto, pdf, excel, etc... que serao no cliente
//-----------------------------------------------------------
if !Hb_DirExists(Temporario)  // Esse enxerga pasta oculta...
    hb_dircreate(Temporario)  // Cria pasta p/ arquivos temporarios no cliente
endif
if !Hb_DirExists(Temporario+Resources)  // Esse comando enxerga pasta oculta...
    hb_dircreate(Temporario+Resources)  // Cria a pasta no cliente
endif

#ifdef RDDLETO_CH_   // Se foi compilado com LETODB.HBC
   if !Leto_DirExist(Temporario)  // Esse comando enxerga pasta oculta...
       Leto_DirMake(Temporario)   // Cria na pasta Raiz no servidor Leto
   endif
#Endif
//-----------------------------------------------------------





//--------  INICIO DO PROGRAMA ------------------------------

public _mat_arq := {}
_nom_arq := "men001"    // _nom_arq := "men001.dbf"
_mat_arq := {}
aadd(_mat_arq,{"cod_men","c",04,00})
aadd(_mat_arq,{"dia_ven","d",08,00})
aadd(_mat_arq,{"msg_mes","c",01,00})
// Verdbf(_nom_arq)


DbCreate(_nom_arq,_mat_arq) // Criou normal la no servidor em "Path_Leto"


USE &_nom_arq ALIAS no_cli 

FOR F=1 TO 10
    APPEND BLANK
    REPLACE COD_MEN WITH Alltrim(str(F))
    REPLACE DIA_VEN WITH date()+f
NEXT

ALERT("Total de registros antes dos append = "+alltrim(str(reccount())))


COPY TO TESTE // Copiou para arquivo TESTE.DBF no servidor em "Path_Leto"
APPEND FROM TESTE
ALERT("Total de registros apos primeiro append = "+alltrim(str(reccount())))



COPY TO &NET1 // Copiou para um arquivo tipo Y_023452.DBF na pasta "temporario" do servidor
APPEND FROM &NET1
ALERT("Total de registros apos segundo append = "+alltrim(str(reccount())))

Fim()

Return Nil
//----------  FIM DO PROGRAMA -------------------------------






//-----------------------------------------------------------
Function Fim()

   #ifdef RDDLETO_CH_   // Se foi compilado com LETODB.HBC
      leto_Disconnect()
   #endif
   // EXIT PROGRAM // Releases all windows from memory
   QUIT

Return nil
//-----------------------------------------------------------


Notei que o código postado na sua segunda mensagem da primeira página do post, o nome da variável está errado.
No caso a variável "_nomearq" ela não existe ali na linha do primeiro DbCreate, se usou daquela forma então talvez por isso que não funcionou o APPEND FROM, pois o correto seria "_nom_arq"
----------------------------------------------------------------------
FUNC VERDBF(_nom_arq)
----------------------------------------------------------------------
if ! leto_file(_nom_arq)
* DbCreate(_nomarq,_mat_arq) // assim não funciona no leto <<<--- VARIAVEL NAO EXISTE "_nomarq"
DbCreate(_nom_arq,_mat_arq,,.t.,'alias') // assim funciona
retu .t.

Letodb e Append from

Enviado: 18 Jan 2023 11:00
por Itamar M. Lins Jr.
Olá!
Sei lá.... me parece errado... deveria ser hb_Ntos() do conteúdo, e não de ValType() que retorna uma letra com o tipo.
Foi corrigido no próprio exemplo, anterior, removi (valtytpe())
Testado aqui, funcionando 100%

Saudações,
Itamar M. Lins Jr.

Letodb e Append from

Enviado: 21 Jan 2023 13:36
por Nascimento
Muito Obrigado nobre Itamar, vou revisar aqui e lhe digo algo
deve ser no meu codigo mesmo

então a linha corrigida do seu Myappendfrom() ficou assim?

Código: Selecionar todos

      IF ( (cAO)->(fieldpos( cField )) != 0 )
      
*         cTypeDest := ValType( (cAD)->&cField )
*         cTypeOrig := ValType( (cAO)->&cField )
         cTypeDest :=  cAD->&cField )
         cTypeOrig :=  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

Letodb e Append from

Enviado: 26 Jan 2023 15:19
por Nascimento
amigos agradeço todo empenho e esforço dedicado a meu problema realmente era erro na minha função apaguei tudo e fiz do zero rsrs
debugando linha a linha e deu certo, o que estava errado n sei mais em fim no final deu tudo ok