Detalhado por Data
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
Posts
26/12/2005
Martins
Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;
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....
26/12/2005
Emerson Nascimento
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!!!
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...
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;
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!!!
Clique aqui para fazer login e interagir na Comunidade :)