Clipper On Line • Ver Tópico - Letodbf - problema ao usar console e hmg simultâneos

Letodbf - problema ao usar console e hmg simultâneos

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Letodbf - problema ao usar console e hmg simultâneos

Mensagempor Nascimento » 05 Set 2019 23:25

Itamar M. Lins Jr. escreveu : Mas quem já usa LetoDbf não se preocupa com isso


passo uma coisa intrigante com o letodbf

tenho um sistema semi-console usando a gtwvt
estou portando para harbour/minigui

me deparei com o seguinte problema usando o letodbf

se eu usar todos os modulos do semi console com o letodbf funcionam tranquilamente

mais se eu abrir o modulo portado grafico "hmg" não consigo abrir, se eu abrir varias instancias do portado hmg abre normalmente

deixa ver se eu explico melhor....
se eu abrir primeiro o modulo recepção semi-console e em outro pc abrir o modulo recepção que portei pra hmg , da erro de travamento requerido ou seja é como se um banco não estivesse liberado...

mas se eu abrir varias instancias do modulo recepção com hmg em varios computadores abre tranquilamente

se eu abrir todos os modulos do semi-console , tambem abrem normalmente, o interessante é que a criação dos dbf´s e cdx´s em ambos são do mesmo jeito

ou seja consigo abrir os modulos do mesmo tipo , ou tudo grafico, ou tudo console, se eu abrir um de um e outro de outro trava , nos debug´s percebi que é como se o banco tivesse aberto exclusivo e não compartilhado

Obs: meu sistema é modular, modulos : cozinha, portaria , recepção
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 06 Set 2019 00:58

Se mistura gtwvt e migui... provavelmente pode estar usando multithread.
A conexão é visível em multithread?
O aplicativo é multithread?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 06 Set 2019 10:53

JoséQuintas escreveu :
Se mistura gtwvt e migui...


não amigo quintas, são aplicativos destintos, um compilado so com a gtwvt e outro com a minigui
segue abaixo a imagem
ant.jpg
este é o modo console , usando letodbf

principal.jpg
este é o portado para minigui tambem usando letodbf


se eu abrir o modo console, e esse modo grafico, um dos 2 travam e não abrem, mesmo usando a mesma maneira de criação de dbf/cdx com o letodbf

mais se eu abrir todos os modulos consoles, ou todos os modulos graficos abrem normalmente
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 06 Set 2019 11:45

Problemas malucos, soluções malucas.... compile os dois juntos pra ver o que dá.

Módulo principal:

PARAMETERS cConsole

IF PCount() != 0
   MainConsole()
   QUIT
ENDIF
MainMiniGUI()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 06 Set 2019 15:18

JoséQuintas escreveu:
Problemas malucos, soluções malucas.... compile os dois juntos pra ver o que dá.


acho que ou o amigo não entendeu ,ou eu não entendi o que o amigo sugeriu

eu crio abro as tabelas e crio os indices de maneira igual tanto na compilação 100% console "gtwvt", como na versão grafica "hmg"

so da pau se eu abrir um grafico e um console, se eu abrir varias instancias do console não a problema, como tambem se eu abrir varias instancias do grafico
tambem não da pau

ja li , re li a função que abro a dbf e os indices e não vejo erros

abaixo esta um pequeno exemplo de como abro os indices no modo grafico e no modo console
// Modo grafico com a minigui
#include 'minigui.ch'   
   #include "rddleto.ch"
Function Net_use()
  parameters cFiledbf,cAlias,cFilecdx,lexcl,lretry
  private lforever
  private aFilecdx
  private bFilecdx
  private bFiledbf
  private nomearq
  lretry   := iif(type("lretry") != "N",500,lretry)
  lexcl    := iif(type("lexcl") != "L",.F.,lexcl)
  lforever := lretry == 0
  bFiledbf:= cFiledbf+'.DBF' 
  cFiledbf := PathLeto+cFiledbf+'.DBF'
  aFilecdx:= cFilecdx+".CDX"
  bFilecdx:= cFilecdx                    //"MCOCUP"
  cFilecdx := PathLeto+cFilecdx+'.CDX'  //"MCOCUP.CDX"
     cDriver := "LETO"
  if !vFile(bFiledbf)
      msginfo("VERIFIQUE SE O SERVIDOR ESTA LIGADO OU A CONEXAO ESTA ATIVA  "+bFiledbf)
     quit
  endif   
  protect (bFiledbf,"D")
  do while (lretry > 0 .or. lforever)
     if (lexcl)
        DbUseArea( .T., cDriver, cFiledbf, cAlias,  .F.  )
     else
        DbUseArea( .T., cDriver, cFiledbf, cAlias,  .T.  )
