Problemas com o Dbstruct()

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problemas com o Dbstruct()

Mensagem por Itamar M. Lins Jr. »

Ola!
O select() não faz efeito nesta lógica.
Como eu disse o USE pode falhar também, deve verificar isso.

Código: Selecionar todos


BEGIN SEQUENCE WITH {| oErr | Break( oErr ) }
   DbUseArea(.T.,'DBFCDX',cDBF,cAlias,.T.,.F.,'PTISO')
Recover
      alert('Erro, abrindo Arquivo: '+cDBF)
      lRet := .f.
End Sequence

if Neterr()
    alert('Arquivo Aberto, Em Outro Lugar.')
    lRet := .f.
endif
Vc usa o xHarbour, eu não sei a sintaxe do BEGIN... mas é similar a essa.
E está usando comando do FiveWin... tambem pode ser falha do FiveWin...
No Arquivo que postou o erro é de sintaxe da função DbUseArea

Código: Selecionar todos

//Clipper
 DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>],
      [<lShared>], [<lReadonly>])

O Harbour tem mais...
DBUSEAREA( [<lNewArea>], [<cDriver>], <cName>, [<xcAlias>],;
[<lShared>], [<lReadonly>], [<cCodePage>], [<nConnection>] ) -> <lSuccess>
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problemas com o Dbstruct()

Mensagem por Itamar M. Lins Jr. »

Ola!
Alxsts, tem redundância ai...

Código: Selecionar todos

XARQUIVO := AllTrim( ::GetFilenameById(nBanco) )

IF Select( XARQUIVO ) == 0 
 USE (XARQUIVO) EXCLUSIVE
ELSE
 Select( XARQUIVO )
ENDIF
Basta.

Código: Selecionar todos

XARQUIVO := AllTrim( ::GetFilenameById(nBanco) )

IF Select( XARQUIVO ) == 0 
 USE (XARQUIVO) EXCLUSIVE ... //mas tem que checar se o use falhou.
ENDIF
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problemas com o Dbstruct()

Mensagem por alxsts »

Olá!

Verdade. Se a função Select() retornar maior que zero, a área já estará ativa. Valeu!
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problemas com o Dbstruct()

Mensagem por Daiane »

Olá,alxsts,
eu fiz dessa maneiro que vc disse mais deu erro no USE

Código: Selecionar todos

LINHA:8571 	USE (XARQUIVO) EXCLUSIVE 
por isso deixei do jeito que falei anteriormente,se a logica ta errada eu não sei,mas pelo menos ta funcionando e n ta dando erro ate agora
Anexos
error.log - Bloco de notas_2.jpg
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Problemas com o Dbstruct()

Mensagem por sygecom »

Eu usaria a dica do joao, compara quantidade de campos apenas no meu ponto de vista é errado, deve varrer o vetor atras de cada nome de campo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problemas com o Dbstruct()

Mensagem por Daiane »

Gnt,não tem jeito,eu não sei pq ta acontecendo,mas de qualquer forma terei que usar o select(nbanco) e depois o USE
se tem logica ou não,é assim q ta funcionado
Em relação a condição
if Select( XARQUIVO ) == 0
USE (XARQUIVO) EXCLUSIVE
endif
Se eu utilizar apenas isso,dar o erro que eu ja mostrei aq
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Problemas com o Dbstruct()

Mensagem por Itamar M. Lins Jr. »

Ola!
Daiane o erro é bem claro!
O arquivo em questão já está aberto.
Então será assim

Código: Selecionar todos

If select(xArquivo) > 0
   alert("O arquivo já está aberto e não precisa do USE!")
Else
  alert("O arquivo não está aberto e precisa do USE!")
  use...
EndIf

Agora resta saber se está abrindo arquivos diferentes com o mesmo alias.
Ou pode até melhorar ai... se for o caso.

Código: Selecionar todos

If select(xArquivo) >0 //O arquivo está em uso... Pelo menos o alias...
   alert("Vou fechar o arquivo")
   (xArquivo)->(DbCloseArea())
  If neterr()
     alert("Erro Fechando Arquivo: "+xArquivo) 
 EndIf
EndIf
use xArquivo new alias tal ... //agora estou abrindo o arquivo!!!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Daiane
Usuário Nível 3
Usuário Nível 3
Mensagens: 122
Registrado em: 28 Out 2014 16:19
Localização: Feira de Santana - BA

Problemas com o Dbstruct()

Mensagem por Daiane »

Hum,muito bom,obrigada
acredito que agora não vai dar mais erro
XHb 1.2.1 + FW 12.05 + Pelles C IDE
"Eu adoraria mudar o mundo, mas não me deram o código-fonte."
Responder