Fórum Administração das informações enviadas ao BD, para DbChart #372630
23/07/2009
0
Seguinte....meu soft administra ligações telefonicas, eu mando pro BD inicio, final, tempo de ligação, data....só que esou fazendo um Grafico DBChart, e precisava dele mostrando o tempo de ligação por dia...
Então eu não sei como somar todos os tempo de ligação de cada dia....
Alguem consegue me dar uma luz ai?!
Obrigadoo!!
Abrass...
Nino Marques
Curtir tópico
+ 0Posts
23/07/2009
Vmlima
select data, sum(tempo)
from tabelas
group by data
nada demais... e depois jogue no chart
att.
Gostei + 0
23/07/2009
Nino Marques
To começando a mexer em BD agora, então não conheço tão bem as funções....
Se puder vai ser um favorzãoo!
Abrass
Gostei + 0
23/07/2009
Emerson Nascimento
Gostei + 0
23/07/2009
Nino Marques
-Inicio, final e tempo de ligação do tipo Data/hora
-canal, caminho da gravação e nome do arquivo do tipo texto
o envio dos dados está seno feito assim..
DM.ADOQuery_chamadas1.Close;
DM.ADOQuery_chamadas1.SQL.Clear;
DM.ADOQuery_chamadas1.SQL.Add(´UPDATE chamadas SET final = :final1, dtmf = :dtmf1,Tempo_de_Ligação=:Tempo_de_Ligação1 WHERE Canal = :canal1 AND inicio = :inicio1´);
DM.ADOQuery_chamadas1.Parameters.ParamByName(´canal1´).Value := nome_linha1;
DM.ADOQuery_chamadas1.Parameters.ParamByName(´inicio1´).Value := inicio_linha1;
DM.ADOQuery_chamadas1.Parameters.ParamByName(´final1´).Value := FormatDateTime(´dd/mm/yyyy hh:mm:ss´,now);
DM.ADOQuery_chamadas1.Parameters.ParamByName(´dtmf1´).Value := Label_placa1_dtmf.Caption;
DM.ADOQuery_chamadas1.Parameters.ParamByName(´Tempo_de_Ligação1´).Value := FormatDateTime(´hh:mm:ss´,(finalt - iniciot));
DM.ADOQuery_chamadas1.ExecSQL;
Gostei + 0
23/07/2009
Vmlima
Por favor, mostre-nos a estrutura da tabela, pode ser a SQL de criação mesmo, que da pra importar pelo IBExpert
Create table chamadas(
...
)
só pra gente ver certo seus campos e mandar uma resposta mais distinta...
Att.
Gostei + 0
23/07/2009
Nino Marques
Sei que to dando trabalho...
Mas como q faz isso???
Gostei + 0
23/07/2009
Facc
Sei que to dando trabalho...
Mas como q faz isso???[/quote:8c4b679c5e]
é facil. abre o Access e copia o nome dos campos
Quem montou a estrutura do banco?
Gostei + 0
23/07/2009
Emerson Nascimento
select left(inicio, 10) as data, int(sum(tempo_de_ligacao)) as dias, right(cdate(sum(tempo_de_ligacao)), 8) as horas, right(´0000´+cstr(int(sum(tempo_de_ligacao))),4)+´d:´+ right(cdate(sum(tempo_de_ligacao)), 8) as duracaototal, right(´0000´+cstr( (24*int(sum(tempo_de_ligacao))) + datepart(´h´, cdate(sum(tempo_de_ligacao)))), 4)+´:´+ right(cdate(sum(tempo_de_ligacao)), 5) as horastotais from chamadas group by left(inicio, 10)
Gostei + 0
23/07/2009
Nino Marques
Eu não entendo muito de Access então aprendi a enviar os dados, essas coisas.....
O nome dos CAmpos
Códigocanal inicio finaldtmftipocaminhoarquivoemailTempo_de_Ligação
Seria isso?! hahuHUaa...
E Emerson...esse Codigo q vc fez....qual a variavel de saida???
E qual será o melhor caminho p fazer o grafico?? eu crio uma nova tabela no access com dia e tempo de ligação e faço a ligação com o DbChart???
Gostei + 0
27/07/2009
Nino Marques
Gostei + 0
27/07/2009
Emerson Nascimento
algo assim:
ADOQuery1.Close; ADOQuery1.SQL.Text := ´ select ´+ ´ left(inicio, 10) as data, ´+ ´ int(sum(tempo_de_ligacao)) as dias, ´+ ´ right(cdate(sum(tempo_de_ligacao)), 8) as horas, ´+ ´ right(´´0000´´+cstr(int(sum(tempo_de_ligacao))),4)+´´d:´´+ ´+ ´ right(cdate(sum(tempo_de_ligacao)), 8) as duracaototal, ´+ ´ right(´´0000´´+cstr( (24*int(sum(tempo_de_ligacao))) + datepart(´´h´´, cdate(sum(tempo_de_ligacao)))), 4)+´´:´´+ ´+ ´ right(cdate(sum(tempo_de_ligacao)), 5) as horastotais ´+ ´from ´+ ´ chamadas ´+ ´group by ´+ ´ left(inicio, 10) ´; ADOQuery1.Open;
dependendo da sua necessidade, você poderá ligar esse ADOQuery à uma grade, para visualizar o resultado e analisar se está correto.
ou ainda fazer uma consulta pelo próprio Excel, utilizando essa mesma instrução.
Gostei + 0
28/07/2009
Nino Marques
estou usando a rotina q foi passada....mas está dando erro parece q de tempo de execução (Runtime error)...o codigo ficou assim...
Estou puxando as informações de uma tabela (chamadas) e depois jogando em outra (grafico)...
DM.ADOQuery_grafico.Close;
DM.ADOQuery_chamadas.open;
DM.ADOQuery_chamadas.sql.Text :=
´ select ´+
´ left(inicio, 10) as data, ´+
´ int(sum(Tempo_de_Ligação)) as dias, ´+
´ right(cdate(sum(Tempo_de_Ligacão)), 8) as horas, ´+
´ right(´´0000´´+cstr(int(sum(Tempo_de_Ligação))),4)+´´d:´´+ ´+
´ right(cdate(sum(Tempo_de_Ligação)), 8) as duracaototal, ´+
´ 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_chamadas.Close;
DM.ADOQuery_grafico.SQL.Add(´Select * from grafico where data = :data AND horastotais= :horastotais´);
DM.ADOQuery_grafico.SQL.Add(´Insert Into grafico(data, horastotais) Values (data, horastotais)´);
DM.ADOQuery_grafico.Parameters.ParamByName(´horastotais´).Value := horastotais;
DM.ADOQuery_grafico.Parameters.ParamByName(´data´).Value := FormatDateTime(´dd/mm/yyyy´,now);
DM.ADOQuery_grafico.Open;
Tem algo errado ai?!
Gostei + 0
28/07/2009
Nino Marques
hehehehe...
na vdd eh um ´8 )´...
Abraço!
Gostei + 0
28/07/2009
Emerson Nascimento
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;
Gostei + 0
28/07/2009
Nino Marques
Compila sem erros..mas na execução...Runtime error..
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)