*        msgdebug(cfiledbf)
     endif
     if (Used())
        exit
     endif
     lretry =- 1
  enddo
  if (Used())
     *-------------------------------------------
     if (bFilecdx = "MCOCUP")
        if (!vFile(aFilecdx))
           nomearq := bFilecdx   
           index on sui tag sui to (cFilecdx)         
        endif
        DbSetIndex( cFileCdx )
     endif
endif


// modo console
  #include "rddleto.ch"
Function Net_use
   parameters cFiledbf,cAlias,cFilecdx,lexcl,lretry
   private lforever
   private aFilecdx
   private bFilecdx
   private bFiledbf
   private nomearq
   lretry:= iif(Type("lretry") != "N", 500, lretry)
   lexcl:= iif(Type("lexcl") != "L", .F., lexcl)
   lforever:= lretry == 0
   bFiledbf:= cFiledbf+'.DBF' 
   cFiledbf := PathLeto+cFiledbf+'.DBF'
   aFilecdx:= cFilecdx+".CDX"
   bFilecdx:= cFilecdx                    //"MCOCUP"
   cFilecdx := PathLeto+cFilecdx+'.CDX'  //"MCOCUP.CDX"
      cDriver := "LETO"
   if !vFile(bFiledbf)
      alert("VERIFIQUE SE O SERVIDOR ESTA LIGADO OU A CONEXAO ESTA ATIVA "+bFiledbf)
      quit
   endif
   protect(bFiledbf, "D")
   do while (lretry > 0 .or. lforever)
      if (lexcl)
         DbUseArea( .T., cDriver, cFiledbf, cAlias,  .F.  )
      else
         DbUseArea( .T., cDriver, cFiledbf, cAlias,  .T.  )
      endif
      if (used())
         exit
      endif
      corantig:= SetColor()
      cor("menu")
      if (mens(24, 11, "Arquivo nao liberado... AGUARDE ", 1) == 27)
         set color to "&corantig"
         exit
      endif
      set color to "&corantig"
      lretry:= lretry - 1
   enddo
   if (used())
      o_cor:= SetColor()
      set color to (contecor[4])
      **
      if (bFileCdx = "MCOCUP")
         if (totarq != 0)
            @ 13, 40 say Space(27)
            @ 13, 40 say "Ocupacoes"
         endif
         if (!vFile(aFilecdx))
            if (totarq != 0)
               @ 13, 40 say Space(27)
               @ 13, 40 say "Indexando Ocupacoes"
            endif
            nomearq:= bFileCdx
            oldcor:= SetColor()
            oldtela:= SaveScreen(19, 14, 20, 70)
            set color to (contecor[4])
            index on sui tag sui to (cFileCdx)                         
            set color to (oldcor)
            RestScreen(19, 14, 20, 70, oldtela)
            if (totarq != 0)
               recat:= recat + 100 / totarq
               termoh2(recat)
            endif
         else
            if (totarq != 0)
               recat:= recat + 100 / totarq
               termoh2(recat)
            endif
         endif
         DbSetIndex( cFileCdx )
      endif
endif
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 06 Set 2019 15:42

Você é que não entendeu.

Se um EXE funciona e outro não, talvez tudo no mesmo EXE funcione, talvez aí console e GUI usem a mesma referência pro lettodb.

Quando se refere a console... é realmente console?
Faça um teste com GTWVG, talvez o modo Windows faça alguma diferença.
É só acrescentar gtwvg.hbc e nada mais, sem mexer em nada os fontes, é um teste relativamente rápido.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor Itamar M. Lins Jr. » 07 Set 2019 21:40

Ola!
Assim fica difícil de ajudar.
Tem que ser um exemplo com o mesmo fonte.
use xyz.dbf shared new etc...

Com certeza é um problema ai seu. Eu uso desde sempre com WVT e Hwgui. WVG + Hwgui... etc.. Não tem problema nenhum, roda o gerenciador para ver o estado dos dbf's. Gerenciador do LetoDbf.
Pode abrir o mesmo DBF com qualquer coisa. ADO, RDDCDX, LETO, NETIO...
Isso não e problema nem do LETO a bem da verdade. Alguma coisa ai trava o registro. Eu abro pelo Letodbf, com ele aberto acesso até pelo DBU, lógico que em modo compartilhado.
Com modo SHARED, tem que deixar abrir com qualquer RDD simultaneamente, FOXPRO, etc...

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 07 Set 2019 22:51

