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.