[RESOLVIDO] calcular campo novo

boa noite criei uma consulta , mas preciso na pesquisa determinar a pesquisa entre duas datas (tempo)
exemplo : Hora de inicio e hora de para aquele registro , entao eu criei um campo chamado Tempo …
formato hora …
dai la no evento on record … não aparece como eu quero da erro… como eu faço a diferença entre dois campos horas
Hora_inic_cir
Hora_fim_cir

Tempo=fim menos a inicial

Cara não vou te dar o código pronto pois não sei o formato que está trabalhando, não sei oque quer retornar e fazendo é melhor para você rsrs…

Na consulta você vai adicionar um NOVO CAMPO, fazer as devidas configurações, de acordo com sua necessidade.

No Evento onRecord irá color o código mais ou menos assim:

{meu_campo_criado} = retorno da função do webhelp;

Possivelmente tu irá usar essa função:
sc_time_diff({hora1}, “Formato Hora1”, {hora2}, “Formato Hora2”)

WEBHELP
Procure no webhelp em macros e na parte que fala de DATAS.
http://downloads.scriptcase.com.br/downloads/v7/manual/pt_br/webhelp/manual_mp/manual_mp.htm

Boa Sorte.!!

Estou achando meio confuso esse tópico! :frowning:

wfelsky,
Você tentou usa a opção “Entre Dois Valores” na sua pesquisa?
Na consulta acesse Filtro / Condições do Filtro ; Clique no campo que vc quer configurara (hora) e marque a condição “Entre dois valores”
Espero ter ajudado.

[]s

Não deu … a aplicação é consulta …
dai tem os campos Hora_inic_cir e hora_fim_cir formato exibição hhmmss ambos
dai eu fui em consultas novo campo +
criei campo Tempo tipo (hora ) campo Tempo Label Tempo
dai eu fui em eventos on record
{Tempo}=sc_time_diff({Hora_inic_cir}, “hhmmss”, {hora_fim_cir}, “hhmmss”);
desse jeitinho … salvei
mandei gerar fonte e salvar e rodar
retornas os campo da consulta e o que eu criei mas ele tá vazio em todos os registros
NO CAMPO FORMATO INTERNO APARECE ASSIM HH:II:SS

boa tarde fred… na verdade eu nao sou desenvolvedor , mas manjo um pouquinho de plsql.
comprei a licença e fico tentando fazer algo …
é assim …
criei uma tabela chamada cirurgia e insiro dados no formulario …
la tem hora de inicio da cirurgia e hora fim …
mas dai eu quiz fazer uma consulta onde eu trago dois campos nome do procedimento (cirurgia ) e nome do médico
ai eu filtro por mes …
traz os dados legal …
mas dai eu pensei quero saber quantas hos gasta por mes para cada tipo de cirurgia … para ver qual medico gasta mais tempo… então eu fui em consulta mandei buscar
nome medico
nome cirurgia
data (formato ) mmyyyy
e ai então coloquei la no campo novo campo chamado (por exemplo ) tempo_cir
executo e sai vazio mas traz o campo … acho que por causa do evento on record
dai sim vou la e on record e coloco
{Variancia}=sc_time_diff({Hora_inic_cir}, “hhmmss”, {hora_fim_cir}, “hhmmss”);

continua vazio , sendo que o campo Hora_inic_cir ta assim hhmmss com aspas …certo:?? o que esta dando errado … me ajude

Qual o tipo desses campos “Hora_inic_cir e Hora_fim_cir” no banco?
Qual o SGBD que vc tá usando?
Tente exibir os campos “Hora_inic_cir e Hora_fim_cir” na consulta pra ver se está exibindo alguma coisa.

Você não vai poder usar a função direto no campo de exibição não, pois ela retorna um array… veja o ex.

Ex. 1: Formato geral
{diferencas} = sc_time_diff ({hora1}, “Formato hora1”, {hora2}, “Formato hora2”);

