Ir para conteúdo
Fórum Script Brasil
  • 0

soma de informações de BD


Nino Marques

Pergunta

Seguinte tenho um banco de dados...ele tem armazena em uma coluna 'Tempo_de_Ligação' os tempos de gravação de um programa aki...

Preciso somar todos os valores de tempo por dia..e fazer um grafico Tempo de ligação X Dia...

Eu fiz assim...mas não deu certoo..

_________________________________

DM.ADOQuery_grafico.Close;

DM.ADOQuery_grafico.sql.Text :=

'select '+

'left(inicio, 10) as data, '+

' right(''0000''+cstr( (24*int(sum(Tempo_de_Ligação))) + datepart(''h'', cdate(sum(Tempo_de_Ligação)))), 4)+'':''+ '+

'right(cdate(sum(Tempo_de_Ligação)), 5) as horastotais '+

'from '+

'chamadas '+

' group by '+

' left(inicio, 10) ';

DM.ADOQuery_grafico.Open;

_______________________________________

Os dados eu pego de um Bd 'chamadas' e quero enviar para um 'grafico'.....

Está dando um erro assim..

"exception class EConvertError whit message "31/07/2009" is not a valid floating point value. Process Stop......"

Onde será que está o problema?

Abraasss

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

"exception class EConvertError whit message "31/07/2009" is not a valid floating point value. Process Stop......"

EConvertError mensagem " 31/07/2009 " não é um valor de ponto flutuante válido. Parada de processo......"

Verifique a sua SQL pois voce está tentanto executar uma operação matematica em uma data ( cdate ).

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Poderia me dar uma sugestão de fazer isso de outra forma?

pelo que entendi, voce esta trabalhando com datas e horas ...certo ?

a minha sugestão é para voce criar primeiro uma select para selecionar o perido de datas que voce quer

exe: 01/01/2009 a 01/02/2009 .... coms os registros selecionados voce pode calcular o somatório das horas

se não for isso ... poste como esta os dados em sua tabela e como quer trabalhar com os registros

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Seguinte....

Em uma tabela tem uma coluna data e uma tempo de ligação.....elas fazem o controle de ligações de um telefone...

Eu tenho outra tabela no mesmo BD q se chama Grafico...e ela precisa armazenar o tempo total de ligação por dia...

Então preciso selecionar todas ligações do dia....e soma seus tempos totais e lança-los na tabela grafico..

Porque com essa tabela vou criar um grafico DBChart...

Estou usando então aquela rotinaa....

Link para o comentário
Compartilhar em outros sites

  • 0

'select '+
'left(inicio, 10) as data, '+
' right(''0000''+cstr( (24*int(sum(Tempo_de_Ligação))) + datepart(''h'', cdate(sum(Tempo_de_Ligação)))), 4)+'':''+ '+
'right(cdate(sum(Tempo_de_Ligação)), 5) as horastotais '+
'from '+
'chamadas '+
' group by '+
' left(inicio, 10) ';

voce tem que refazer essa Select pois ela está errada em sua estrutura ... veja se consegue ( pense )

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Mudei o Codigo para:

DM.ADOQuery_grafico.Close;

DM.ADOQuery_grafico.sql.Text :=

'select '+

'left(data, 10) as dia, '+

' right(''0000''+cstr( (24*int(sum(Tempo_de_Ligação))) + datepart(''h'', cdate(sum(Tempo_de_Ligação)))), 2)+'':''+ '+

'right(cdate(sum(Tempo_de_Ligação)), 5) as horastotais '+

'from '+

'chamadas '+

' group by '+

' left(data, 10) ';

DM.ADOQuery_grafico.Open;

Assim agora está dando o mesmo erro só q fla assim....

"exception class EConvertError whit message "00:01:22" is not a valid floating point value. Process Stop......"

Esse tempo é a soma das ligações mesmo.....então creio q está somando certinho...mas não está enviando as informações para a tabela...

Me dá uma mão...porque já tente de tudooo!!!

;)

Link para o comentário
Compartilhar em outros sites

  • 0
Assim agora está dando o mesmo erro só q fla assim....

"exception class EConvertError whit message "00:01:22" is not a valid floating point value. Process Stop......"

Erro de conversão de tipos ... quando a mensagem é ... "00:01:22" não é um valor valido de ponto flutuante

significa que voce não pode somar por exemplo 5,60 + 00:01:22 entendeu ? o valor 00:01:22 deveria ser convertido para um valor real

exemplo : converter o tempo em segundos e depois executar a soma

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Eu entendi isso de não poder somar aqueles valores...

Só q assim...se "00:01:22" já é o valor da soma dos tempo.....porque ele está tentando somar mais coisas???

porque os valores estão todos no formato hh:mm:ss mesmo....então oque pode estar acontecendo?

Posso até converter tudo p segundo mas será q é mesmo necessario?!

Abraço..

Link para o comentário
Compartilhar em outros sites

  • 0
Eu entendi isso de não poder somar aqueles valores...

Só q assim...se "00:01:22" já é o valor da soma dos tempo.....porque ele está tentando somar mais coisas???

porque os valores estão todos no formato hh:mm:ss mesmo....então oque pode estar acontecendo?

que tipo de operação é esta ?

(24*int(sum(Tempo_de_Ligação)))

"exception class EConvertError whit message "00:01:22" is not a valid floating point value. Process Stop......"

(24*int(sum(00:01:22))) /// entendeu o que está ocorrendo ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Eu consegui fazer oque eu queria atraves do Access mesmo....eu executei uma consulta com a função em SQl q estava usando...e ela me retorna os valores q eu queria mesmo....

Só q tem um problema...o formato dos resultados são todos do tipo texto....

E o DbChart só recebe do tipo numerico ou data/hora.....

Eu tentei então gerar uma tabela da consulta, essa é possivel gerar, mas não se atualiza sozinha, quando a consulta pe atualizada.

Oque eu posso fazer?

-Tem algum comando em SQL q posso colocar q envie os dados no formato q preciso?

- Existe outro tipo de grafico no Delphi, que eu possa usar?

Qual seria melhor saida?

Link para o comentário
Compartilhar em outros sites

  • 0

Então..

Mas foi o que eu flei.....a consulta salva como tabela num é gerada automaticamente....

Ou seja sempre q entrar uma nova ligação....a tabela chamadas vai receber, a consulta também recebe...mas a tabela que provem da consulta não será atualizada...a menos q eu entre no access e crie uma nova tabela encima da nova consulta...

Ai que mora o problema! =/

Link para o comentário
Compartilhar em outros sites

  • 0

Li algumas coisas sobre tabela temporarias, e confesso que não sabia que existia esse recurso no Delphi, só que com o que li até então não sei bem como criar uma tabela dessas e enviar os dados da consulta sempre que o grafico for requerido..

Você pode dar uma mãozinha de como fazer?

Grato por tudo!

Abraço..

Link para o comentário
Compartilhar em outros sites

  • 0
Li algumas coisas sobre tabela temporarias, e confesso que não sabia que existia esse recurso no Delphi, só que com o que li até então não sei bem como criar uma tabela dessas e enviar os dados da consulta sempre que o grafico for requerido..

Veja o que encontra no forum primeiro...

http://scriptbrasil.com.br/forum/index.php...bela+temporaria

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...