Itamar M. Lins Jr. escreveu :
Ola!
Assim fica difícil de ajudar.
Tem que ser um exemplo com o mesmo fonte.

nobre se vc observar , o net_use() é o mesmo a maneira de abrir é da mesma forma
sei que deve ser algum pequeno erro meu, mais não consegui compreender ainda o erro

olha acima eu botei um exemplo do net_use() que uso no modo gráfico e no modo console, observe que são indenticas,
com pequenas diferenças no modo console porque tem uma barra de progresso, mais o miolo é o mesmo digamos assim
e se ficou alguma duvida no que postei, posso tentar explicar melhor, eu não entendi o caso de um exemplo do proprio fonte

como falei acima botei o exemplo de como abro os dbf´s e indices no modo console e no modo gráfico..

att: Nascimento
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 07 Set 2019 22:58

Parei de olhar os fontes quando vi PRIVATE.... coisa de 40 anos atrás, e grande fonte de problemas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 07 Set 2019 23:09

Pergunta meio idiota....
O que faz o Protect( dbf ) ? impede o uso por outro aplicativo?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 08 Set 2019 01:51

sim , bloqueia alguns dbf´s para uso de outro soft, mais ja observei o motivo do erro não é esse, ja retirei
em fim amanhã tenho uma viagem, volto na quarta e vou refazer passo a passo e ver no que vai dar
uso privates sem problemas até hj
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 08 Set 2019 01:53

JoséQuintas escreveu:
Pergunta meio idiota....
O que faz o Protect( dbf )


sim bloqueia alguns dbf´s para o uso em outros programas
mais a causa do erro não é ele ja fiz esse teste, enfim tenho que viajar amanhã
volto possivelmente na quarta, ai vou iniciar pequenos testes e ver no que dá
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor JoséQuintas » 08 Set 2019 04:32

No editor de texto deu pra ver melhor.
Melhor refazer essa função, está muito ruim.
Não analisa direito se abriu DBF, e muito menos se abriu CDX.
E mistura teste de abrir arquivo com outras coisas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Tabela DBF apaga os registros

Mensagempor Nascimento » 08 Set 2019 07:31

na função eu vejo se o arquivo existe
com o vfile()
bom o que eu estava tentando falar era isso aqui vejam as imagens
modo1.jpg
observe que aqui ta aberto 2 modulos em modo console , o auxiliar e o modulo caixa


modo2.jpg
agora observe que eu abri o modulo grafico com a hmg e abaixo estou tentando abrir o modulo auxiliar modo console


JoséQuintas escreveu :
No editor de texto deu pra ver melhor.
Melhor refazer essa função, está muito ruim.
Não analisa direito se abriu DBF, e muito menos se abriu CDX.
E mistura teste de abrir arquivo com outras coisas.


uso o file() para checar se existe tanto o dbf quanto o cdx ela é meia confusa mesmo,
mais lendo direitinho da pra entender
agora na função used() eu li tempos atrás que estava obsoleta, qual melhor opção para
por no lugar dela?
talvez seja esse o problema

Syntax

Used() → lDbfOpen

Arguments
(This function has no arguments)
Returns
lDbfOpen True is a database is Used;otherwise False
Description
This function returns a logical true (.T.) if a database file is in USE in the current or designated work area.
If no alias is specified along with this function , it will default to the currently selected work area.
Examples:

USE test NEW
USE names NEW
? Used() // --> .T.
? test->( Used() ) // --> .T.
dbCloseArea()
? Used() // --> .F.
SELECT test
? Used()
https://harbour.github.io/doc/harbour.html#used
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes

Tabela DBF apaga os registros

Mensagempor Ranier » 08 Set 2019 09:52

Olá, posso fazer duas sugestões.
A primeira, use NetErr() ao invés de Used() para verificar se ocorreu erro na abertura,
além do que dbUseArea já retorna .T. se ok, e .F. se falhou, bastaria então:
lret = DbUsearea()
Mas, sempre usei NetErr com sucesso.

A segunda, sempre crie um tópico novo para questionar a respeito de outro assunto, mesmo que relacionado,
e sempre coloque [RESOLVIDO] para ajudar outros que estão passando pelo mesmo problema.
Ranier
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 80
Data de registro: 02 Abr 2019 09:01
Cidade/Estado: Goiania/Goias
Curtiu: 0 vez
Mens.Curtidas: 9 vezes

Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 14 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