Array
(
)

Detalhado por Data

Ramms
   - 26 dez 2005

Salve Salve...

Galera, preciso de mais uma ajuda de vcs...
seguinte, preciso fazer um relatório +/- assim:


--------------01/12|02/12|03/12|04/12|
CLIENTE 1| 01 | 32 | 54 | 64
CLIENTE 2| 28 | 32 | 50 | 58

...

Onde os valores são as quantidades lançadas no sistema, ou seja os registros da tabela....
Mas um detalhe mto importante é que o usuário tem que especificar o período do relatório....
por exemplo eu só quero saber do dia 01 até dia 15, etc...

Se alguem puder me ajudar fico agradecido ^^

Vlw...


Martins
   - 26 dez 2005

Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar Between

#Código


Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;



Ramms
   - 26 dez 2005


Citação:
Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar Between

#Código


Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;


Isso eu to ligado kra...
mas msm assim isso não funcionaria kra....


Emerson
   - 26 dez 2005

para obter o resultado que você espera, creio que seja necessário utilizar stored procedures.


Martins
   - 26 dez 2005


Citação:

Citação:
Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar Between

#Código


Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;


Isso eu to ligado kra...
mas msm assim isso não funcionaria kra....

Blz, agora q caiu a ficha, hehehe

Citação:

--------------01/12|02/12|03/12|04/12|
CLIENTE 1| 01 | 32 | 54 | 64
CLIENTE 2| 28 | 32 | 50 | 58
aqueles 01/12 etc... são os dias, e vc terá q montar aquelas colunas com as quantidades lançadas é isso?

O Emerson, sugeriu uma SP para isso, será q usando um ClienteDataSet daria para fazer tb Emerson?

Valew!!!


Ramms
   - 27 dez 2005


Citação:

Citação:

Citação:
Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar Between

#Código


Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;


Isso eu to ligado kra...
mas msm assim isso não funcionaria kra....

Blz, agora q caiu a ficha, hehehe

Citação:

--------------01/12|02/12|03/12|04/12|
CLIENTE 1| 01 | 32 | 54 | 64
CLIENTE 2| 28 | 32 | 50 | 58
aqueles 01/12 etc... são os dias, e vc terá q montar aquelas colunas com as quantidades lançadas é isso?

O Emerson, sugeriu uma SP para isso, será q usando um ClienteDataSet daria para fazer tb Emerson?

Valew!!!

Isso msm kra....
Mas eu não tenho noção nenhuma de como montar essa SP...


Emerson
   - 27 dez 2005

fiz com clientdataset mesmo. não seria possível com SP porque os parâmetros de saída são desconhecidos e, pelo meu pouco conhecimento, as SP precisam ser criadas com os parâmetros de saídas previamente informados.

vamos ao exemplo (feito com banco de dados Firebird):
#Código

procedure TForm1.Button1Click(Sender: TObject);
var
cliente, i: integer;
scampo: string;
fcampo: TField;
begin
{ ESSE EXEMPLO FOI FEITO UTILIZANDO A TABELA "SALES"
DO BANCO DE DADOS "EMPLOYEE" FORNECIDO COM O IB/FB
--------------------------------------------------

COMPONENTES UTILIZADOS:

- SQLConnection1: TSQLConnection
ConnectionName = IBConnection
DriverName = Interbase
GetDriverFunc = getSQLDriverINTERBASE
LibraryName = dbexpint.dll
LoginPrompt = False
VendorLib = fbclient.dll

- SQLDataSet1: TSQLDataSet
SQLConnection = SQLConnection1

- ClientDataSet1: TClientDataSet

- DataSource1: TDataSource
Dataset = ClientDataSet1

- DBGrid1: TDBGrid
DataSource = DataSource1

OBS: as propriedades que não foram informadas
acima não sofreram nenhuma modificação }

// ***************************************************** //
// com essa instrução serão criadas as colunas da tabela //
// temporária, conforme as datas encontradas //
// ***************************************************** //
with SQLDataSet1 do
begin
Close;
CommandText :=
´select ´+
´ distinct order_date ´+
´from ´+
´ sales ´+
´where ´+
´ order_date between :datainicio and :datafim ´+
´order by ´+
´ order_date ´;
Params.ParamByName(´datainicio´).asdate := DateTimePicker1.Date;
Params.ParamByName(´datafim´).asdate := DateTimePicker2.Date;
Open;
end;

//* aqui será criada a tabela temporária propriamente dita */
with ClientDataSet1, ClientDataSet1.FieldDefs do
begin
close;
clear;
Add(´cliente´,ftInteger,0,True);
while not SQLDataSet1.Eof do
begin
Add(SQLDataSet1.Fields[0].AsString,ftFloat,0,False);
SQLDataSet1.Next;
end;
CreateDataSet;
Open;
end;

// ************************************ //
// com essa instrução trarei os valores //
// e preecherei a tabela temporária //
// ************************************ //
with SQLDataSet1 do
begin
Close;
CommandText :=
´select ´+
´ cust_no, order_date, sum(total_value) total_value ´+
´from ´+
´ sales ´+
´where ´+
´ order_date between :datainicio and :datafim ´+
´group by ´+
´ cust_no, order_date ´+
´order by ´+
´ cust_no, order_date ´;
Params.ParamByName(´datainicio´).asdate := DateTimePicker1.Date;
Params.ParamByName(´datafim´).asdate := DateTimePicker2.Date;
Open;
end;

//* as informações serão gravadas *//
//* na tabela temporária *//
while not SQLDataSet1.Eof do
begin
cliente := SQLDataSet1.FieldByName(´cust_no´).AsInteger;

ClientDataset1.Append;
ClientDataset1.fieldbyname(´cliente´).asinteger := cliente;

while SQLDataSet1.FieldByName(´cust_no´).AsInteger = cliente do
begin
scampo := SQLDataSet1.FieldByName(´order_date´).AsString;
ClientDataset1.FieldByName(scampo).AsFloat :=
SQLDataSet1.FieldByName(´total_value´).AsFloat;
SQLDataSet1.Next;
end;

for i := 0 to ClientDataset1.Fields.Count-1 do
if ClientDataset1.Fields[i].FieldName <> ´cliente´ then
begin
fcampo := ClientDataset1.Fields[i];
//* será alterado o DisplayFormat de modo a *//
//* exibir corretamente os valores monetários *//
if TFloatField(fcampo).DisplayFormat = ´´ then
TFloatField(fcampo).DisplayFormat := ´,0.00´;

//* e para as colunas ainda não preenchidas *//
//* será atriduído o valor 0 (zero) *//
if fcampo.IsNull then fcampo.AsFloat := 0;
end;

ClientDataset1.Post;
end;

ClientDataset1.First;
end;



Ramms
   - 29 dez 2005

Obrigado, deu certinho!!!!
^^


Martins
   - 29 dez 2005


Citação:
Obrigado, deu certinho!!!!
^^


Beleza, minha teoria foi boa então, hehehehe

valew Emerson.en.

Desde já Feliz Ano Novo pessoal!!!