Fórum Ordenar DbGrid por data #333998

30/11/2006

0

Pessoal,

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

Marcelovms

Responder

Posts

01/12/2006

Marcelovms

Me ajudem galera!!!


Responder

Gostei + 0

02/12/2006

Marcelovms

Alguem já fez isso galera???

No aguardo.


Responder

Gostei + 0

02/12/2006

Marco Salles

StringGrid


Responder

Gostei + 0

02/12/2006

Marcelovms

[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


Responder

Gostei + 0

02/12/2006

Corcos

Tenta pegar o caption que fica no dbgrid dentro do title e passa em tempo de execução

ps: não tentei


Responder

Gostei + 0

02/12/2006

Marcelovms

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


Responder

Gostei + 0

04/12/2006

Marco Salles

marcelovms ve se eu entendi:

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


Responder

Gostei + 0

05/12/2006

Marcelovms

[quote:2a48291e0d=´Marco Salles´]marcelovms ve se eu entendi:

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???


Responder

Gostei + 0

06/12/2006

Marcelovms

??????????????


Responder

Gostei + 0

06/12/2006

Marcelovms

??????????????


Responder

Gostei + 0

08/12/2006

Marco Salles

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

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


Responder

Gostei + 0

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

Aceitar