Fórum Detalhado por Data #306598
26/12/2005
0
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...
Ramms
Curtir tópico
+ 0Posts
26/12/2005
Martins
Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;
Gostei + 0
26/12/2005
Ramms
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....
Gostei + 0
26/12/2005
Emerson Nascimento
Gostei + 0
26/12/2005
Martins
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....[/quote:1948d6a5b2]
Blz, agora q caiu a ficha, hehehe
O [b:1948d6a5b2]Emerson[/b:1948d6a5b2], sugeriu uma SP para isso, será q usando um ClienteDataSet daria para fazer tb Emerson?
Valew!!!
Gostei + 0
27/12/2005
Ramms
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....[/quote:ed312f100a]
Blz, agora q caiu a ficha, hehehe
O [b:ed312f100a]Emerson[/b:ed312f100a], sugeriu uma SP para isso, será q usando um ClienteDataSet daria para fazer tb Emerson?
Valew!!![/quote:ed312f100a]
Isso msm kra....
Mas eu não tenho noção nenhuma de como montar essa SP...
Gostei + 0
27/12/2005
Emerson Nascimento
vamos ao exemplo (feito com banco de dados Firebird):
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;Gostei + 0
29/12/2005
Ramms
^^
Gostei + 0
29/12/2005
Martins
Beleza, minha teoria foi boa então, hehehehe
valew [b:2a4946a1b8]Emerson.en[/b:2a4946a1b8].
Desde já Feliz Ano Novo pessoal!!!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)