Fórum DELPHI: Ajudem-me a criar uma pesquisa no banco de dados onde eu consiga obter todos os nomes repetidos dentro de um mês ordenados #533234

01/10/2015

0

Pessoal,

Eu sou iniciante e gostaria que me ajudassem com um código no delphi. Eu crie um banco de dados no firebird contendo três colunas(código,nome,turma,data). Esse sistema cadastra os alunos por dia que chegam atrasados. Porém eu gostaria que me ajudassem com um código utilizando o SIMPLEDATASET na qual eu fizer uma pesquisa no banco de dados através de dois DATETIMEPICKER com data inicial(datetimepicker1) e data final(datetimepicker2) onde obterei todos os nomes dos alunos que se repetiram no mês por chegarem atrasados e exibidos no DBGRID. Inclusive gostaria de gerar um relatorio através do FASTREPORT. Lembrando que estou usando o DATAMODULE.

FORM PRINCIPAL

[img]http://arquivo.devmedia.com.br/forum/imagem/456595-20151001-064747.jpg[/img]


FORM DE PESQUISA

[img]http://arquivo.devmedia.com.br/forum/imagem/456595-20151001-064838.jpg[/img]
Eunapio

Eunapio

Responder

Posts

01/10/2015

Raimundo Pereira

//----------------------------------- DECLARE AS VARIÁVEIS ABAIXO
VAR
CONV_DE:STRING;
CONV_ATE:STRING;
SCRIPT_SELECT:STRING;
CLIENTE:STRING;
//----------------------------------------------------------------------

//----------------------------------------------------------------------
DATETIMEPICKER1 RENOMEI PARA DE_DATA
DATETIMEPICKER2 RENOMEI PARA ATE_DATA
//----------------------------------------------------------------------


PROCEDIMENTO DO BUTTON PESQUISAR
BEGIN

//-------------------------------------------------- // AQUI VERIFICA SE FOI DIGITADO ALGO NO EDIT NOME E PREECHE A STRING CLIENTE
if (Ed_nome_cliente.Text<>'') then
BEGIN
CLIENTE:=' AND NOME LIKE ''%'+Ed_nome_cliente.Text+'%''';
END
ELSE
BEGIN
CLIENTE:=' AND NOME IS not NULL';
END;

//--------------------------------------------------

CONV_DE:='';
CONV_ATE:='';

CONV_DE:=DateToStr(DE_DATA.Date); //AQUI ELE VAI LANÇAR A DATA INFORMADA NO DATEPICKER1 PARA A VARIÁVEL CONV_DE
CONV_ATE:=DateToStr(ATE_DATA.Date); //AQUI ELE VAI LANÇAR A DATA INFORMADA NO DATEPICKER2 PARA A VARIÁVEL CONV_ATE


CONV_DE:=StringReplace(CONV_DE,'/','.', [rfReplaceAll, rfIgnoreCase]); //AQUI ELE VAI SUBSTITUIR A / POR .- FIRIBIRD ARMAZENA DATAS POR PONTO
CONV_ATE:=StringReplace(CONV_ATE,'/','.', [rfReplaceAll, rfIgnoreCase]); ///AQUI ELE VAI SUBSTITUIR A / POR .- FIRIBIRD ARMAZENA DATAS POR PONTO
DM.COLETA.Close;


//------------------------------------------------------------------------------------------------------------------------------------------------ CONSTRUÇÃO DO SELECT
SCRIPT_SELECT:='SELECT * FROM SUA_TABELA WHERE '+CLIENTE+' AND DATA BETWEEN '''
+CONV_DE+''' AND '''
+CONV_ATE+''''+
' ORDER BY NOME;';





//--- AQUI ELE ENVIA O SELECT PARA A SUA QRY

DM.SUA_QUERY.SQL.Text:=SCRIPT_SELECT;
DM.SUA_QUERY.OPEN;

if DM.SUA_QUERY.RecordCount=0 then
BEGIN
Application.MessageBox('Nenhum registro encontrado','Resultado da Consulta');
END
else
begin
DM.SUA_QUERY.FetchAll;
end;
Responder

Gostei + 0

02/10/2015

Eunapio

FecthAll não está aceitando através do SIMPLEDATASET?
Responder

Gostei + 0

02/10/2015

Eunapio

Na verdade, eu gostaria que o código verificasse no mês específicado os nomes dos alunos que repetem mais de 3 vezes, isto é, já chegaram mais de 3 vezes atrasados no mês especificado e mostrasse no DBgrid. Estou usando o SIMPLEDATASET e comando ou propriedade FetchAll não está dando certo porque o delphi menciona erro : Tsimpledataset no contain member name?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar