Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Wolvie

Problemas com Access Violation misterioso

Recommended Posts

Olá pessoal

 

Gostaria de saber o que voces fazem para conseguir achar o motivo de um access violation misterioso ...

 

Já debuguei e o erro ocorre logo após um end .... não é dentro de nenhum processo, não está tentando acessar alguma coisa não criada ... está me irritando já, estou desde manhã tentando achar este erro e tá dificil ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigos, estou tendo o mesmo maldito problema!

Esse trecho de código estava funcionando perfeitamente até há pouco, do nada começou a dar esse access violation que tá me tirando do sério. O erro ocorre na linha em negrito e se eu ignoro ela com comentário, acontece na que está em itálico.

 

Tem algo errado?

 

 

procedure TfrmSelecao.dbgSelecaoDblClick(Sender: TObject);

var

CdCliente: string;

CheckYesNo: string;

begin

 

if dbgSelecao.Fields[1].AsString = '' then

MessageDlg('Efetue a pesquisa antes de clicar no grid!', mtError, [mbOK],0)

else

begin

CheckYesNo := dbgSelecao.Fields[0].AsString;

CdCliente := dbgSelecao.Fields[1].AsString;

if UpperCase(CheckYesNo) = UpperCase('SIM') then

begin

qryAltera_Envio.SQL.Clear;

qryAltera_Envio.SQL.Add('UPDATE custom.temp_envio_cobranca_pj t ');

qryAltera_Envio.SQL.Add('SET t.aoenvia = ''NÃO''');

qryAltera_Envio.SQL.Add('WHERE t.cdcliente_envio = '+ QuotedStr(CdCliente));

qryAltera_Envio.ExecSQL;

end

else if UpperCase(CheckYesNo) = UpperCase('NÃO') then

begin

qryAltera_Envio.SQL.Clear;

qryAltera_Envio.SQL.Add('UPDATE custom.temp_envio_cobranca_pj t ');

qryAltera_Envio.SQL.Add('SET t.aoenvia = ''SIM''');

qryAltera_Envio.SQL.Add('WHERE t.cdcliente_envio = '+ QuotedStr(CdCliente));

qryAltera_Envio.ExecSQL;

end;

qryTemp_Envio.Refresh;

qrySelec_Envio.Active := false;

qrySelec_Envio.Active := true;

qryTitulos.ExecSQL;

dbgSelecao.Refresh;

end;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Só mais uma coisa: ao entrar no debug e posicionar o mouse sobre o que está em negrito

 

CdCliente := dbgSelecao.Fields[1].AsString;

 

Apresenta a mensagem: expression illegal in evaluator

O que acaba ocasionando o access violation

 

O que fazer pra essa PORCARIA entender que existe valor dentro do campo indice 1 da DbGrid?????????????

Me ajudem, pelo amorrr!!!

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Andre faz um teste, seu dbgrid esta ligado a um data source ligado a um table ou query, correto??? Pq você não teste o campo da query ou table em vez de testar o campo da dbgrid? Só p/ ver qual o valor que ele vai te retornar. Estou pensando em outra solução, valew???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, o problema é que eu to ligando esse grid a query em tempo de execução, não sei se vai apresentar o resultado da maneira que eu to precisando.

O mais engraçado: tava funcionando perfect, do nada começou a dar isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, o caminho era exatamente o que você falou, ficou assim:

 

CodCliente := qryTemp_Envio.fieldbyname('CDCLIENTE_ENVIO').AsString;

 

E com isso o Access Violation foi com os anjos, hehehehehe

 

Valeu pela dica.

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.