Array
(
)

access vilation o que pode ser???

Placido
   - 14 set 2004

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


Nelson_prog
   - 14 set 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


Placido
   - 14 set 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


Otto
   - 14 set 2004

Olá, o form ´FrmPesquisaGeral´ esta aberto quando essa rotina é executada?!


Placido
   - 16 set 2004

Não o formulário de pesquisa é aberto no momento que o botão pesquisar
é acionado...
Grato


Paulo_amorim
   - 16 set 2004


Citação:
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é+


Placido
   - 16 set 2004

Sim está na memória, mas seria isto o problema?
Grato


Paulo_amorim
   - 16 set 2004


Citação:
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é+


Placido
   - 17 set 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