Fórum Insert com Loop? #298614

06/10/2005

0

Olá pessoal !

Alguém pode me ajudar nessa tarefa ?

Preciso fazer um loop inserindo informações em uma tabela,
Tenho três informações:

Hora Inicial, Hora Final e Duração

Preciso incluir registro em uma tabela incrementando a duração na hora inicial até chegar na hora final.

Tentei com While mais não deu certo, alguém pode me ajudar ?

Obrigada.


Renatacoimbra

Renatacoimbra

Responder

Posts

06/10/2005

Rjun

Por que não de certo com o WHILE? Poste o código para darmos uma olhada.


Responder

Gostei + 0

06/10/2005

Renatacoimbra

O código que testei vou assim:

[quote]While iHora <> fHora do begin
       iHora := ihora + Duracao;
       
      //Inset 
 end;



Responder

Gostei + 0

06/10/2005

Rjun

Não faça comparaçoes simples de igualdade com tipos DateTime pois eles são fracionários. Utilize comparações com maior igual ou menor igual.

while iHora < fHora do 
  iHora := ihora + Duracao; 



Responder

Gostei + 0

06/10/2005

Renatacoimbra

Mesmo assim não deu certo


 while not i >= f do begin
       i := i + Duracao;
       // Insert
      // ApplyUpdates
  end;




Responder

Gostei + 0

06/10/2005

Rjun

Que tipo são as variáveis i, f e Duracao? Sua aplicação entra no loop? Quais os valores iniciais de i e f? Que banco você esta usando?


Responder

Gostei + 0

06/10/2005

Renatacoimbra


i = HoraInicial  // Iniciada com 08:00 por exemplo
f = HoraFinal   // Iniciada com 18:00 por exemplo
Duracao = é o intervalo de um registro para o outro nos meus insert,
 o Valor dele pode ser 20 minutos

Eu Uso o banco Oracle.




Responder

Gostei + 0

06/10/2005

Siam

Seus cpos i e f são TDatetime certo?
E o campo duracao ?


Responder

Gostei + 0

06/10/2005

Renatacoimbra

Esses são os tipos:

[b:5083568bc7]i, f: TDateTime
Duracao: Inteiro[/b:5083568bc7]


Responder

Gostei + 0

06/10/2005

Siam

Quando vc soma um inteiro a um TDate, vc está somando dias.
É isso mesmo que vc quer ?


Responder

Gostei + 0

06/10/2005

Renatacoimbra

siam, brigada pela atenção !

Olha só:

i e f são TDateTime, eu uso só a hora dessas variaveis.
Duracao é inteiro, nessa variavel eu coloco a quantidade de minutos a incrementar, veja o código:

while not i >= f do begin 
       i := IncMinute(i, Duracao);  // IncMinute  da Unt DateUtils
       // Insert                             // i e a hora atual e Duracao são min 
                                               // a incrementar na hora      
 
  end; 






Responder

Gostei + 0

06/10/2005

Siam

no While, o [b:8a56b4964a]not[/b:8a56b4964a] já é um dos operadores; então requer parenteses:
while not (i >= f) do begin



Responder

Gostei + 0

06/10/2005

Renatacoimbra

Valeu Siam, brigada !


perdir umas duas horas só por causa do ( ... )   :oops: 




Brigada mesmo.


Responder

Gostei + 0

06/10/2005

Siam

De nada ! :D


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar