Letodb e Append from

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

Moderador: Moderadores

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á!
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.
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á!
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 2610 vezes
Vou ver com "append from ..."

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á!
Com "append from" rodou ok. (USANDO LETODBf)

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
carlaoonline
Usuário Nível 3
Usuário Nível 3
Mensagens: 190
Registrado em: 24 Ago 2014 22:38
Localização: Porto Alegre-RS

Letodb e Append from

Mensagem 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.
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á!
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.
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 »

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
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 »

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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder