acess violation ????

Delphi

31/05/2006

pessoall estou com este problema quando clico num botao e chama um relatorio feirto no quic report. impressao de etiquetas.

procedure TFrmAniversariante.BitBtn2Click(Sender: TObject);

const
SeparadorCampoValor = ´ ´;
SeparadorCampo = ´ ´; { Quebra de linha }
SeparadorRegistro = ´;´;
VAR
sqlstr:string ;
begin
try
{comando para filtrar a tabela por data de nacimento}
sqlstr:=´select * from clientes ´;
sqlstr:=sqlstr+ ´ where extract(month from dt_nasc) between ´;
sqlstr:=sqlstr+ trim(inttostr(SpinIni.value)) +´ and ´+ trim(inttostr(SpinFim.value));
sqlstr:=sqlstr+´ order by dt_nasc asc´ ;
QRLpac.SQLfilter.Close; <---- access violation o que pode ser ????
QRLpac.SQLfilter.SQL.Clear;
QRLpac.SQLfilter.sql.Add(sqlstr);
QRLpac.SQLfilter.Open;
QRLpac.SQLfilter.Active:=true;
QRLpac.Preview;
except
//strfilter:=´erro´;
end;
end;

nao consigo imprimir as minhas etiquetas......


Pereiramarcos

Pereiramarcos

Curtidas 0

Respostas

Pereiramarcos

Pereiramarcos

31/05/2006

consegui, agora ele nao executa esta query

sqlstr:=´select * from clientes ´;
sqlstr:=sqlstr+ ´ where extract(month from dt_nasc) between ´;
sqlstr:=sqlstr+ trim(inttostr(SpinIni.value)) +´ and ´+ trim(inttostr(SpinFim.value));
sqlstr:=sqlstr+´ order by dt_nasc asc´ ;


ele so executa a query original que esta no sqlquery

o que eu tenho que fazer???????


GOSTEI 0
Rjun

Rjun

31/05/2006

Coloque um trecho maior do seu código. Está dando algum erro ou ele só não executa a query?


GOSTEI 0
Pereiramarcos

Pereiramarcos

31/05/2006

valeu rogerio, eu agora ja executo a query, mas o filtro do report so faz uma vez todas as vezes posteriores imprime somente o que foi selecionado na primeira vez....


valeu cara


GOSTEI 0
Rjun

Rjun

31/05/2006

Olha, vendo seu código não percebi nada de errado, a não ser o fato de você dar um Open e depois definir True para Active. Dei uma modificada para usar parâmetros em vez de enfiar o SQL dentro do seu código.

procedure TFrmAniversariante.BitBtn2Click(Sender: TObject); 
const 
  SeparadorCampoValor = ´ ´; 
  SeparadorCampo = ´ ´; { Quebra de linha } 
  SeparadorRegistro = ´;´; 
  ComandoSQL = ´SELECT * FROM Clientes WHERE EXTRACT(MONTH FROM Dt_Nasc) BETWEEN :Inicial AND :Final ORDER BY Dt_Nasc ASC´;

begin 
  { comando para filtrar a tabela por data de nacimento }  
  QRLpac.SQLfilter.SQL.Clear; 
  QRLpac.SQLfilter.sql.Add(ComandoSQL ); 
  QRLPac.ParamByName(´Inicial´).AsInteger := spinIni.Value;
  QRLPac.ParamByName(´Final´).AsInteger := spinFim.Value;
  QRLpac.SQLfilter.Open; 
  try
    QRLpac.Preview; 
  finally
    QRLPac.SQLFilter.Close;
  end;
end; 



GOSTEI 0
Pereiramarcos

Pereiramarcos

31/05/2006

Obirgado Rogerio, mas agora nao apareceu nem um registro.


deixa eu explicar uma coisa

QRLpac - Nome do form com o relatorio
SQLfilter - nome do SQLQuery

dentro deste form --> um trio SQLQuery;DATAsetprov e um Clientdataset

e dentro do form que eu chamo tem aquele codigo, ja estou ficando confuso....


GOSTEI 0
Pereiramarcos

Pereiramarcos

31/05/2006

Olha, vendo seu código não percebi nada de errado, a não ser o fato de você dar um Open e depois definir True para Active. Dei uma modificada para usar parâmetros em vez de enfiar o SQL dentro do seu código.
procedure TFrmAniversariante.BitBtn2Click(Sender: TObject); 
const 
  SeparadorCampoValor = ´ ´; 
  SeparadorCampo = ´ ´; { Quebra de linha } 
  SeparadorRegistro = ´;´; 
  ComandoSQL = ´SELECT * FROM Clientes WHERE EXTRACT(MONTH FROM Dt_Nasc) BETWEEN :Inicial AND :Final ORDER BY Dt_Nasc ASC´;

begin 
  { comando para filtrar a tabela por data de nacimento } 
 QRLpac.SQLfilter.SQL.Clear; 
  QRLpac.SQLfilter.sql.Add(ComandoSQL ); 
  QRLPac.ParamByName(´Inicial´).AsInteger := spinIni.Value;
  QRLPac.ParamByName(´Final´).AsInteger := spinFim.Value;
  QRLpac.SQLfilter.Open; 
  try
    QRLpac.Preview; 
  finally
    QRLPac.SQLFilter.Close;
  end;
end; 


somente apos a colocacao destas duas linha
QRLpac.cdsAniver.Active:=false ;
QRLpac.QSQLAniver.Close ;

agora funciona exatamente como eu queria.....

posso emitir rel de etiquetas com o filtro que eu quiser...

Value muito obrigado pelas dica seu codigo ficou mais organizado....


:P


GOSTEI 0
POSTAR