{dif_horas} = {diferencas[0]};
{dif_minutos} = {diferencas[1]};
{dif_segundos} = {diferencas[2]};


então no seu caso faz assim:

$difTime = sc_time_diff ({hora1}, “Formato hora1”, {hora2}, “Formato hora2”);
{meucampo} = $difTime[1]; a chave vc escolhe 0 diferenca horas, 1 diferenca minutos e 2 diferenca segundos.

Dê uma analisada e boa sorte.

Se possível, coloca a estrutura de sua tabela pra analisarmos! Quanto mais informações mais fácil de chegar a solução.

Abraço.

Agora deu certo … notei que estava colocando o nome do alias do campo… quando troquei pelo nome do campo da tabela ai rodou beleza… valeu

Wfelsky, por favor, qual é a versão do seu SC?
A minha é o SC6 e estou procurando essa opção de FORMATO INTERNO e parece que não existe.

minha é 7 mais ainda nao deu certo

Foi assim que consegui que funcionasse no SC 7.1, espero que ajude.

**/
 * PHP Methods -> totalTempo
 *
 * Calcular diferença entre dois tempos em horas.
 *
 * {HoraParagem} campo de basedados, hora final no formato TIME (hhmm)
 * {HoraArranque} campo de basedados, hora inicial no formato TIME (hhmm)
 * {TempoFunc} campo de formulario, diferença em horas no formato DECIMAL 2,1
 *
 * Adicionar Ajax Events
 *                     -> HoraParagem_onChange -> totalTempo();
 *                     -> HoraArranque_onChange -> totalTempo();
 * Adicionar Events
 *                     ->onLoadRecord -> totalTempo();
 * 
 * Maumad - 2014
 **/

$deltaTempo = sc_time_diff({HoraParagem}, "HH:II", {HoraArranque}, "HH:II"); // Calcula diferença devolve matriz
$deltaHoras = $deltaTempo[0] ; // Recebe horas da matriz
$deltaMinutos = $deltaTempo[1]; // Recebe minutos da matriz

$deltaMinutosDecimal = $deltaMinutos / 60; // Converte minutos em horas
{TempoFunc} = $deltaHoras + $deltaMinutosDecimal; // Atribui a soma de horas e minutos ao campo

Cumprimentos

“maumad”, Não sei seu nome, seria bom que nos identificássemos aqui pelo nome.

Este post eh bem antigo e sua solução eh exatamente a postada pelo nosso amigo Almeida.

Haroldo,

Desculpa não é normal usar nome na internet.

Só postei aqui a solução que funcionou comigo porque me parece que alguns amigos não perceberam bem a solução do amigo Almeida.
Chamo a atenção para o formato da hora “HH:II” que custou um pouco a descobrir.

Cumprimentos

Bom dia Mauro.

Aqui somos profissionais discutindo asintos tecnicos, não somos internautas aqui. Fico contente que tenha compreendido.

Que bo que resolveu.

Heheh só pra descontrair!

Me lembrei de uma piada antiga onde no batalhão de alistamento militar, antes obrigatório o Sargento sempre perguntava aos recrutas em fila:

Qual é seu Nome e Sobre nome…? Para definir o nome de guerra, sempre era pelo sobre nome.

O primeiro recruta diz… José Silva … Senhor!
O Sargento respondia:Ok! Seu nome de guerra será Silva guerreiro.

O segundo recruta diz… Pedro Oliveira . .Senhor
O Sargento respondia:Ok! Seu nome de guerra será Oliveira guerreiro.

O terceiro recruta diz… Gustavo Matias … Senhor
O Sargento respondia:Ok! Seu nome de guerra será Matias guerreiro.

.
.
.

Vigésimo e último disse: … Carlos Paixão … Senhor…
O Sargento demora alguns segundos… E diz: Ok! Seu nome de guerra será Carlão guerreiro.

Que bom que você não é recruta amigo Mauro :stuck_out_tongue: