 |
ActiveDelphi .: O site do programador Delphi! :.
|
| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Qui Jan 12, 2012 5:13 pm Assunto: quando a conexão cai!!!! |
|
|
olá rapaziada eu aqui de novo!!
é o seguinte coloquei em um dos meus clientes rede wifi
agora tudo é sem fio!!!
queria saber quando o sistema esta usando o banco do servidor ai a conexão cai!! como tratar esse erro? |
|
| Voltar ao Topo |
|
 |
panzetti Novato

Registrado: Segunda-Feira, 4 de Julho de 2011 Mensagens: 23
|
Enviada: Qui Jan 12, 2012 6:23 pm Assunto: |
|
|
Se fizesse uma rotina para verificar conectividade, e quando não houve conexao exibisse uma mensagem dizendo. _________________ []'s
A n d r é P a n z e t t i |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Qui Jan 12, 2012 7:35 pm Assunto: |
|
|
| panzetti escreveu: | | Se fizesse uma rotina para verificar conectividade, e quando não houve conexao exibisse uma mensagem dizendo. |
vou tentar aqui. valeu!!! |
|
| Voltar ao Topo |
|
 |
Caduzera Profissional

Registrado: Terça-Feira, 29 de Julho de 2008 Mensagens: 656
|
Enviada: Sex Jan 13, 2012 9:23 am Assunto: |
|
|
| Amigo, se você usar o ApplicationEvents, OnException, você consegue capturar qualquer erro que ocorra na aplicação, inclusive, falhas de conexão .. |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sex Jan 13, 2012 6:20 pm Assunto: |
|
|
| Caduzera escreveu: | | Amigo, se você usar o ApplicationEvents, OnException, você consegue capturar qualquer erro que ocorra na aplicação, inclusive, falhas de conexão .. |
olá meu brother valeu por ter respondido!!!
olha eu uso sim o ApplicationEvents, OnException mais para outros tipos de erros.
no caso desse erro q da eu faria como com ApplicationEvents, OnException? |
|
| Voltar ao Topo |
|
 |
igormoita Profissional


