access vilation o que pode ser???
Bom dia!
Meus clientes utilizam muito no dia a dia duas telas básicas com vários terminais ao mesmo tempo,
que são as telas de digitação de pedido e cadastro de clientes.
O meu cliente está reclamando que com frequencia que recebe uma mensagem ´Access violation at address...´ no momento da pesquisa na tela de clientes ou na tela de pedido para pesquisar o cliente.
Tenho uma tela padrão de pesquisa de acordo com a tela que o usuário está clica no botão pesquisar
eu monto a query de acordo com a tela em questão e passo para a tela de pesquisa os dados que o cliente
precisa visualizar e ulilizo uma query dinâmica a pergunta é a seguinte tem algi de errado na minha query?
ou é melhor eu definir os componentes na tela (sqldataset,provider,clientdataset,datsource etc.) ao invés
de usar query dinâmica.
Abaixo segue um exemplo da tabela cliente.
procedure TFrmCadCliente.actPesquisaExecute(Sender: TObject);
var
result : Variant;
begin
inherited;
FrmPesquisaGeral.QryPadrao.close;
FrmPesquisaGeral.QryPadrao.sql.Clear;
FrmPesquisaGeral.QryPadrao.SQL.Add(´SELECT CLI_CODIGO as Codigo, CLI_NOME as Cliente,CLI_DATANASCIMENTO as Nascimento, CLI_RG as RG, CLI_CPF as CPF, CLI_CNPJ as CNPJ, CLI_LOGRADOUROENDERECO as Endereco, CLI_TELEFONE as Telefone´);
FrmPesquisaGeral.QryPadrao.SQL.Add(´FROM CLIENTE´ );
FrmPesquisaGeral.QryPadrao.SQL.Add(´WHERE CLI_NOME like :Pesquisa ´ );
FrmPesquisaGeral.QryPadrao.SQL.Add(´AND EMP_CODIGO = :Empresa´ );
FrmPesquisaGeral.QryPadrao.ParamByName(´Empresa´).AsInteger := strtoint(FrmPrincipalSGCAdm.CodigoEmpresaLBL.Caption);
FrmPesquisaGeral.ResultField := 1;
FrmPesquisaGeral.Pesquisa := true;
result := FrmPesquisaGeral.Open;
if result null then
begin
sdsQuery.Close;
cdsPadrao.Close;
sdsQuery.ParamByName(´EMPRESA´).AsInteger := FrmPrincipalSGCAdm.CodEmpresa;
sdsQuery.ParamByName(´CODIGO´).AsInteger := result;
sdsQuery.Open;
cdsPadrao.Open;
SalvarBTN.Enabled := True;
cdsPadrao.Edit;
end;
edtConsulta.Visible := False;
dbCodigo.Visible := True;
end;
´Deus responde as nossas preocupações para com os outros´
Um abraço
Plácido
Meus clientes utilizam muito no dia a dia duas telas básicas com vários terminais ao mesmo tempo,
que são as telas de digitação de pedido e cadastro de clientes.
O meu cliente está reclamando que com frequencia que recebe uma mensagem ´Access violation at address...´ no momento da pesquisa na tela de clientes ou na tela de pedido para pesquisar o cliente.
Tenho uma tela padrão de pesquisa de acordo com a tela que o usuário está clica no botão pesquisar
eu monto a query de acordo com a tela em questão e passo para a tela de pesquisa os dados que o cliente
precisa visualizar e ulilizo uma query dinâmica a pergunta é a seguinte tem algi de errado na minha query?
ou é melhor eu definir os componentes na tela (sqldataset,provider,clientdataset,datsource etc.) ao invés
de usar query dinâmica.
Abaixo segue um exemplo da tabela cliente.
procedure TFrmCadCliente.actPesquisaExecute(Sender: TObject);
var
result : Variant;
begin
inherited;
FrmPesquisaGeral.QryPadrao.close;
FrmPesquisaGeral.QryPadrao.sql.Clear;
FrmPesquisaGeral.QryPadrao.SQL.Add(´SELECT CLI_CODIGO as Codigo, CLI_NOME as Cliente,CLI_DATANASCIMENTO as Nascimento, CLI_RG as RG, CLI_CPF as CPF, CLI_CNPJ as CNPJ, CLI_LOGRADOUROENDERECO as Endereco, CLI_TELEFONE as Telefone´);
FrmPesquisaGeral.QryPadrao.SQL.Add(´FROM CLIENTE´ );
FrmPesquisaGeral.QryPadrao.SQL.Add(´WHERE CLI_NOME like :Pesquisa ´ );
FrmPesquisaGeral.QryPadrao.SQL.Add(´AND EMP_CODIGO = :Empresa´ );
FrmPesquisaGeral.QryPadrao.ParamByName(´Empresa´).AsInteger := strtoint(FrmPrincipalSGCAdm.CodigoEmpresaLBL.Caption);
FrmPesquisaGeral.ResultField := 1;
FrmPesquisaGeral.Pesquisa := true;
result := FrmPesquisaGeral.Open;
if result null then
begin
sdsQuery.Close;
cdsPadrao.Close;
sdsQuery.ParamByName(´EMPRESA´).AsInteger := FrmPrincipalSGCAdm.CodEmpresa;
sdsQuery.ParamByName(´CODIGO´).AsInteger := result;
sdsQuery.Open;
cdsPadrao.Open;
SalvarBTN.Enabled := True;
cdsPadrao.Edit;
end;
edtConsulta.Visible := False;
dbCodigo.Visible := True;
end;
´Deus responde as nossas preocupações para com os outros´
Um abraço
Plácido
Placido
Curtidas 0
Respostas
Nelson_prog
14/09/2004
Plácido se vc me enviar seu código para eu dar uma olhada posso tentar te ajudar...
Nelson
nelson_prog@ig.com.br
Nelson
nelson_prog@ig.com.br
GOSTEI 0
Placido
14/09/2004
Nelson bom dia!
Não entendi o sistema é muito grande você quer que eu mande o form e a
unit do cadastro de cliente e o forma da pesquisa??
Grato
Não entendi o sistema é muito grande você quer que eu mande o form e a
unit do cadastro de cliente e o forma da pesquisa??
Grato
GOSTEI 0
Otto
14/09/2004
Olá, o form ´FrmPesquisaGeral´ esta aberto quando essa rotina é executada?!
GOSTEI 0
Placido
14/09/2004
Não o formulário de pesquisa é aberto no momento que o botão pesquisar
é acionado...
Grato
é acionado...
Grato
GOSTEI 0
Paulo_amorim
14/09/2004
Não o formulário de pesquisa é aberto no momento que o botão pesquisar
é acionado...
Grato
Olá
De qualquer forma, ele já está em memória?
Até+
GOSTEI 0
Placido
14/09/2004
Sim está na memória, mas seria isto o problema?
Grato
Grato
GOSTEI 0
Paulo_amorim
14/09/2004
Sim está na memória, mas seria isto o problema?
Grato
Olá
Provavelmente. Access violation na chamada de uma procedure que eh de outro form normalmente eh porque lee não está criaod...
tente fazer um teste: coloque um breakpoint exatamente onde vai dar o erro
Daí coloque um Watch com o Form duvidoso... na hora que ele parar no breakpoint veja oq ue aparece no watch.
Se aparecer NIL, voilá!
Se aparecer [csinheritable] (eu acho que eh isso) então ele está de fato criado e não sei o que seria :?
Espeor que ajude
Até+
GOSTEI 0
Placido
14/09/2004
Paulo muito obrigado mesmo pela dica, fiz o que você orientou e não deu outra, coloquei o comando para criar o formulário e resolveu o problema.
Como esta tela de pesquisa é genérica eu estava criando este formulário
no Form Principal, acho que o form estava sendo fechado num outro form.
Muito obrigafo fique com Deus.
Plácido
Como esta tela de pesquisa é genérica eu estava criando este formulário
no Form Principal, acho que o form estava sendo fechado num outro form.
Muito obrigafo fique com Deus.
Plácido
GOSTEI 0