Fórum Bronca interessante e desafiadora com Firebird, IBO, D7 #261781
13/12/2004
0
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
Curtir tópico
+ 0Posts
13/12/2004
Rômulo Barros
Gostei + 0
13/12/2004
Technos
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
Gostei + 0
13/12/2004
Rômulo Barros
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;
Gostei + 0
14/12/2004
Technos
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)