Registrado: Quinta-Feira, 14 de Janeiro de 2010 Mensagens: 601
|
Enviada: Sex Jan 13, 2012 6:57 pm Assunto: |
|
|
caiochacal, eu fiz da seguinte forma, no OnException criei uma variável para receber a msg de erro 'EMsg', e no início do procedimento
| Código: | | EMsm := E.Message; |
Depois no corpo do procedimento verifico o tipo da msg:
| Código: | if(Pos('Uma conexão estabelecida foi anulada pelo software no computador host', Emsg) <> 0)
or(Pos('Unable to complete network request to host', Emsg) <> 0)
or(Pos('Read error', Emsg) <> 0)
then
begin
MsgErro := 'Erro de conexão, a tela ativada será fechada!';
DM1.SQLConnection1.Tag := 666;
DM1.SQLConnection1.Connected := False;
end; |
Dai qnd abro os formulários eu testo se o SQLConnection.Tag = 666, caso esteja a criação do formulário é bloqueada e aparece a msg q houve
perda de conexão. _________________ SEMPRE COLOQUE [RESOLVIDO] NO SEU POST |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sex Jan 13, 2012 8:26 pm Assunto: |
|
|
| igormoita escreveu: | caiochacal, eu fiz da seguinte forma, no OnException criei uma variável para receber a msg de erro 'EMsg', e no início do procedimento
| Código: | | EMsm := E.Message; |
Depois no corpo do procedimento verifico o tipo da msg:
| Código: | if(Pos('Uma conexão estabelecida foi anulada pelo software no computador host', Emsg) <> 0)
or(Pos('Unable to complete network request to host', Emsg) <> 0)
or(Pos('Read error', Emsg) <> 0)
then
begin
MsgErro := 'Erro de conexão, a tela ativada será fechada!';
DM1.SQLConnection1.Tag := 666;
DM1.SQLConnection1.Connected := False;
end; |
Dai qnd abro os formulários eu testo se o SQLConnection.Tag = 666, caso esteja a criação do formulário é bloqueada e aparece a msg q houve
perda de conexão. |
olá meu brother valeu pela resposta!!
onde fica esse OnException ai? |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sex Jan 13, 2012 8:29 pm Assunto: |
|
|
| caiochacal escreveu: | | igormoita escreveu: | caiochacal, eu fiz da seguinte forma, no OnException criei uma variável para receber a msg de erro 'EMsg', e no início do procedimento
| Código: | | EMsm := E.Message; |
Depois no corpo do procedimento verifico o tipo da msg:
| Código: | if(Pos('Uma conexão estabelecida foi anulada pelo software no computador host', Emsg) <> 0)
or(Pos('Unable to complete network request to host', Emsg) <> 0)
or(Pos('Read error', Emsg) <> 0)
then
begin
MsgErro := 'Erro de conexão, a tela ativada será fechada!';
DM1.SQLConnection1.Tag := 666;
DM1.SQLConnection1.Connected := False;
end; |
Dai qnd abro os formulários eu testo se o SQLConnection.Tag = 666, caso esteja a criação do formulário é bloqueada e aparece a msg q houve
perda de conexão. |
olá meu brother valeu pela resposta!!
onde fica esse OnException ai? |
me desculpa eu me passei nisso foi mal!!!
não lembrava do OnException ja to ligado!! |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sex Jan 13, 2012 8:59 pm Assunto: |
|
|
| caiochacal escreveu: | | caiochacal escreveu: | | igormoita escreveu: | caiochacal, eu fiz da seguinte forma, no OnException criei uma variável para receber a msg de erro 'EMsg', e no início do procedimento
| Código: | | EMsm := E.Message; |
Depois no corpo do procedimento verifico o tipo da msg:
| Código: | if(Pos('Uma conexão estabelecida foi anulada pelo software no computador host', Emsg) <> 0)
or(Pos('Unable to complete network request to host', Emsg) <> 0)
or(Pos('Read error', Emsg) <> 0)
then
begin
MsgErro := 'Erro de conexão, a tela ativada será fechada!';
DM1.SQLConnection1.Tag := 666;
DM1.SQLConnection1.Connected := False;
end; |
Dai qnd abro os formulários eu testo se o SQLConnection.Tag = 666, caso esteja a criação do formulário é bloqueada e aparece a msg q houve
perda de conexão. |
olá meu brother valeu pela resposta!!
onde fica esse OnException ai? |
me desculpa eu me passei nisso foi mal!!!
não lembrava do OnException ja to ligado!! |
meu brother não entende essa parte (Depois no corpo do procedimento verifico o tipo da msg:) |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sáb Jan 14, 2012 8:57 am Assunto: |
|
|
| caiochacal escreveu: | | caiochacal escreveu: | | caiochacal escreveu: | | igormoita escreveu: | caiochacal, eu fiz da seguinte forma, no OnException criei uma variável para receber a msg de erro 'EMsg', e no início do procedimento
| Código: | | EMsm := E.Message; |
Depois no corpo do procedimento verifico o tipo da msg:
| Código: | if(Pos('Uma conexão estabelecida foi anulada pelo software no computador host', Emsg) <> 0)
or(Pos('Unable to complete network request to host', Emsg) <> 0)
or(Pos('Read error', Emsg) <> 0)
then
begin
MsgErro := 'Erro de conexão, a tela ativada será fechada!';
DM1.SQLConnection1.Tag := 666;
DM1.SQLConnection1.Connected := False;
end; |
Dai qnd abro os formulários eu testo se o SQLConnection.Tag = 666, caso esteja a criação do formulário é bloqueada e aparece a msg q houve
perda de conexão. |
olá meu brother valeu pela resposta!!
onde fica esse OnException ai? |
me desculpa eu me passei nisso foi mal!!!
não lembrava do OnException ja to ligado!! |
meu brother não entende essa parte (Depois no corpo do procedimento verifico o tipo da msg:) |
Por favor q souber ai da uma ajuda!!!
eu fiz assim coloquei o time e ele fica verificando a conexão:
| Código: | procedure TFrmprincipal.Timer3Timer(Sender: TObject);
begin
if dm_dados.base_dados_estoque.TestConnected = False
then
begin
tentativas:=1;
iniconf:=Tinifile.Create(extractfilepath(application.ExeName)+'conf3.ini');
dm_dados.base_dados_estoque.Connected := False;
dm_dados.base_dados_estoque.DatabaseName := iniconf.ReadString('base_dados_estoque','path','');
try
dm_dados.base_dados_estoque.Connected := True;
dm_dados.IBTrans.Active := True;
dm_dados.IBTrans.StartTransaction;
ShowMessage('conectado!');
except
ShowMessage('Erro de conexão com o banco!');
end;
end; |
ai quando a conexão cai, ele procura o banco de dados local e conecta, assim da certo mais a mensagem de erro continua (Dataset Open) como eu tiro essa menssagem de erro? |
|
| Voltar ao Topo |
|
 |
igormoita Profissional


