Detalhado por Data
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...
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
Curtidas 0
Respostas
Martins
26/12/2005
Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar [b:573a05ac50]Between[/b:573a05ac50]
Select <Campos> from tabela WHERE<nome da coluna> BETWEEN<valor 1> and <valor 2>;
GOSTEI 0
Ramms
26/12/2005
Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar [b:ac4ba8842e]Between[/b:ac4ba8842e]
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
Emerson Nascimento
26/12/2005
para obter o resultado que você espera, creio que seja necessário utilizar stored procedures.
GOSTEI 0
Martins
26/12/2005
[quote:1948d6a5b2=´Martins´]Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar [b:1948d6a5b2]Between[/b:1948d6a5b2]
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
--------------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 [b:1948d6a5b2]Emerson[/b:1948d6a5b2], sugeriu uma SP para isso, será q usando um ClienteDataSet daria para fazer tb Emerson?
Valew!!!
GOSTEI 0
Ramms
26/12/2005
[quote:ed312f100a=´Ramms´][quote:ed312f100a=´Martins´]Se vc estiver usando um Banco de Dados com suporte a SQL vc poderá usar [b:ed312f100a]Between[/b:ed312f100a]
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
--------------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 [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
Emerson Nascimento
26/12/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):
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
Ramms
26/12/2005
Obrigado, deu certinho!!!!
^^
^^
GOSTEI 0
Martins
26/12/2005
Obrigado, deu certinho!!!!
^^
Beleza, minha teoria foi boa então, hehehehe
valew [b:2a4946a1b8]Emerson.en[/b:2a4946a1b8].
Desde já Feliz Ano Novo pessoal!!!
GOSTEI 0