ADO: Perdendo conexão
Moderador: Moderadores
tbrowse: atualização da tela
Sem dúvida vc tem razão. Eu tinha esquecido que é variável local e, portanto, não seria afetada mesmo por outra função.
De qualquer forma, o problema que tenho aqui ainda está sem resposta. Ainda não consigo saber onde está fechando a conexão deste browse.
Existe alguma forma de fazer algum teste que me dê uma solução pra isso?
De qualquer forma, o problema que tenho aqui ainda está sem resposta. Ainda não consigo saber onde está fechando a conexão deste browse.
Existe alguma forma de fazer algum teste que me dê uma solução pra isso?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
tbrowse: atualização da tela
Se quem fez não consegue, sinal de que o fonte tá ruim.cjp escreveu:De qualquer forma, o problema que tenho aqui ainda está sem resposta. Ainda não consigo saber onde está fechando a conexão deste browse.
Existe alguma forma de fazer algum teste que me dê uma solução pra isso?
Seguir o fonte passo a passo pra ver o que o fonte faz.
Se não resolver, faz outro.
Bloquear partes do fonte, pra ver se tirando aquela parte funciona.
É um caso seu, uma situação sua, os fontes estão aí na sua mão, só você pode resolver.
Não dá pra ficar imaginando o que seu fonte faz, ninguém tem bola de cristal.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
tbrowse: atualização da tela
O que OS SEUS FONTES fazem, porque se um depende do outro, ou uma variável é alterada por outro, só olhando TODOS OS FONTES ENVOLVIDOS.JoséQuintas escreveu:Não dá pra ficar imaginando o que seu fonte faz, ninguém tem bola de cristal.
Ponha-se em nosso lugar.
Tente resolver esta questão:
Código: Selecionar todos
PRIVATE A
A = Funcao()
? A
O que está perguntando é parecido com isso, não dá pra saber olhando um só fonte, e não dá pra imaginar o que o outro fonte faz.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
tbrowse: atualização da tela
Eu te entendo.
Mas, no caso, eu postei a função.
A questão me parece simples: a conexão do browse parece estar sendo fechada na função veronus(), mas a função veronus(), até onde eu pude constatar, não está fechando a conexão.
Não sei se adianta fazer de novo. Se não sei a causa do erro, vou acabar cometendo o mesmo erro de novo.
Mas, no caso, eu postei a função.
A questão me parece simples: a conexão do browse parece estar sendo fechada na função veronus(), mas a função veronus(), até onde eu pude constatar, não está fechando a conexão.
Não sei se adianta fazer de novo. Se não sei a causa do erro, vou acabar cometendo o mesmo erro de novo.
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
tbrowse: atualização da tela
E ao contrário, eu não te entendo.cjp escreveu:Eu te entendo.
Mas, no caso, eu postei a função.
A questão me parece simples: a conexão do browse parece estar sendo fechada na função veronus(), mas a função veronus(), até onde eu pude constatar, não está fechando a conexão.
Não sei se adianta fazer de novo. Se não sei a causa do erro, vou acabar cometendo o mesmo erro de novo.
Passei o que fazer na função de conexão.
MESMO QUE JÁ TENHA FEITO, não é só alterar a função, precisa alterar todos os lugares que usam a função, começando nesse veronus() que é onde está tendo problema.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
tbrowse: atualização da tela
Eu alterei da forma como vc disse, mas não resolveu.
E, se eu entendi bem o que vc disse, não resolveria mesmo, não? Porque, afinal, a variável da conexão deste browse é local. Então, ela não poderia mesmo ser alterada em outro ponto do sistema. Estou correto?
Então, voltamos ao ponto inicial: como pode estar perdendo a conexão em outro ponto do sistema?
E, se eu entendi bem o que vc disse, não resolveria mesmo, não? Porque, afinal, a variável da conexão deste browse é local. Então, ela não poderia mesmo ser alterada em outro ponto do sistema. Estou correto?
Então, voltamos ao ponto inicial: como pode estar perdendo a conexão em outro ponto do sistema?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
tbrowse: atualização da tela
Ela ser local isola de todo restante, exceto no caso de passar por referência, pra função de abertura, que seria um lugar passado de propósito, sabendo o que iria acontecer.cjp escreveu:Eu alterei da forma como vc disse, mas não resolveu.
E, se eu entendi bem o que vc disse, não resolveria mesmo, não? Porque, afinal, a variável da conexão deste browse é local. Então, ela não poderia mesmo ser alterada em outro ponto do sistema. Estou correto?
Então, voltamos ao ponto inicial: como pode estar perdendo a conexão em outro ponto do sistema?
Agora é tentar entender o que outras funções fazem.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
tbrowse: atualização da tela
Então, mas não estou passando a variável da conexão do browse por referência para lugar algum. Isso que não estou entendendo.
Existe alguma forma de testar o status da variável?
Existe alguma forma de testar o status da variável?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO: Perdendo conexão
Existe como testar o status da conexão.
Só confirmar nas propriedades de conexão ADO, deve ter na Microsoft.
Só confirmar nas propriedades de conexão ADO, deve ter na Microsoft.
Código: Selecionar todos
? cnSQL:State
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO: Perdendo conexão
É pra asp mas serve:
Código: Selecionar todos
https://www.w3schools.com/asp/ado_ref_connection.asp
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
ADO: Perdendo conexão
Desculpe a demora, mas estou há tempo tentando resolver este problema, sem sucesso.
Fiz um arquivo só deste browse para tentar ver o problema.
Neste arquivo, está dando o seguinte erro:
Entendi que está faltando a definição desta variável, realmente não tem.
O problema é que, no arquivo original, de onde tirei o browse, também não tem definição desta variável. E, estranhamente, não acontece este erro.
Poderia por favor me explicar o que é esta variável, e como defini-la corretamente?
Fiz um arquivo só deste browse para tentar ver o problema.
Neste arquivo, está dando o seguinte erro:
Este erro está na seguinte parte do programa:Error BASE/1003 Variável não existe: TBR_EXIT
Código: Selecionar todos
IF oBrowse:applyKey( nKey ) == TBR_EXIT
EXIT
ENDIF
O problema é que, no arquivo original, de onde tirei o browse, também não tem definição desta variável. E, estranhamente, não acontece este erro.
Poderia por favor me explicar o que é esta variável, e como defini-la corretamente?
Inacio de Carvalho Neto
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
ADO: Perdendo conexão
Olá!
Feliz ano novo!
Constantes manifestas, como o nome sugere, são valores que não se alteram durante a execução de um programa ou sistema inteiro. São definidas em arquivos de cabeçalho (.ch, (clipper header) ). Estes arquivos são processados pelo pré-processador, em tempo de compilação, quando o arquivo fonte (.Prg) é lido. Neste ponto, os nomes das constantes manifestas são trocados por seus respectivos valores. Constantes manifestas são case sensitive, ou seja, se você definiu o nome da constante como K_FOO, terá que usar este nome em seu fonte. Se usar K_foo, vai dar este erro "Error BASE/1003 Variável não existe:".
Para solucionar o teu problema, basta inserir no início do teu fonte a linha
Se você abrir este arquivo na pasta include do Harbour ou xHarbour, vai encontrar lá a linha
O código abaixo
é equivalente a este
Constantes manifestas são muito úteis no caso de se desejar alterar o valor da constante. Se alguém resolver alterar o valor da constante TBR_EXIT para -1000, não será necessário alterar os fontes onde a constante estiver sendo usada. Já no caso de se estar usando o valor, teria que varrer todos os fontes e trocar -1 por -1000...
Feliz ano novo!
Neste caso, TBR_EXIT não é uma variável. É uma constante manifesta.cjp escreveu:O problema é que, no arquivo original, de onde tirei o browse, também não tem definição desta variável. E, estranhamente, não acontece este erro.
Constantes manifestas, como o nome sugere, são valores que não se alteram durante a execução de um programa ou sistema inteiro. São definidas em arquivos de cabeçalho (.ch, (clipper header) ). Estes arquivos são processados pelo pré-processador, em tempo de compilação, quando o arquivo fonte (.Prg) é lido. Neste ponto, os nomes das constantes manifestas são trocados por seus respectivos valores. Constantes manifestas são case sensitive, ou seja, se você definiu o nome da constante como K_FOO, terá que usar este nome em seu fonte. Se usar K_foo, vai dar este erro "Error BASE/1003 Variável não existe:".
Para solucionar o teu problema, basta inserir no início do teu fonte a linha
Código: Selecionar todos
#include "tbrowse.ch"Código: Selecionar todos
/* tBrowse ApplyKey() method return codes */
#define TBR_EXIT -1
Código: Selecionar todos
IF oTbr:applyKey( nKey ) == TBR_EXIT
EXIT
ENDIF
Código: Selecionar todos
IF oTbr:applyKey( nKey ) == -1
EXIT
ENDIF
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO: Perdendo conexão
Comentário adicional:
Em fonte formatado, geralmente o que está em maiúsculo é constante, que fica em algum #define
Por isso é importante formatação, porque fica fácil identificar.
Também é interessante formatar o prefixo, nesse caso TBR_, porque indica o conjunto do tbrowse.
Com certeza vai ver isso mais vezes em outros fontes.
Outro exemplo bastante conhecido é o K_ESC, vindo de inkey.ch
O prefixo K é sobre keyboard - teclado
Em fonte formatado, geralmente o que está em maiúsculo é constante, que fica em algum #define
Por isso é importante formatação, porque fica fácil identificar.
Também é interessante formatar o prefixo, nesse caso TBR_, porque indica o conjunto do tbrowse.
Com certeza vai ver isso mais vezes em outros fontes.
Outro exemplo bastante conhecido é o K_ESC, vindo de inkey.ch
O prefixo K é sobre keyboard - teclado
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
ADO: Perdendo conexão
Realmente, bobeira minha. Já conhecia sobre constantes, embora não sabia dessa forma fácil de identificar as constantes.
Coloque o include e resolveu este problema.
E agora cheguei ao problema central com o qual estou me debatendo aqui desde o início: a perda da conexão.
Fiz um sistema só para este browse, para conseguir testar mais especificamente. Aqui no meu computador não dá erro.
Mas o meu sistema principal também funciona sem erro no meu computador, e dá erro nos computadores de todos os usuários. Evidentemente, tem algo errado aí.
Agora vou testar este sistema exclusivo para este browse nos computadores dos usuários, para ver se também dá erro.
Obrigado a todos por enquanto.
Coloque o include e resolveu este problema.
E agora cheguei ao problema central com o qual estou me debatendo aqui desde o início: a perda da conexão.
Fiz um sistema só para este browse, para conseguir testar mais especificamente. Aqui no meu computador não dá erro.
Mas o meu sistema principal também funciona sem erro no meu computador, e dá erro nos computadores de todos os usuários. Evidentemente, tem algo errado aí.
Agora vou testar este sistema exclusivo para este browse nos computadores dos usuários, para ver se também dá erro.
Obrigado a todos por enquanto.
Inacio de Carvalho Neto