Registrado: Quinta-Feira, 14 de Janeiro de 2010 Mensagens: 601
|
Enviada: Sáb Jan 14, 2012 9:08 am Assunto: |
|
|
caiochacal, é porque o Evento ApplicationEvents.OnException possui uma variável chamanda E: Exception, e quando acontece qualquer
erro na aplicação essa variável guarda a mensagem de erro em E.Message, dai basta você utiliza-la para verificar qual a mensagem
de erro, ex.:
Abra uma nova aplicação;
Adicione 1 Button;
Adicione 1 ApplicationEvents;
No OnClick do Button coloque: StrToDate('1');;
No OnException do ApplicationEvents coloque:
| Código: | if(Pos('is not a valid date',E.Message) > 0)then
ShowMessage('Data Inválida!'); |
De um break no if(Pos... debug e veja oque a variável recebe para você entender melhor como funciona essa opção. _________________ SEMPRE COLOQUE [RESOLVIDO] NO SEU POST |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sáb Jan 14, 2012 9:09 am Assunto: |
|
|
| igormoita escreveu: | caiochacal, é porque o Evento ApplicationEvents.OnException possui uma variável chamanda E: Exception, e quando acontece qualquer
erro na aplicação essa variável guarda a mensagem de erro em E.Message, dai basta você utiliza-la para verificar qual a mensagem
de erro, ex.:
Abra uma nova aplicação;
Adicione 1 Button;
Adicione 1 ApplicationEvents;
No OnClick do Button coloque: StrToDate('1');;
No OnException do ApplicationEvents coloque:
| Código: | if(Pos('is not a valid date',E.Message) > 0)then
ShowMessage('Data Inválida!'); |
De um break no if(Pos... debug e veja oque a variável recebe para você entender melhor como funciona essa opção. |
vou testa aqui, ja, ja te respondo! |
|
| Voltar ao Topo |
|
 |
caiochacal Aprendiz

Registrado: Sábado, 16 de Abril de 2011 Mensagens: 180
|
Enviada: Sáb Jan 14, 2012 12:39 pm Assunto: |
|
|
| caiochacal escreveu: | | igormoita escreveu: | caiochacal, é porque o Evento ApplicationEvents.OnException possui uma variável chamanda E: Exception, e quando acontece qualquer
erro na aplicação essa variável guarda a mensagem de erro em E.Message, dai basta você utiliza-la para verificar qual a mensagem
de erro, ex.:
Abra uma nova aplicação;
Adicione 1 Button;
Adicione 1 ApplicationEvents;
No OnClick do Button coloque: StrToDate('1');;
No OnException do ApplicationEvents coloque:
| Código: | if(Pos('is not a valid date',E.Message) > 0)then
ShowMessage('Data Inválida!'); |
De um break no if(Pos... debug e veja oque a variável recebe para você entender melhor como funciona essa opção. |
vou testa aqui, ja, ja te respondo! |
Vou falar pra vcs eu conseguir fazer o bicho funfa!!!!
mais foi na velha ganbiarra!!! rsrsrsr!!!
porra pesquisei pacaralho!!!! e só encontrava soluções mal resolvidas
graças a meu brother igormoita aqui do forum , por sinal é o melhor forum sem querer puxar o saco!! rsrsr! eu conseguir fazer uma ganbiarra massa!!!
O relogio fica rastriando a conexão ai se a mesma cai, ele da uma mensagem de conexão perdida e esconde o erro chato q diz (dataset open) ai ele aciona outro relogio q rastria se a conexão voltou com a conexão estabelecida ele pega o endereço de novo do arquivo ini e conecta o banco novamente!!!
se alguém precisar da solução ganbiarra eu coloco com uma explicação melhor!!! |
|
| Voltar ao Topo |
|
 |
igormoita Profissional


Registrado: Quinta-Feira, 14 de Janeiro de 2010 Mensagens: 601
|
Enviada: Sáb Jan 14, 2012 9:10 pm Assunto: |
|
|
Fico feliz em ter ajudado, se você utilizou corretamente o ApplicationEvents não vejo porque chamar de gambiarra xD!
(OBS: adicione [Resolvido] no título do tópico) _________________ SEMPRE COLOQUE [RESOLVIDO] NO SEU POST |
|
| Voltar ao Topo |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Jan 15, 2012 10:30 am Assunto: |
|
|
Uma outra forma seria dar um ping no servidor com componentes indy, utilizando idicmp, assim vc poderia saber se a rede caiu, outra forma seria vc utilizar wmi para monitorar a rede e seu sinal.
bye _________________ P.O.W.E.R B.Y D.E.L.P.H.I |
|
| Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|