Clipper On Line • Ver Tópico - problema com transferencia de registros dbf

problema com transferencia de registros dbf

Discussão sobre a linguagem CA-Clipper.

Moderador: Moderadores

 

Re: problema com transferencia de registros dbf

Mensagempor Eolo » 06 Jun 2009 15:43

Pode, sim. Mas coloque um limite de tentativas e um temporizador entre tentativas, e ainda controle se deu certo na saída do loop.

NETERR() retorna:
.T. = DEU erro
.F. = NÃO deu erro

tenta=10 // coloque o valor que achar melhor
espera=10 // coloque o valor que achar melhor
abriu=.F.
do while tenta>0 // tenta 10x e, se não der, aborta
  use arquivo new exclusive
  if neterr() = .F. // aqui é .F. e não .T.
    abriu=.T.
    exit
  endif
  tenta-- // decrementa a variável TENTA
  inkey(espera) // espera 10 segundos para tentar novamente
endo
if abriu=.F.
  * interrompe a rotina
endif
* parte pra indexação...
Avatar de usuário

Eolo
Colaborador

Colaborador
 
Mensagens: 1134
Data de registro: 08 Dez 2005 17:24
Cidade/Estado: São Paulo - SP
Curtiu: 0 vez
Mens.Curtidas: 41 vezes

Re: problema com transferencia de registros dbf

Mensagempor alxsts » 06 Jun 2009 15:46

Olá Glauco!

junto com os discos originais do Clipper 5, vieram vários exemplos de rotinas, incluindo uma para abertura de arquivos em rede, chamada NetUse(). Veja abaixo a versão que modifiquei para meu uso:

//------------------------------------------------------------------------------

*  NetUse( <arquivo>, [modo abertura], [tempo segundos], [Alias] ) --> lSuccess

#define     DB_SHARED     .F.
#define     DB_EXLUSIVE   .T.

FUNCTION NetUse( cDatabase, lOpenMode, nSeconds, cAlias )

   LOCAL lForever , nPos

   // verifica parametros
   If Empty( cDatabase )
      Return .F.
   Endif

   lOpenMode := If( Empty( lOpenMode ), DB_SHARED, lOpenMode )
   nSeconds  := If( nSeconds == Nil, 0, nSeconds )
   cAlias    := If( Empty( cAlias ), FileBase( cDataBase ), cAlias )
   //---

   lForever = (nSeconds = 0)

   DO WHILE .T.         
     IF lOpenMode
         USE (cDatabase) EXCLUSIVE NEW Alias (cAlias)
     ELSE
         USE (cDatabase) SHARED NEW Alias (cAlias)
     ENDIF
     IF .NOT. NETERR()          // USE succeeds
        RETURN (.T.)
     ENDIF
     INKEY(1)                 // Wait 1 second
     nSeconds = nSeconds - 1
     if nSeconds < 0

       If Alert( "NÆo foi poss¡vel abrir o arquivo " + cDataBase + ".DBF.;" + ;
                     " (Arquivo em manuten?Æo por outro usu rio).;; " + ;
                     "Deseja tentar novamente?", {" Sim "," NÆo " } ) == 2
          Exit
       Endif

       nSeconds := 5

     Endif
   ENDDO

   RETURN (.F.)                // USE fails
