select por semana
Boa tarde Pessoal!
meu primeiro tópico aqui no fórum e gostaria muito da ajuda de vcs!
preciso de alguma formar de gerar um relatório ou gráfico que traga do banco as vendas efetuadas dentro das semanas de um mês !
exemplo:
tenho 50 vendas no período 01/11/2013 a 30/11/2013:
primeira semana:
segunda semana :
terceira semana:
quarta semana:
com base nisso gostara de saber quais vendas foram efetuadas dentro de cada semana desse mês;
meu primeiro tópico aqui no fórum e gostaria muito da ajuda de vcs!
preciso de alguma formar de gerar um relatório ou gráfico que traga do banco as vendas efetuadas dentro das semanas de um mês !
exemplo:
tenho 50 vendas no período 01/11/2013 a 30/11/2013:
primeira semana:
segunda semana :
terceira semana:
quarta semana:
com base nisso gostara de saber quais vendas foram efetuadas dentro de cada semana desse mês;
Marcio Alves
Curtidas 0
Respostas
Alessandro Yamasaki
20/12/2013
Qual o banco de dados q vc está usando? Se for o SQL Server, vc pode usar o DATEPART que agrupará por semana.
[]s
[]s
GOSTEI 0
Marcio Alves
20/12/2013
estou usando .fdb Firebird
Qual o banco de dados q vc está usando? Se for o SQL Server, vc pode usar o DATEPART que agrupará por semana.
[]s
[]s
GOSTEI 0
Alex Lekao
20/12/2013
eu me intromendo... rssr
se nao me engano no Firebird eh Extract que vc tera que usar.
caso queira dar uma pesquisada seque link
[url]http://www.firebirdsql.org/refdocs/langrefupd15-extract.html[/url]
se nao me engano no Firebird eh Extract que vc tera que usar.
caso queira dar uma pesquisada seque link
[url]http://www.firebirdsql.org/refdocs/langrefupd15-extract.html[/url]
GOSTEI 0
Marcio Alves
20/12/2013
Pois he amigo ele serve estou ultilizando ele no meu codigo porem quero agupar o retorno dentro da semana corrente
ex: dia 1 a 7 primeria semana..........
ex: dia 1 a 7 primeria semana..........
eu me intromendo... rssr
se nao me engano no Firebird eh Extract que vc tera que usar.
caso queira dar uma pesquisada seque link
[url]http://www.firebirdsql.org/refdocs/langrefupd15-extract.html[/url]
se nao me engano no Firebird eh Extract que vc tera que usar.
caso queira dar uma pesquisada seque link
[url]http://www.firebirdsql.org/refdocs/langrefupd15-extract.html[/url]
GOSTEI 0
Alex Lekao
20/12/2013
entendi...
nao sei se no firebird eh assim, mas talvez vc tera que usar o Case e montar...
eu uso no SQL Server, o case para montar baseado em HOras, Primeira hora, segunda hora, etc...
nao sei se no firebird eh assim, mas talvez vc tera que usar o Case e montar...
eu uso no SQL Server, o case para montar baseado em HOras, Primeira hora, segunda hora, etc...
GOSTEI 0
Marcos Saffran
20/12/2013
Olá Marcio Alves,
fiz um programa, com uma função que retorna as datas iniciais e finais de cada semana, sendo que a semana inicia na segunda-feira.
Ele possui dois edit, (mes e ano), 10 labels (inicio e fim de cada semana) e um botão para calcular.
Se você quiser que a semana inicie no domingo, substitua a função 'DayOfTheWeek' pela 'DayOfWeek'.
Espero que te ajude.
fiz um programa, com uma função que retorna as datas iniciais e finais de cada semana, sendo que a semana inicia na segunda-feira.
Ele possui dois edit, (mes e ano), 10 labels (inicio e fim de cada semana) e um botão para calcular.
Se você quiser que a semana inicie no domingo, substitua a função 'DayOfTheWeek' pela 'DayOfWeek'.
Espero que te ajude.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TSemanas = Record
Semana1Ini, Semana2Ini, Semana3Ini, Semana4Ini, Semana5Ini : TDate;
Semana1Fim, Semana2Fim, Semana3Fim, Semana4Fim, Semana5Fim : TDate;
end;
TForm1 = class(TForm)
edtMes: TEdit;
edtAno: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
lblSemana1Fim: TLabel;
lblSemana1Ini: TLabel;
lblSemana2Fim: TLabel;
lblSemana3Fim: TLabel;
lblSemana4Fim: TLabel;
lblSemana5Fim: TLabel;
lblSemana2Ini: TLabel;
lblSemana3Ini: TLabel;
lblSemana4Ini: TLabel;
lblSemana5Ini: TLabel;
procedure Button1Click(Sender: TObject);
private
Function Separa(mes, ano : Integer) : TSemanas;
{mes = mês desejado
ano = ano desejado}
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DateUtils;
{$R *.dfm}
{ TForm1 }
function TForm1.Separa(mes, ano: Integer): TSemanas;
var
DataIni, DataFinal : TDate;
DiaDaSemana : Integer;
begin
DataIni := StrToDate('01/' + IntToStr(mes) + '/' + IntToStr(ano));
DataFinal := IncDay(DataIni, (DaysInMonth(DataIni) - 1));
DiaDaSemana := DayOfTheWeek(DataIni);
result.Semana1Ini := DataIni;
result.Semana1Fim := IncDay(DataIni, (7 - DiaDaSemana));
result.Semana2Ini := IncDay(result.Semana1Fim, 1);
result.Semana2Fim := IncDay(result.Semana2Ini, 6);
result.Semana3Ini := IncDay(result.Semana2Fim, 1);
result.Semana3Fim := IncDay(result.Semana3Ini, 6);
result.Semana4Ini := IncDay(result.Semana3Fim, 1);
result.Semana4Fim := IncDay(result.Semana4Ini, 6);
if result.Semana4Fim >= DataFinal then
begin
result.Semana4Fim := DataFinal;
exit;
end;
result.Semana5Ini := IncDay(result.Semana4Fim, 1);
result.Semana5Fim := DataFinal;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Semana : TSemanas;
begin
Semana := Separa(StrToInt(edtMes.Text), StrToInt(edtAno.Text));
lblSemana1Ini.Caption := DateToStr(Semana.Semana1Ini);
lblSemana2Ini.Caption := DateToStr(Semana.Semana2Ini);
lblSemana3Ini.Caption := DateToStr(Semana.Semana3Ini);
lblSemana4Ini.Caption := DateToStr(Semana.Semana4Ini);
lblSemana5Ini.Caption := DateToStr(Semana.Semana5Ini);
lblSemana1Fim.Caption := DateToStr(Semana.Semana1Fim);
lblSemana2Fim.Caption := DateToStr(Semana.Semana2Fim);
lblSemana3Fim.Caption := DateToStr(Semana.Semana3Fim);
lblSemana4Fim.Caption := DateToStr(Semana.Semana4Fim);
lblSemana5Fim.Caption := DateToStr(Semana.Semana5Fim);
end;
end.
GOSTEI 0
Marcio Alves
20/12/2013
Seu codigo parece ser muito bom vou reproduzi-lo aqui e ver se consigo o resultado que eu espero!
Olá Marcio Alves,
fiz um programa, com uma função que retorna as datas iniciais e finais de cada semana, sendo que a semana inicia na segunda-feira.
Ele possui dois edit, (mes e ano), 10 labels (inicio e fim de cada semana) e um botão para calcular.
Se você quiser que a semana inicie no domingo, substitua a função 'DayOfTheWeek' pela 'DayOfWeek'.
Espero que te ajude.
fiz um programa, com uma função que retorna as datas iniciais e finais de cada semana, sendo que a semana inicia na segunda-feira.
Ele possui dois edit, (mes e ano), 10 labels (inicio e fim de cada semana) e um botão para calcular.
Se você quiser que a semana inicie no domingo, substitua a função 'DayOfTheWeek' pela 'DayOfWeek'.
Espero que te ajude.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TSemanas = Record
Semana1Ini, Semana2Ini, Semana3Ini, Semana4Ini, Semana5Ini : TDate;
Semana1Fim, Semana2Fim, Semana3Fim, Semana4Fim, Semana5Fim : TDate;
end;
TForm1 = class(TForm)
edtMes: TEdit;
edtAno: TEdit;
Label1: TLabel;
Label2: TLabel;
Button1: TButton;
lblSemana1Fim: TLabel;
lblSemana1Ini: TLabel;
lblSemana2Fim: TLabel;
lblSemana3Fim: TLabel;
lblSemana4Fim: TLabel;
lblSemana5Fim: TLabel;
lblSemana2Ini: TLabel;
lblSemana3Ini: TLabel;
lblSemana4Ini: TLabel;
lblSemana5Ini: TLabel;
procedure Button1Click(Sender: TObject);
private
Function Separa(mes, ano : Integer) : TSemanas;
{mes = mês desejado
ano = ano desejado}
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses DateUtils;
{$R *.dfm}
{ TForm1 }
function TForm1.Separa(mes, ano: Integer): TSemanas;
var
DataIni, DataFinal : TDate;
DiaDaSemana : Integer;
begin
DataIni := StrToDate('01/' + IntToStr(mes) + '/' + IntToStr(ano));
DataFinal := IncDay(DataIni, (DaysInMonth(DataIni) - 1));
DiaDaSemana := DayOfTheWeek(DataIni);
result.Semana1Ini := DataIni;
result.Semana1Fim := IncDay(DataIni, (7 - DiaDaSemana));
result.Semana2Ini := IncDay(result.Semana1Fim, 1);
result.Semana2Fim := IncDay(result.Semana2Ini, 6);
result.Semana3Ini := IncDay(result.Semana2Fim, 1);
result.Semana3Fim := IncDay(result.Semana3Ini, 6);
result.Semana4Ini := IncDay(result.Semana3Fim, 1);
result.Semana4Fim := IncDay(result.Semana4Ini, 6);
if result.Semana4Fim >= DataFinal then
begin
result.Semana4Fim := DataFinal;
exit;
end;
result.Semana5Ini := IncDay(result.Semana4Fim, 1);
result.Semana5Fim := DataFinal;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Semana : TSemanas;
begin
Semana := Separa(StrToInt(edtMes.Text), StrToInt(edtAno.Text));
lblSemana1Ini.Caption := DateToStr(Semana.Semana1Ini);
lblSemana2Ini.Caption := DateToStr(Semana.Semana2Ini);
lblSemana3Ini.Caption := DateToStr(Semana.Semana3Ini);
lblSemana4Ini.Caption := DateToStr(Semana.Semana4Ini);
lblSemana5Ini.Caption := DateToStr(Semana.Semana5Ini);
lblSemana1Fim.Caption := DateToStr(Semana.Semana1Fim);
lblSemana2Fim.Caption := DateToStr(Semana.Semana2Fim);
lblSemana3Fim.Caption := DateToStr(Semana.Semana3Fim);
lblSemana4Fim.Caption := DateToStr(Semana.Semana4Fim);
lblSemana5Fim.Caption := DateToStr(Semana.Semana5Fim);
end;
end.
GOSTEI 0
Perivaldo Martins
20/12/2013
Não sei se o colega já solucionou o problema, mas creio q tem como fazer isso via SP no banco, já tem um tempo q não trabalho com SQL, mas fica a dica.
Boa sorte e bons códigos!
Boa sorte e bons códigos!
GOSTEI 0