Fórum Violação de Acesso usando ADOquery #322145
25/05/2006
0
executo a query pela primeira vez com uma string sql q é passada como parametro, até aí, tudo bem...
quando vou re-executar a query com uma nova string sql, ele me diz q houve uma violação de acesso!
não estou conseguindo imaginar como está ocorrendo tal violação.
alguém teria como me ajudar nesse prob?
grato, e abraço à todos !
Henry Schutz
Curtir tópico
+ 0Posts
25/05/2006
Massuda
No seu caso, pode ser que algum objeto, por exemplo o TQuery (ou o equivalente), tenha sido destruído entre uma execução e outra da query.
Gostei + 0
25/05/2006
Henry Schutz
Não sei como isso está acontecendo...
O problema é justamente quando, após eu executar uma adoquery pela primeira vez, na segunda vez q tento executa-la com uma nova string sql, ele dá um erro de violação de acesso.
veja o código à seguir:
function sql_servico(sqlstring:string):string;
begin
dt_modulo.adoquery_servicos.close;
dt_modulo.adoquery_servicos.sql.clear;
dt_modulo.adoquery_servicos.sql.add(sqlstring);
dt_modulo.adoquery_servicos.execsql;
dt_modulo.adoquery_servicos.open;
end;
na primeira execução, tudo corre as mil maravilhas, mas quando chamo a função p executar uma nova query,ele dá o erro de violação de acesso! Já estou ficando fulo com isso, pois não consigo dar continuídade no sistema.
teria alguma sugestão?
Abraço!
Gostei + 0
25/05/2006
Rjun
Gostei + 0
26/05/2006
Henry Schutz
o erro ocorre na segunda vez q executo a querry. Ex:
rodo o prog. executo a query pela primeira vez, até aí, tudo ok... continuo executando o prog, aí rodo uma nova string sql dentro desse compontente adoquerry, aí o erro ocorre logo após o execsql.
tá foda....
Abraço!
Gostei + 0
26/05/2006
Massuda
Você deve usar ExecSQL para executar comandos que [b:5192071358]não[/b:5192071358] resultam em um dataset; use Open quando o comando retorna um dataset. Que eu saiba, não faz sentido usar os dois métodos juntos.
Exemplo de comandos SQL que [b:5192071358]não[/b:5192071358] resultam em um dataset: UPDATE, DELETE.
Exemplo de comando SQL que resulta em um dataset: SELECT.
Gostei + 0
26/05/2006
Henry Schutz
Abraço!
Gostei + 0
26/05/2006
Rjun
Gostei + 0
26/05/2006
Henry Schutz
bem... eu tentei sem usar a opção close, e continuou dando erro..
o simples fato de eu re-executar a query, já dá erro de violação de acesso no módulo msado15.dll.
tá dificil isso....
Gostei + 0
26/05/2006
Rjun
function sql_servico(sqlstring:string):string; begin dt_modulo.adoquery_servicos.close; dt_modulo.adoquery_servicos.sql.clear; dt_modulo.adoquery_servicos.sql.add(sqlstring); dt_modulo.adoquery_servicos.open; end;
Gostei + 0
26/05/2006
Henry Schutz
valeu mesmo!!!
vc sabe dizer o pq do erro com execsql?
Um grande abraço, e valeu pela ajuda!!!
Gostei + 0
26/05/2006
Rjun
Gostei + 0
26/05/2006
Paullsoftware
valeu mesmo!!!
vc sabe dizer o pq do erro com execsql?
Um grande abraço, e valeu pela ajuda!!![/quote:9d52b1c090]
Vou entrar na discursão..
O comando ExexSQL somente deve ser usado em caso de instruções de Inserção, Delete e UpDate...
já o Open você deve usar sempre que usar o Select, deu pra entender...
espero ter ajudado :wink:
Gostei + 0
26/05/2006
Henry Schutz
esse prob. tava me enchendo, agora vou conseguir tocar o sistema!
O engraçado é q conseguia executar a sql via ´execsql´ na primeira tentativa ,sem erros! Assim ficava dificil imaginar o q poderia ser!
Não sabia q era apenas p manipulação de dados!
Novamente, um grande abraço à todos, e obrigado pela ajuda!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)