//------------------------------------------------------------------------------
*
*  FileBase( <cFile> ) --> cFileBase
*
*  Extract the eight letter base name from a filename
*
*
FUNCTION FileBase( cFile )

   LOCAL nPos           // Marks the position of the last "\", if any
   LOCAL cFileBase      // Return value containing the filename

   DO CASE
   CASE ( nPos := RAT( "\", cFile )) != 0

      // Strip out full path name leaving only the filename (with
      // extension)
      cFileBase := SUBSTR( cFile, nPos + 1 )

   CASE ( nPos := AT( ":", cFile )) != 0

      // Strip drive letter if cFile contains only drive letter
      // no subdirectories
      cFileBase := SUBSTR( cFile, nPos + 1 )

   OTHERWISE

      // Assume it's already taken care of
      cFileBase := cFile

   ENDCASE

   // Strip out the file extension, if any
   IF ( nPos := AT( ".", cFileBase )) != 0
      cFileBase := SUBSTR( cFileBase, 1, nPos - 1 )
   ENDIF

   RETURN ( cFileBase )
//------------------------------------------------------------------------------


* NetUse( <arquivo>, [modo abertura], [tempo segundos], [Alias] ) --> lSuccess
Exemplo de uso:
Suponha que voce queira abrir um arquivo chamado Tabela, em modo compartilhado, tentando por 5 segundos e com o alias Cliente:

IF ! NetUse( "Tabela", .F., 5, "Cliente" )
   RETURN
ENDIF   


Qualquer dúvida é só postar.

[]´s
AlxSts
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

problema com transferencia de registros dbf

Mensagempor Tomaz Edson Linhares » 17 Ago 2018 08:41

Olá amigos, aproveitando o gancho sobre banco de dados, teria como um arquivo de indice (ntx) ser avaliado se está corrompido antes de ser aberto, sem ter a necessidade de ter que reindexá-lo .

fiz assim:

USE MEU_DBF ALIAS MEU_DBF NEW SHARED /// abre o banco de dados
if ! file ("meu_ntx.ntx") /// verifica se o arquivo de indexes existe
index on .... meu_ntx /// senão ele cria
endif

set index to meu_ntx /// abre o arquivo de index AQUI É QUE DÁ ERRO SE ELE ESTIVER CORROMPIDO

/// Então se esse arquivo existir e ele estiver corrompido, apresenta erro na tela.
/// Não quero reindexar para o sistema não ficar lento.
/// preciso avaliar esse arquivo de indice antes de abrir para evitar erro.
/// se alguem poder me dar uma luz.
Tomaz Edson Linhares
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 32
Data de registro: 19 Abr 2016 17:03
Cidade/Estado: São Gonçalo/RJ
Curtiu: 1 vez
Mens.Curtidas: 0 vez

problema com transferencia de registros dbf

Mensagempor syslink » 21 Ago 2018 08:51

bom dia Tomaz!
nunca ouvi falar nesse tipo de verificação antes de abrir um .NTX ou .CDX. Mas, se houver uma solução, também gostaria de fazer pra que a gente não fique meio que dependente da situação.
syslink
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 132
Data de registro: 20 Fev 2018 13:13
Cidade/Estado: joinvile/sc
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

problema com transferencia de registros dbf

Mensagempor Toledo » 21 Ago 2018 14:42

Amigos, dê uma olhada neste tópico, pode ajudar:

http://www.pctoledo.com.br/forum/viewtopic.php?f=1&t=18836

Uma outra saída seria alterar o arquivo ERRORSYS do Clipper, e verificar se o erro que está ocorrendo é referente a um arquivo de índice corrompido, ai se for, então deletar o arquivo corrompido e criar novamente.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 3038
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 263 vezes
Mens.Curtidas: 258 vezes

problema com transferencia de registros dbf

Mensagempor paolalopez118 » 30 Jan 2020 13:16

Atualmente, estou começando no mundo da programação digital para poder transferir o bdf que eles me enviaram para usar o banco de dados clássico

Assinatura:
Cinecalidade
http://www.cinecalidad.plus
paolalopez118
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 1
Data de registro: 30 Jan 2020 12:40
Cidade/Estado: paris
Curtiu: 0 vez
Mens.Curtidas: 0 vez

problema com transferencia de registros dbf

Mensagempor susviela@bol.com.br » 31 Jan 2020 11:05

Depois do DBF o primeiro passo em direção aos SGBD é passar por SQLite.

Tem umas dicas boas para quem esta começando no meu Blog, dá uma olhada.

https://programandoxbase.wordpress.com/2018/09/05/harbour-sqlite-classe-i/

#Susviela
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Anterior



Retornar para CA-Clipper

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro