InputQuery relatorio
Boa Tarde amigos!!!
No meu form principal tenho opções de relatorio apartir de um mainmenu,mas estou querendo criar uma opção com InputQuery,tipo a pessoa digita um nome e o tipo de funcionario e é feito uma pesquisa se existir o tal funcionario o formulario de relatorio é exibido somente
com o nome do funcionario e tipo digitados no inputquery.
É preciso digitar o tipo pois posso ter funcionarios com o mesmo nome ou matricula iguais oque diferencia é o tipo pois pode ser prestador de outra empresa.
No meu form principal tenho opções de relatorio apartir de um mainmenu,mas estou querendo criar uma opção com InputQuery,tipo a pessoa digita um nome e o tipo de funcionario e é feito uma pesquisa se existir o tal funcionario o formulario de relatorio é exibido somente
com o nome do funcionario e tipo digitados no inputquery.
É preciso digitar o tipo pois posso ter funcionarios com o mesmo nome ou matricula iguais oque diferencia é o tipo pois pode ser prestador de outra empresa.
Rogerio Sena
Curtidas 0
Respostas
Leonardo Xavier
24/11/2011
Já tentou com locasesensitive?
GOSTEI 0
Rogerio Sena
24/11/2011
Ja tentei mas nao estou conseguindo.
GOSTEI 0
Rogerio Sena
24/11/2011
coloquei uma SQLQuery1 no form principal para fazer a pesquisa e se for localizado o registro digitado na inputquery abre o formulario de relatorio.
procedure TFrmPrincipal.Filial1Click(Sender: TObject);
var filial:String;
begin
if InputQuery(Relatório por Filial,Digite o Nome da Filial,filial)then
SQLQuery1.Close;
SQLQuery1.SQL.Text:=
Select FILIAL from SEPARACAO where FILIAL = +
QuotedStr(filial);
SQLQuery1.Open;
if not SQLQuery1.IsEmpty then
begin
TFrmRelSepFilial.Execute;
exit;
end
else
if SQLQuery1.IsEmpty then
begin
SQLQuery1.Close;
application.MessageBox(!!Filial Não Encontrada!!,Informação,64);
end;
Ate aqui tudo bem a pesquisa é feita e se for encontrada a filial digitada é chamado o formulario de relatorio.
No formulario tenho um clientdataset que esta configurado assim : select * from SEPARACAO, Gostaria de saber se tem como eu configurar para listar apenas os registros que possuirem o nome da filial digitada na inputquery pois nao estou conseguindo pegar o valor da variavel filial que esta no form principal e adcionar no codigo da sql do clientdataset e por isso deixei assim para nao dar erro.
Existe uma função dentro do form relatorio e por isso o clientdataset tem que estar configurado na criação do form.
O clientdataset tem que ser configurado antes do Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
!!!!ALGUEM PODE ME AJUDAR COM UMA SQL!!!!!!!
class function TFrmRelSepFilial.Execute(Save: Boolean): Boolean;
begin
result:= false;
Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
try
FrmRelSepFilial.cdsRelatorio.Open;
if FrmRelSepFilial.cdsRelatorio.RecordCount > 0 then
begin
FrmRelSepFilial.SaveDialog1.FileName := FrmRelSepFilial.RLReport1.Title;
{Se é para salvar mas o usuário clicou
em Cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if Save and (not FrmRelSepFilial.SaveDialog1.Execute) then
exit;
{Prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
FrmRelSepFilial.RLReport1.Prepare;
{Pegar o total de páginas e armazenar na variável privada totalPgs}
FrmRelSepFilial.totalPgs := FrmRelSepFilial.RLReport1.LastPageNumber;
if Save then
FrmRelSepFilial.RLReport1.SaveToFile(FrmRelSepFilial.SaveDialog1.FileName)
else FrmRelSepFilial.RLReport1.PreviewModal;
{Você pode usar FrmRelProdutos.RLReport1.Preview();}
result:= true;
end
else Application.MessageBox(
Não existe nenhum registro a ser impresso,
Informação,
MB_ICONINFORMATION);
finally
FrmRelSepFilial.Free;
end;
end;
procedure TFrmPrincipal.Filial1Click(Sender: TObject);
var filial:String;
begin
if InputQuery(Relatório por Filial,Digite o Nome da Filial,filial)then
SQLQuery1.Close;
SQLQuery1.SQL.Text:=
Select FILIAL from SEPARACAO where FILIAL = +
QuotedStr(filial);
SQLQuery1.Open;
if not SQLQuery1.IsEmpty then
begin
TFrmRelSepFilial.Execute;
exit;
end
else
if SQLQuery1.IsEmpty then
begin
SQLQuery1.Close;
application.MessageBox(!!Filial Não Encontrada!!,Informação,64);
end;
Ate aqui tudo bem a pesquisa é feita e se for encontrada a filial digitada é chamado o formulario de relatorio.
No formulario tenho um clientdataset que esta configurado assim : select * from SEPARACAO, Gostaria de saber se tem como eu configurar para listar apenas os registros que possuirem o nome da filial digitada na inputquery pois nao estou conseguindo pegar o valor da variavel filial que esta no form principal e adcionar no codigo da sql do clientdataset e por isso deixei assim para nao dar erro.
Existe uma função dentro do form relatorio e por isso o clientdataset tem que estar configurado na criação do form.
O clientdataset tem que ser configurado antes do Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
!!!!ALGUEM PODE ME AJUDAR COM UMA SQL!!!!!!!
class function TFrmRelSepFilial.Execute(Save: Boolean): Boolean;
begin
result:= false;
Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
try
FrmRelSepFilial.cdsRelatorio.Open;
if FrmRelSepFilial.cdsRelatorio.RecordCount > 0 then
begin
FrmRelSepFilial.SaveDialog1.FileName := FrmRelSepFilial.RLReport1.Title;
{Se é para salvar mas o usuário clicou
em Cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if Save and (not FrmRelSepFilial.SaveDialog1.Execute) then
exit;
{Prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
FrmRelSepFilial.RLReport1.Prepare;
{Pegar o total de páginas e armazenar na variável privada totalPgs}
FrmRelSepFilial.totalPgs := FrmRelSepFilial.RLReport1.LastPageNumber;
if Save then
FrmRelSepFilial.RLReport1.SaveToFile(FrmRelSepFilial.SaveDialog1.FileName)
else FrmRelSepFilial.RLReport1.PreviewModal;
{Você pode usar FrmRelProdutos.RLReport1.Preview();}
result:= true;
end
else Application.MessageBox(
Não existe nenhum registro a ser impresso,
Informação,
MB_ICONINFORMATION);
finally
FrmRelSepFilial.Free;
end;
end;
GOSTEI 0
Rogerio Sena
24/11/2011
AINDA ESPERO AJUDA POR FAVOR ALGUM CODIGO !!!!!
GOSTEI 0
Rogerio Sena
24/11/2011
Bom dia colegas!! resolvi o problema foi simples, criei uma variavel (xnome)na seção publica do form principal e outra variavel (ynome) dentro da função do form relatorio.Passei o valor da variavel (xnome) para a variavel (ynome) = ynome :=(xnome).
form Principal
procedure TFrmPrincipal.Filial1Click(Sender: TObject);
begin
xnome:=;
if InputQuery(Relatório por Filial,Digite o Nome da Filial,xnome) then
SQLQuery1.Close;
SQLQuery1.SQL.Text:=
Select FILIAL from SEPARACAO where FILIAL = +
QuotedStr(xnome);
SQLQuery1.Open;
if not SQLQuery1.IsEmpty then
begin
TFrmRelSepFilial.Execute;
exit;
end
else
if SQLQuery1.IsEmpty then
begin
SQLQuery1.Close;
application.MessageBox(!!Filial Não Encontrada!!,Informação,64);
end;
Form Relatorio
class function TFrmRelSepFilial.Execute(Save:boolean): boolean;
var
ynome:string;
begin
ynome:=xnome;
Result:= false;
{Esta linha deve ser recortada do arquivo do projeto
(pressione CTRL+F12 para abrir o projeto)}
Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
try
with FrmRelSepFilial do
FrmRelSepFilial.cdsRelatorio.Close;
FrmRelSepFilial.cdsRelatorio.Params.ParamByName(FILIAL).AsString:=(ynome);
FrmRelSepFilial.cdsRelatorio.Open;
FrmRelSepFilial.cdsRelatorio.FetchParams;
if FrmRelSepFilial.cdsRelatorio.RecordCount > 0 then
begin
FrmRelSepFilial.SaveDialog1.FileName := FrmRelSepFilial.RLReport1.Title;
{Se é para salvar mas o usuário clicou
em Cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if Save and (not FrmRelSepFilial.SaveDialog1.Execute) then
exit;
{Prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
FrmRelSepFilial.RLReport1.Prepare;
{Pegar o total de páginas e armazenar na variável privada totalPgs}
FrmRelSepFilial.totalPgs := FrmRelSepFilial.RLReport1.LastPageNumber;
if Save then
FrmRelSepFilial.RLReport1.SaveToFile(FrmRelSepFilial.SaveDialog1.FileName)
else FrmRelSepFilial.RLReport1.PreviewModal;
{Você pode usar FrmRelProdutos.RLReport1.Preview();}
result:= true;
end
else Application.MessageBox(
Não existe nenhum registro a ser impresso,
Informação,
MB_ICONINFORMATION);
finally
FrmRelSepFilial.Free;
end;
end;
Obrigado a colegas por tentarem me ajudar e se alguem puder encerre o post pra mim pois nao estou achando a opção de finalizar o post.....
form Principal
procedure TFrmPrincipal.Filial1Click(Sender: TObject);
begin
xnome:=;
if InputQuery(Relatório por Filial,Digite o Nome da Filial,xnome) then
SQLQuery1.Close;
SQLQuery1.SQL.Text:=
Select FILIAL from SEPARACAO where FILIAL = +
QuotedStr(xnome);
SQLQuery1.Open;
if not SQLQuery1.IsEmpty then
begin
TFrmRelSepFilial.Execute;
exit;
end
else
if SQLQuery1.IsEmpty then
begin
SQLQuery1.Close;
application.MessageBox(!!Filial Não Encontrada!!,Informação,64);
end;
Form Relatorio
class function TFrmRelSepFilial.Execute(Save:boolean): boolean;
var
ynome:string;
begin
ynome:=xnome;
Result:= false;
{Esta linha deve ser recortada do arquivo do projeto
(pressione CTRL+F12 para abrir o projeto)}
Application.CreateForm(TFrmRelSepFilial, FrmRelSepFilial);
try
with FrmRelSepFilial do
FrmRelSepFilial.cdsRelatorio.Close;
FrmRelSepFilial.cdsRelatorio.Params.ParamByName(FILIAL).AsString:=(ynome);
FrmRelSepFilial.cdsRelatorio.Open;
FrmRelSepFilial.cdsRelatorio.FetchParams;
if FrmRelSepFilial.cdsRelatorio.RecordCount > 0 then
begin
FrmRelSepFilial.SaveDialog1.FileName := FrmRelSepFilial.RLReport1.Title;
{Se é para salvar mas o usuário clicou
em Cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if Save and (not FrmRelSepFilial.SaveDialog1.Execute) then
exit;
{Prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
FrmRelSepFilial.RLReport1.Prepare;
{Pegar o total de páginas e armazenar na variável privada totalPgs}
FrmRelSepFilial.totalPgs := FrmRelSepFilial.RLReport1.LastPageNumber;
if Save then
FrmRelSepFilial.RLReport1.SaveToFile(FrmRelSepFilial.SaveDialog1.FileName)
else FrmRelSepFilial.RLReport1.PreviewModal;
{Você pode usar FrmRelProdutos.RLReport1.Preview();}
result:= true;
end
else Application.MessageBox(
Não existe nenhum registro a ser impresso,
Informação,
MB_ICONINFORMATION);
finally
FrmRelSepFilial.Free;
end;
end;
Obrigado a colegas por tentarem me ajudar e se alguem puder encerre o post pra mim pois nao estou achando a opção de finalizar o post.....
GOSTEI 0
Rogerio Sena
24/11/2011
bom dia colegas!! resolvi o problema foi simples, criei uma variavel (xnome)na seção publica do form principal e outra variavel (ynome) dentro da função do form relatorio.passei o valor da variavel (xnome) para a variavel (ynome) = ynome :=(xnome).
form principal
procedure tfrmprincipal.filial1click(sender: tobject);
begin
xnome:=;
if inputquery(relatório por filial,digite o nome da filial,xnome) then
sqlquery1.close;
sqlquery1.sql.text:=
select filial from separacao where filial = +
quotedstr(xnome);
sqlquery1.open;
if not sqlquery1.isempty then
begin
tfrmrelsepfilial.execute;
exit;
end
else
if sqlquery1.isempty then
begin
sqlquery1.close;
application.messagebox(!!filial não encontrada!!,informação,64);
end;
form relatorio
class function tfrmrelsepfilial.execute(save:boolean): boolean;
var
ynome:string;
begin
ynome:=xnome;
result:= false;
{esta linha deve ser recortada do arquivo do projeto
(pressione ctrl+f12 para abrir o projeto)}
application.createform(tfrmrelsepfilial, frmrelsepfilial);
try
with frmrelsepfilial do
frmrelsepfilial.cdsrelatorio.close;
frmrelsepfilial.cdsrelatorio.params.parambyname(filial).asstring:=(ynome);
frmrelsepfilial.cdsrelatorio.open;
frmrelsepfilial.cdsrelatorio.fetchparams;
if frmrelsepfilial.cdsrelatorio.recordcount > 0 then
begin
frmrelsepfilial.savedialog1.filename := frmrelsepfilial.rlreport1.title;
{se é para salvar mas o usuário clicou
em cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if save and (not frmrelsepfilial.savedialog1.execute) then
exit;
{prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
frmrelsepfilial.rlreport1.prepare;
{pegar o total de páginas e armazenar na variável privada totalpgs}
frmrelsepfilial.totalpgs := frmrelsepfilial.rlreport1.lastpagenumber;
if save then
frmrelsepfilial.rlreport1.savetofile(frmrelsepfilial.savedialog1.filename)
else frmrelsepfilial.rlreport1.previewmodal;
{você pode usar frmrelprodutos.rlreport1.preview();}
result:= true;
end
else application.messagebox(
não existe nenhum registro a ser impresso,
informação,
mb_iconinformation);
finally
frmrelsepfilial.free;
end;
end;
obrigado a colegas por tentarem me ajudar e se alguem puder encerre o post pra mim pois nao estou achando a opção de finalizar o post.........
form principal
procedure tfrmprincipal.filial1click(sender: tobject);
begin
xnome:=;
if inputquery(relatório por filial,digite o nome da filial,xnome) then
sqlquery1.close;
sqlquery1.sql.text:=
select filial from separacao where filial = +
quotedstr(xnome);
sqlquery1.open;
if not sqlquery1.isempty then
begin
tfrmrelsepfilial.execute;
exit;
end
else
if sqlquery1.isempty then
begin
sqlquery1.close;
application.messagebox(!!filial não encontrada!!,informação,64);
end;
form relatorio
class function tfrmrelsepfilial.execute(save:boolean): boolean;
var
ynome:string;
begin
ynome:=xnome;
result:= false;
{esta linha deve ser recortada do arquivo do projeto
(pressione ctrl+f12 para abrir o projeto)}
application.createform(tfrmrelsepfilial, frmrelsepfilial);
try
with frmrelsepfilial do
frmrelsepfilial.cdsrelatorio.close;
frmrelsepfilial.cdsrelatorio.params.parambyname(filial).asstring:=(ynome);
frmrelsepfilial.cdsrelatorio.open;
frmrelsepfilial.cdsrelatorio.fetchparams;
if frmrelsepfilial.cdsrelatorio.recordcount > 0 then
begin
frmrelsepfilial.savedialog1.filename := frmrelsepfilial.rlreport1.title;
{se é para salvar mas o usuário clicou
em cancelar na janela se seleção do nome do arquivo
para o relatório, então sai da função sem gerar
o relatório.}
if save and (not frmrelsepfilial.savedialog1.execute) then
exit;
{prepara o relatório antes de imprimir para descobrir
quantas páginas ele dará.}
frmrelsepfilial.rlreport1.prepare;
{pegar o total de páginas e armazenar na variável privada totalpgs}
frmrelsepfilial.totalpgs := frmrelsepfilial.rlreport1.lastpagenumber;
if save then
frmrelsepfilial.rlreport1.savetofile(frmrelsepfilial.savedialog1.filename)
else frmrelsepfilial.rlreport1.previewmodal;
{você pode usar frmrelprodutos.rlreport1.preview();}
result:= true;
end
else application.messagebox(
não existe nenhum registro a ser impresso,
informação,
mb_iconinformation);
finally
frmrelsepfilial.free;
end;
end;
obrigado a colegas por tentarem me ajudar e se alguem puder encerre o post pra mim pois nao estou achando a opção de finalizar o post.........
GOSTEI 0