Letodb e Append from
Moderador: Moderadores
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Letodb e Append from
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.
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.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Letodb e Append from
Olá!
Testei aqui está funcionando normal com a função que fiz.
Comecei umas 20:00h de hoje agora são 23:55. Vou ver com "append from ..."
Saudações,
Itamar M. Lins Jr.
Testei aqui está funcionando normal com a função que fiz.
Comecei umas 20:00h de hoje agora são 23:55. Vou ver com "append from ..."
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Letodb e Append from
Olá!
Com "append from" rodou ok. (USANDO LETODBf)
Saudações,
Itamar M. Lins Jr.
Com "append from" rodou ok. (USANDO LETODBf)
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- carlaoonline
- Usuário Nível 3

- Mensagens: 190
- Registrado em: 24 Ago 2014 22:38
- Localização: Porto Alegre-RS
Letodb e Append from
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.
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"
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.
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Letodb e Append from
Olá!
Testado aqui, funcionando 100%
Saudações,
Itamar M. Lins Jr.
Foi corrigido no próprio exemplo, anterior, removi (valtytpe())Sei lá.... me parece errado... deveria ser hb_Ntos() do conteúdo, e não de ValType() que retorna uma letra com o tipo.
Testado aqui, funcionando 100%
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
Letodb e Append from
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?
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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui
- Nascimento
- Usuário Nível 4

- Mensagens: 763
- Registrado em: 19 Jul 2008 12:11
- Localização: OLINDA-PE
Letodb e Append from
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
debugando linha a linha e deu certo, o que estava errado n sei mais em fim no final deu tudo ok
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina
clipper 5.3 /harbour/minigui