Fórum Bronca interessante e desafiadora com Firebird, IBO, D7 #261781

13/12/2004

0

Alow pessoal.

Lá estou eu em frente ao meu computador e me fazem ums perguntinha:

Seria possível, que dependendo de uma situação, situação esta que seria que um campo da tabela de Serviços_Repetitivos (Campo OSAutomatica: varchar), tivesse um valor S (Sim), e que obrogatoriamente outros campos contivessem valores (Periodicidade: Integer, seria o numero de meses), (Proximadata: Date, seria uma data que faz parte do calculo final, ainda vou falar dela.), (DiasAntecedencia: Inteiro, seriam os dias de antecedencia).

Vamos ao ponto G da questão.

Tenho que varrer a tabela, verificar se tem algum registro com OSAutomatica, somar a ultimadata com a periodicidade, o resultado subtrair com o valor do campo diasantecedencia, e depois caso de confirmando que existe osautomatica, abrir o programa na data resultante dessa formulazinha aee. A Janela de OSautomatica será aberta em modo de inserção com um aviso de gravação obrigatória.

To bolando idéias para fazer isso, mas tá complicado.

Caso alguem entenda minha questão, ou seja, entende nem que seja um pouco do que eu falei acima, mandem respostas, com idéias se possível.

Agradeço muito, enquanto isso vou queimando alguns neuronios com isso


Aguardo respostas ok ?

Technos :shock:


Technos

Technos

Responder

Posts

13/12/2004

Rômulo Barros

Quero ajudá-lo, mas não consegui entender o que queres. Vc quer gravar todos esses dados em apenas um campo? É isso? e depois verificar e realizar as operações? Acertei ou não?


Responder

Gostei + 0

13/12/2004

Technos

Infelismente nao acertou.

Mas vo tentar tirar suas dúvidas. vo tentar esplicar.

É o seguinte, tenho uma tabela chamada de Servico_Repetitivo.

Ela tem uma porrada de campo, mas o que interessa pra nóis agora são os campos:

Periodicidade: Inteiro de 2 posições - Vai pegar os meses...
Proximadata: Tipo Data - Vai pegar uma data...
DiasAntecedencia: Inteiro - Vai pegar os dias....

O Cálculo é o seguinte, vo somar o valor do campo Proximadata com a Periodicidade, e o resultado vo subtrair pelo valor do campo Diasantecedentia, isso pra cada Registro, TUPLA, da minha tabela que terá como argumento, requisito, que o valor do campo OSAutomatica tenha o valor S, esse campo OS automatica é do tipo string, vai receber S ou N.

Sacou agora mano ?

Vo ter que varrer a tabela em busca de registros que tenha o valor do campo OSAutomatica igual a S. se achar, faço o calculo e quando estiver abrindo o programa, na data resultante do cálculo (lembre-se, o resultado do calculo é uma data), ele já abre com a tela de OS aberta em moddo de inserção.

Sacou ?

Acho que só vo resolver isso se eu modularizar isso. dividir para conquistar.

Technos :P


Responder

Gostei + 0

13/12/2004

Rômulo Barros

Posso lhe ajudar nos cálculos. O Resultado de cada cálculo para cada [u:21241bb035][color=red:21241bb035][b:21241bb035]TUPLA[/b:21241bb035][/color:21241bb035][/u:21241bb035] será armazenado em um TStrings apenas como exemplo.

procedure TForm1.Button1Click(Sender: TObject);
Var
   Resultado      : TDateTime;
   MeusResultados : Tstrings;
begin
   Try
     MeusResultados := TStringList.Create();
     With(QueryServico_Repetitivo)Do
     Begin
        Close();
        Open();
        While(Not(Eof))Do
        Begin
           If(FieldByName(´OSAutomatica´).AsString = ´S´)Then
           Begin
              Resultado := FieldByName(´ProximaData´).AsDateTime;
              IncMonth(Resultado,FieldByName(´Periodicidade´).AsInteger);
              Resultado := Resultado - FieldByName(´DiasAntecedencia´).AsInteger;
              MeusResultados.Add(FormatDateTime(´dd/mm/yyyy´,Resultado));
           End;
           Next();
        End;
     End;
   Finally
     FreeAndNil(MeusResultados);
   End;
end;



Responder

Gostei + 0

14/12/2004

Technos

Amigo, deixa eu continuar com a lógica dessa questão pra haver um sincronismo entre o meu penssamento e o seu....

O Código acima que vc me mandou, aparentemente está correto, nao retorna erros nem nada, tudo bem.

Mas saca só, o valor da variável Resultado nesse caso, vou comparar com a data corrente do sistema, ao usuário fazer logon no sistema.

Se a data do sistema for igual à data Resultante (Como sabemos, o resultado vai ser uma data obtida da soma do valor do campo ProximaData com o incremento do valor da Periodicidade, depois subtraindo com o valor do campo DiasdeAntecedencia), o sistema já vai entrar e abrir a tela de OS (Ordem de Serviço), já em modo de inserção, obrigando o usuario corrente fazer a nova OS.

Tentei fazer isso com algumas partes do código que vc me mandou, claro que retirando a questão da variavel String que vc usou, mas nao surtiu efeito, fiz os cálculos na mão com valores que já tem cadastrado, e o sistema nao fez nada.

Podemos continuar com a questão ?

Grato

Technos


Responder

Gostei + 0

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

Aceitar