Ordenar DbGrid por data
Pessoal,
Tenho uma tabela que tem os seguintes campos: DATA, PEDIDO, VENDEDOR.
Uso Paradox com Query e datasource.
Fiz uma consulta da seguinte forma:
é mais ou menos isso ai em cima, só que sai no DBGRID assim:
EX:
VENDEDOR------DATA--------------TOTAL DE PEDIDOS
JOAO-------------01/01/2006--------10
MARCOS---------01/01/2006--------25
JOAO-------------02/01/2006--------15
MARCOS---------02/02/2006--------30
eu preciso que sai conforme abaixo:
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------25-----ETC...
JOAO-----------40-----------25--------12-----ETC...
quero que fique os dias no titulo do Grid e o total de pedidos abaixo.
Alguem me ajude, please.
No aguardo.
Agradeço antecipadamente.
Sds.
Tenho uma tabela que tem os seguintes campos: DATA, PEDIDO, VENDEDOR.
Uso Paradox com Query e datasource.
Fiz uma consulta da seguinte forma:
With query1 do
begin
Close;
Sql.Add(´Select DATA, VENDEDOR, count(PEDIDO) AS TOTAL from Venda´);
Sql.Add(´Where DATA between :dtinicial and :dtfinal´);
Sql.Add(´Group by VENDEDOR, DATA´);
Sql.Add(´Order by VENDEDOR, DATA´);
Parambyname(´dtinicia´).asdate := strtodate(maskedit1.text);
Parambyname(´dtfinal´).asdate := strtodate(maskedit2.text);
open;
end;
é mais ou menos isso ai em cima, só que sai no DBGRID assim:
EX:
VENDEDOR------DATA--------------TOTAL DE PEDIDOS
JOAO-------------01/01/2006--------10
MARCOS---------01/01/2006--------25
JOAO-------------02/01/2006--------15
MARCOS---------02/02/2006--------30
eu preciso que sai conforme abaixo:
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------25-----ETC...
JOAO-----------40-----------25--------12-----ETC...
quero que fique os dias no titulo do Grid e o total de pedidos abaixo.
Alguem me ajude, please.
No aguardo.
Agradeço antecipadamente.
Sds.
Marcelovms
Curtidas 0
Respostas
Marcelovms
30/11/2006
Me ajudem galera!!!
GOSTEI 0
Marcelovms
30/11/2006
Alguem já fez isso galera???
No aguardo.
No aguardo.
GOSTEI 0
Marco Salles
30/11/2006
StringGrid
GOSTEI 0
Marcelovms
30/11/2006
[quote:2dd053f59b=´Marco Salles´]StringGrid[/quote:2dd053f59b]
Me dê uma força colega para fazer.
Já tentei de todo jeito fazer essa consulta via Sql, mas não consegui nada.
No aguardo
Me dê uma força colega para fazer.
Já tentei de todo jeito fazer essa consulta via Sql, mas não consegui nada.
No aguardo
GOSTEI 0
Corcos
30/11/2006
Tenta pegar o caption que fica no dbgrid dentro do title e passa em tempo de execução
ps: não tentei
ps: não tentei
GOSTEI 0
Marcelovms
30/11/2006
Tenta pegar o caption que fica no dbgrid dentro do title e passa em tempo de execução
ps: não tentei
Já tentei mas não consegui, tenho que colocar o total abaixo do dia certo tambem, isso que é o maior problemas.
ex:
DIA 01 ------------- DIA 02 ------------DIA 03
15 13 10
GOSTEI 0
Marco Salles
30/11/2006
marcelovms ve se eu entendi:
eu preciso que sai conforme abaixo:
[b:e0cf64ddc2]não seria assim:[/b:e0cf64ddc2]
Coloquei o ´?´ , porque na sua Sql não aparece o valor
VENDEDOR------DATA--------------TOTAL DE PEDIDOS
JOAO-------------01/01/2006--------10
MARCOS---------01/01/2006--------25
JOAO-------------02/01/2006--------15
MARCOS---------02/02/2006--------30
eu preciso que sai conforme abaixo:
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------25-----ETC...
JOAO-----------[b:e0cf64ddc2]40[/b:e0cf64ddc2]-----------[b:e0cf64ddc2]25[/b:e0cf64ddc2]--------12-----ETC...
[b:e0cf64ddc2]não seria assim:[/b:e0cf64ddc2]
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------????-----ETC...
JOAO-----------[b:e0cf64ddc2]10[/b:e0cf64ddc2]----------[b:e0cf64ddc2]15[/b:e0cf64ddc2]------????-----ETC...
Coloquei o ´?´ , porque na sua Sql não aparece o valor
GOSTEI 0
Marcelovms
30/11/2006
[quote:2a48291e0d=´Marco Salles´]marcelovms ve se eu entendi:
eu preciso que sai conforme abaixo:
[b:2a48291e0d]não seria assim:[/b:2a48291e0d]
Coloquei o ´?´ , porque na sua Sql não aparece o valor[/quote:2a48291e0d]
Não estou conseguindo montar uma consulta para lançar no DBGrid conforme acima.
Só consigo da seguinte forma:
DATA-----VENDEDOR------TOTAL
01/10/06---MARCOS---------25
01/10/06-----JOAO------------12
01/10/06-----MARIA------------11
02/10/06---MARCOS---------25
02/10/06-----JOAO------------12
02/10/06-----MARIA------------11
Fica uma data abaixo da outra, em vez disso quero colocar as datas no titulo do dbgrid, entendeu amigo???
VENDEDOR------DATA--------------TOTAL DE PEDIDOS
JOAO-------------01/01/2006--------10
MARCOS---------01/01/2006--------25
JOAO-------------02/01/2006--------15
MARCOS---------02/02/2006--------30
eu preciso que sai conforme abaixo:
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------25-----ETC...
JOAO-----------[b:2a48291e0d]40[/b:2a48291e0d]-----------[b:2a48291e0d]25[/b:2a48291e0d]--------12-----ETC...
[b:2a48291e0d]não seria assim:[/b:2a48291e0d]
VENDEDOR---DIA01-----DIA--02---DIA03--ETC......
MARCOS------25-----------30---------????-----ETC...
JOAO-----------[b:2a48291e0d]10[/b:2a48291e0d]----------[b:2a48291e0d]15[/b:2a48291e0d]------????-----ETC...
Coloquei o ´?´ , porque na sua Sql não aparece o valor[/quote:2a48291e0d]
Não estou conseguindo montar uma consulta para lançar no DBGrid conforme acima.
Só consigo da seguinte forma:
DATA-----VENDEDOR------TOTAL
01/10/06---MARCOS---------25
01/10/06-----JOAO------------12
01/10/06-----MARIA------------11
02/10/06---MARCOS---------25
02/10/06-----JOAO------------12
02/10/06-----MARIA------------11
Fica uma data abaixo da outra, em vez disso quero colocar as datas no titulo do dbgrid, entendeu amigo???
GOSTEI 0
Marcelovms
30/11/2006
??????????????
GOSTEI 0
Marcelovms
30/11/2006
??????????????
GOSTEI 0
Marco Salles
30/11/2006
disse antes que voce pode usar um stringGrid para isto... Esta fácil de resolver com StringGrid
Fiz aqui rapidinho um procedimento que acho que ira resolver.. É claro que em primeira mão , ele tera alguns problemas que devem ser equacionados.. Pois fiz tudo na cabeça e as vezes é muito dificil processar simultaneamente tudo na cachola de uma so vez... Porém , o mais importante é a idéia o resto é o resto
Teho certeza que isso resolve o seu problema ... Mas deve precisar de acertos e emendas.
Boa sorte
Fiz aqui rapidinho um procedimento que acho que ira resolver.. É claro que em primeira mão , ele tera alguns problemas que devem ser equacionados.. Pois fiz tudo na cabeça e as vezes é muito dificil processar simultaneamente tudo na cachola de uma so vez... Porém , o mais importante é a idéia o resto é o resto
type
TumObjeto=class
posicao:Integer;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
data:tdate;
ano,mes,dia,diaf:word;
i,j,indice,coluna:integer;
ListaVendedores:TStringList;
Linha:TumObjeto;
begin
j:=0;
ListaVendedores:=TStringList.Create;
//estou usando no inicio a data corrente.. Para datas genericas o modelo //se expande facilmente
decodedate(date,ano,mes,dia);
diaf:=DaysInMonth(date);
stg1.ColCount:=diaf+1;
//a consulta abaixo é facil.. é so usar um outro sql com a clausu-la distinct
Stg1.RowCount:=
ConsultaSqlQue retorna a quantidade de vendedores distintos com os mesmo parametros anteriores;
//aqui vou varrer todos os dias desse mes.. Deste do dia 1 ate o fina do //mes
for i:=1 to diaf do
begin
// no stringGrid na Linha o e coluna i , coloco a uma data
//exemplo 01/12/2006 ...02/12/2006
Stg1.Cells[i,0]:=datetostr(encodedate(ano,mes,i));
//enquanto estiver percorrendo o sqldataset e estiver nesta data , tenho
//que preencher a respectivas linhas desta coluna i
while encodedate(ano,mes,i) = seudateset.fieldByName(´NomeDoSeucampoData´).asdatetime do
begin
// o primeiro passo é ver se esta vendedor ja consta na minha lista de
//vendedores... Se não consta vou cria-lo e atribuir uma linja J especifica
//para ele
indice:=listavendedores.IndexOf(seudateset.fieldByName(´NomeDoSeuVendedor´).asstring);
if indice < 0 Then
//caso de um vendedor não constar na minha lista
begin
linha:=TUmObjeto.create;
//atribuo uma linha para ele
Linha.posicao:=j;
listavendedores.AddObject(seudateset.fieldByName(´NomeDoSeuVendedor´).asstring,Linha);
//escrevo na coluna zero e na linha J o nome desse vendedor
Stg1.Cells[0,j]:=seudateset.fieldByName(´NomeDoSeuVendedor´).asstring;
//escrevo na coluna i e na linha j o total referente
Stg1.Cells[i,j]:=seudateset.fieldByName(´TOTAL´).asstring;
J:=J+1;
end
else
begin
//caso este vendedor ja faça parte da minha lista.. Recupero o valor
//da coluna refrente a este vendedor
coluna:=TUmobjeto(listavendedores.Objects[indice]).posicao;
stg1.Cells[i,coluna]:=seudateset.fieldByName(´TOTAL´).asstring;
end;
seudateset.Next;
end;
end;
//aqui entra a perte da destruição dos objetos criados... Fica para mais
//tarde o primeiro passo é voce tentar entender a idéia..
end;
Teho certeza que isso resolve o seu problema ... Mas deve precisar de acertos e emendas.
Boa sorte
GOSTEI 0