DBChart c/ Paradox
11/03/2006
0
Olá amigos delphianos.
Tenho uma tabela de paradox com os seguinte campos :
Data Date
Lucro Number
Essa tabela serve pra pessoa registrar o lucro que ela teve no dia que ela informar no campo Data. Bom o que estou querendo fazer é criar um gráfico em DBChart para mostrar o lucro dela em Janeiro, Fevereiro .... até Dezembro...
Como faço pra fazer isso ? Sou iniciante e nao faço nem idéia de como começar... valeu galera....
Se alguem puder explicar passo-a-passo eu agradeceria imensamente...
Tenho uma tabela de paradox com os seguinte campos :
Data Date
Lucro Number
Essa tabela serve pra pessoa registrar o lucro que ela teve no dia que ela informar no campo Data. Bom o que estou querendo fazer é criar um gráfico em DBChart para mostrar o lucro dela em Janeiro, Fevereiro .... até Dezembro...
Como faço pra fazer isso ? Sou iniciante e nao faço nem idéia de como começar... valeu galera....
Se alguem puder explicar passo-a-passo eu agradeceria imensamente...
Tiagojmilam
Curtir tópico
+ 0
Responder
Posts
12/03/2006
Marco Salles
ola amigo [b:6d356e9ed3]TiagoJmilam[/b:6d356e9ed3] , voce que esta iniciando nos estudos do delphi assim como todos nos que fazemos parte desta comunidade..
Se eu pudesse eu mandava fechar todos os cursos dedelphi do brasil que ensina paradox.. Não que eu tenha algo contra o paradox , Mas o problema esta na maneira como esses cursos administram o ensino do Paradox . O Paradox deve ser ensinado como algo que ja foi e não com referencia como a maioria dos [b:6d356e9ed3]cursos fazem... [/b:6d356e9ed3]< E um mes de Paradox e uma seman dos outros bancos > ... Com isso o aluno começa a desenvolver em paradox e fica amarrado neste tecnologia que esta ultrapassada
Eu passei e passo por isso .. Tenho sistemas em paradox que tenho preguiça e ´medo´ de mudar , medo da trabalheira que pode me dar.
[b:6d356e9ed3]Então conselho ... Não inicie nada grande em Paradox[/b:6d356e9ed3]
.................................
Vamos voltar no assunto
Aqui esta muito confuso sua Regra de negócio.. Lucro não se soma como se soma inteiros.. se o cara ter um lucro de 1¬ todo dia , então em um mes ele teve lucro de 30¬ ???? Não , acho que precisa de mais consistencia e modelagem nesse tratamento. Mas vou deixar de lado esquecer esta questão por ser uma questão de interpretação e partir para o proposto.
[b:6d356e9ed3]No Paradox , acho pouco improvavel que alguem resolva usando tecnica [/b:6d356e9ed3]para isso.. Se alguem resolver sera de muita valia para mim.. Ficarei surpreso e agradecido
O Que se faz nesta situação , caso não apareça outra solução e usar [b:6d356e9ed3]artificios[/b:6d356e9ed3]
primeiro quero destacar que a apresentação dos dados no TDbChar e o lado mais fácil da questão ... [b:6d356e9ed3]O Lado mais complicado e mudar a sua base de dados que é diaria para mensal e fazer a soma desses registros [/b:6d356e9ed3]
mas eu tenho uma saida para este problema , assim como outros devam ter outros tipos de saida para esse problema.. No meu caso não é nada tecnico e sim usando um artificio...
vou apresentar , na esperança que outros apresentem algo diferente
a)voce deve criar na sua base de dados os campo : mes e dia do tipo inteiros
b)para cada registro novo que for incluido voce deve salvar tb , indiretamente os campo mes e Ano
isto pode ser feito no exemplo before post da tabela ou qualquer outro lugar , desde que para cada data voce consiga desmenbrar o ano e o mes desta data e salvar em campos separados... Tipo isso
Isto então deve ser feito para cada registro novo que for adicionado a sua base de dados.. e não pode deixar de corrigir para os demais registros , que ja estão salvos nesta tabela
de posse disso feito , vamos a segunda parte
b)inclua um query .. Ligue a query e escreva no sql da query o seguinte
não soute espaço entre [b:6d356e9ed3]ano=:DefinirAno[/b:6d356e9ed3]
nesse momento se voce for na propriedade params a nivel de projeto da query1 , voce vera que aparece o definir ano.. Então click nele escreva a seguintes propreedade
DataType coloque inteiro
paramType coloque ptinput
value coloque 2005 pode ser qualquer ano
Volte no objeto inspector da query e active = true
Claro que voce ter um dataSource associado a Query 1 e o DbGrid Associado a o DataSource
Nesse momento a nivel de projeto , ja da para verificar soma de todos os meses do Ano de 2005
coloque agora um edit e um botão .. eescreva
Rode o programa e veja se esta lhe agradando .. a segunda parte
se tudo tiver de acordo a gente faz depois ... E como eu disse e a parte mais fácil disso tudo , talves no proprio TDBchar tenha jeito de faze este agrupamento .. Nesse caso eu sinceramente não sei se é possivel..
Boa sorte..
Se eu pudesse eu mandava fechar todos os cursos dedelphi do brasil que ensina paradox.. Não que eu tenha algo contra o paradox , Mas o problema esta na maneira como esses cursos administram o ensino do Paradox . O Paradox deve ser ensinado como algo que ja foi e não com referencia como a maioria dos [b:6d356e9ed3]cursos fazem... [/b:6d356e9ed3]< E um mes de Paradox e uma seman dos outros bancos > ... Com isso o aluno começa a desenvolver em paradox e fica amarrado neste tecnologia que esta ultrapassada
Eu passei e passo por isso .. Tenho sistemas em paradox que tenho preguiça e ´medo´ de mudar , medo da trabalheira que pode me dar.
[b:6d356e9ed3]Então conselho ... Não inicie nada grande em Paradox[/b:6d356e9ed3]
.................................
Vamos voltar no assunto
[b:6d356e9ed3]Essa tabela serve pra pessoa registrar o lucro que ela teve no dia que ela informar no campo Data. Bom o que estou querendo fazer é criar um gráfico em DBChart para mostrar o lucro dela em Janeiro, Fevereiro .... até Dezembro... [/b:6d356e9ed3]
Aqui esta muito confuso sua Regra de negócio.. Lucro não se soma como se soma inteiros.. se o cara ter um lucro de 1¬ todo dia , então em um mes ele teve lucro de 30¬ ???? Não , acho que precisa de mais consistencia e modelagem nesse tratamento. Mas vou deixar de lado esquecer esta questão por ser uma questão de interpretação e partir para o proposto.
[b:6d356e9ed3]Como faço pra fazer isso [/b:6d356e9ed3]? Sou iniciante e nao faço nem idéia de como começar... valeu galera....
[b:6d356e9ed3]No Paradox , acho pouco improvavel que alguem resolva usando tecnica [/b:6d356e9ed3]para isso.. Se alguem resolver sera de muita valia para mim.. Ficarei surpreso e agradecido
O Que se faz nesta situação , caso não apareça outra solução e usar [b:6d356e9ed3]artificios[/b:6d356e9ed3]
primeiro quero destacar que a apresentação dos dados no TDbChar e o lado mais fácil da questão ... [b:6d356e9ed3]O Lado mais complicado e mudar a sua base de dados que é diaria para mensal e fazer a soma desses registros [/b:6d356e9ed3]
mas eu tenho uma saida para este problema , assim como outros devam ter outros tipos de saida para esse problema.. No meu caso não é nada tecnico e sim usando um artificio...
vou apresentar , na esperança que outros apresentem algo diferente
a)voce deve criar na sua base de dados os campo : mes e dia do tipo inteiros
b)para cada registro novo que for incluido voce deve salvar tb , indiretamente os campo mes e Ano
isto pode ser feito no exemplo before post da tabela ou qualquer outro lugar , desde que para cada data voce consiga desmenbrar o ano e o mes desta data e salvar em campos separados... Tipo isso
procedure TForm1.Table1BeforePost(DataSet: TDataSet); var data :Tdate; ano,mes,dia:Word; begin data:=table1.fieldbyname(´data´).AsDateTime; decodedate(data,ano,mes,dia); table1.FieldByName(´mes´).asinteger:=mes; table1.FieldByName(´ano´).AsInteger:=Ano; end;
Isto então deve ser feito para cada registro novo que for adicionado a sua base de dados.. e não pode deixar de corrigir para os demais registros , que ja estão salvos nesta tabela
de posse disso feito , vamos a segunda parte
b)inclua um query .. Ligue a query e escreva no sql da query o seguinte
select mes, sum(number) as totalLucro from Teste where ano=:DefinirAno group By mes
não soute espaço entre [b:6d356e9ed3]ano=:DefinirAno[/b:6d356e9ed3]
nesse momento se voce for na propriedade params a nivel de projeto da query1 , voce vera que aparece o definir ano.. Então click nele escreva a seguintes propreedade
DataType coloque inteiro
paramType coloque ptinput
value coloque 2005 pode ser qualquer ano
Volte no objeto inspector da query e active = true
Claro que voce ter um dataSource associado a Query 1 e o DbGrid Associado a o DataSource
Nesse momento a nivel de projeto , ja da para verificar soma de todos os meses do Ano de 2005
coloque agora um edit e um botão .. eescreva
procedure TForm1.BitBtn1Click(Sender: TObject); begin try query1.Close; query1.Params[0].AsInteger:=strtoint(edit1.text); query1.open; except on econverterror do begin showmessage(´valor do ano invalido ´); edit1.setfocus; end; end;
Rode o programa e veja se esta lhe agradando .. a segunda parte
se tudo tiver de acordo a gente faz depois ... E como eu disse e a parte mais fácil disso tudo , talves no proprio TDBchar tenha jeito de faze este agrupamento .. Nesse caso eu sinceramente não sei se é possivel..
Boa sorte..
Responder
14/03/2006
Marco Salles
Gostaria apenas de fazer uma pequena correção , na minha ultima postagem.. Não que ela estivesse Totalmente errada , mas percebi que ela pode ser minimizada. Observando o fato que o Paradox suporta a função Extract , para esse objetivo , podemos eliminar a criação de um campo na tabela
Aonde eu disse:
pode ser trocado por
e na segunda parte , na definição do Sql a nivel de projeto , pode-se trocar
aplicando o Extract Na data , Podemos obter o Ano
[b:576e8e9dc3]o que nos poupa da criação do campo Ano[/b:576e8e9dc3]... Observando o Extract , poderiamos estar tentados tb a aplica-lo no mes , tipo isso
So que infelismente , acho que o Paradox não suporta este Agrupamento. O que faz que tenhamos de fato, ter que criar o campo Mes fisicamente na tabela da Base De Dados.
Aonde eu disse:
a)voce deve criar na sua base de dados os campo : mes e[b:576e8e9dc3] Ano [/b:576e8e9dc3]do tipo inteiros
pode ser trocado por
a)voce deve criar na sua base de dados o campo : mes
e na segunda parte , na definição do Sql a nivel de projeto , pode-se trocar
select mes, sum(number) as totalLucro from Teste where ano=:DefinirAno group By mes
aplicando o Extract Na data , Podemos obter o Ano
select mes, sum(number) as totalLucro from Teste where Extract(Year From Data)=:DefinirAno group By mes
[b:576e8e9dc3]o que nos poupa da criação do campo Ano[/b:576e8e9dc3]... Observando o Extract , poderiamos estar tentados tb a aplica-lo no mes , tipo isso
select Extract(Month From Data) as mesAtivo, sum(number) as totalLucro from Teste where Extract(Year From Data)=:DefinirAno group By mesAtivo
So que infelismente , acho que o Paradox não suporta este Agrupamento. O que faz que tenhamos de fato, ter que criar o campo Mes fisicamente na tabela da Base De Dados.
Responder
Clique aqui para fazer login e interagir na Comunidade :)