ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

ajuda em código para gravação no banco... não esta gravando

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
perdiga
Novato
Novato


Registrado: Quarta-Feira, 8 de Março de 2006
Mensagens: 86

MensagemEnviada: Sex Out 06, 2006 8:31 am    Assunto: ajuda em código para gravação no banco... não esta gravando Responder com Citação

Galera, to com um problemão e por isso estou colocando o código para que vc\'s possam a vir me dar uma ajuda........

esse código abaixo e de um timer igual a esse tenho mais cinco rss que fazem esta tarefa a cada 1s rs.... o problema é o seguinte em algumas partes do código que não estão gravando... vou colocar em negrito o que não esta gravando assim fica mais fácil ok....

OBS: os campos no banco estão com Time...

bom galera se no código vc\'s verem algo que poderia melhorar tmb fiquem a vontade , pois sou meio novato ok...
abraços....



procedure TDMGeral.TmrGrava_AC1Timer(Sender: TObject);
var
AInicioCiclo,AFinalCiclo,DataHora,InicioVulcanizacao,HentAquecimento,
HentDescSaco: TDateTime;
aux,ciclo:Integer;
begin
DataHora:=now;
{=============================================================================
Se estiver em ciclo Registra os primeiros dados Nas Tabelas Dados_Pneus e
Dados_Tecnicos,faz um registro só entao, após isso registra os dados de
pressao e temperatura conforme eles acontecem.
=============================================================================}
with DMTabelas do
Begin
qryDadosTec_AC1.Open;//abre a tabela de dados_tecnicos
qryDadosPneus_AC1.Open;//abre a tabela de dados_Pneus
qryVulcanizacao_AC1.Open;//abre a tabela de vulcanização
If Not IBTransVulcanizacao.Active Then
IBTransVulcanizacao.StartTransaction;//inicia a transação de vulcanização
If Not IBtransDadosTecnicos.Active Then
IBtransDadosTecnicos.StartTransaction;//Inicia a transação de dados tecnicos
If Not IBTransDadosPneus.Active Then
IBTransDadosPneus.StartTransaction;//Inicia a transação para gravação na tabela dados_pneus.

AInicioCiclo := IncMinute(Time, - autoclave_1[15]);//passa para a variavel AinicioCiclo a hora em que o ciclo inicio

If bitStsIniCiclo1 Then//verifica se a máquina esta em ciclo
begin
qryDadosPneus_AC1.Last;//aponta para o ultimo registro da tabela.
{=======================================================================
se a ultima rodada gravada no banco é menor que o ciclo atual, então
grava a nova rodada.
=======================================================================}
If qryDadosPneus_AC1ID_RODADA.AsInteger < autoclave_1[6] Then
begin
{=================================================================
consulta para poder pegar o ultimo ciclo gravado, apos é feita
a consulta para pegar a hfinal do ciclo para saber quanto tempo
de máquina parada.
================================================================}
qryConsultaTecnicos.Close;
qryConsultaTecnicos.Sql.Clear;
qryConsultaTecnicos.SQL.Add(\'SELECT MAX(ID_RODADA)ciclo FROM DADOS_PNEUS\');
qryConsultaTecnicos.Open;
ciclo:=qryConsultaTecnicos.fieldbyname(\'ciclo\').AsInteger;

qryConsultaTecnicos.Close;
qryConsultaTecnicos.Sql.Clear;
qryConsultaTecnicos.SQL.Add(\'SELECT ID_RODADA,HFINALCICLO FROM DADOS_TECNICOS_AC1 WHERE ID_RODADA=\'+IntToStr(ciclo));
qryConsultaTecnicos.Open;
AFinalCiclo:=qryConsultaTecnicos.fieldbyName(\'HFINALCICLO\').Value;
qryConsultaTecnicos.Close;

qryDadosPneus_AC1.Insert;
qryDadosTec_AC1.Insert;
qryDadosPneus_AC1ID_RODADA.AsInteger := autoclave_1[6];
qryDadosTec_AC1ID_RODADA.AsInteger := autoclave_1[6];
qryDadosTec_AC1HINICIOCICLO.Value := AInicioCiclo;
qryDadosTec_AC1HENTAQUECIMENTO.Value :=0;
qryDadosTec_AC1HINICIOVULCANIZACAO.Value:=0;
qryDadosTec_AC1HENT3PRES.Value :=0;
qryDadosTec_AC1HDESCSACO.Value :=0;
qryDadosTec_AC1HDESCAUTOCLAVE.Value :=0;
qryDadosTec_AC1HFINALCICLO.Value :=0;
qryDadosTec_AC1TCARREGAMENTOAR.Value:=0;
{=================================================================
Testa para ver se a horafinal de ciclo não esta zerada se estiver
grava a hora zerada.
gravação do tempo de máquina parada.
=================================================================}
If TimeToStr(AFinalCiclo) <> \'00:00:00\' Then
qryDadosTec_AC1TMAQUINA_PARADA.Value:= StrToTime(\'23:59:59\') - AFinalCiclo + StrToTime(\'00:00:01\') + AInicioCiclo
else
qryDadosTec_AC1TMAQUINA_PARADA.Value:= strToTime(\'00:00:00\');

qryDadosPneus_AC1.Post;
qryDadosTec_AC1.Post;
end;
//salva as alterações na tabela de dados pneus.
IBTransDadosPneus.Commit;//salva alterações na base
qryDadosPneus_AC1.Close;//fecha o dataset.
IBTransDadosPneus.Active:=False;

//se a data atual for menos que a ultima registrada em banco então grava
if DataHora > IncMinute(qryVulcanizacao_AC1DH.Value, 1) then
begin
// Registros de pressao e temperatura
qryVulcanizacao_AC1.Insert;
qryVulcanizacao_AC1ID_RODADA.asInteger := autoclave_1[6];
qryVulcanizacao_AC1DH.Value := Now;//hora atual
qryVulcanizacao_AC1TEMPERATURA.Value := autoclave_1[10]/10;
qryVulcanizacao_AC1PRESSAO_SACO.Value := autoclave_1[9]/100;
qryVulcanizacao_AC1PRESSAO_AC.Value := autoclave_1[7]/100;
qryVulcanizacao_AC1PRESSAO_ENVELOPE.value := autoclave_1[8]/100;

qryVulcanizacao_AC1.Post;//Salva alterações na tabela de vulcanização
IBTransVulcanizacao.Commit;//Grava na base
qryVulcanizacao_AC1.Close;//Fecha o dataset de vulcanização
IBTransVulcanizacao.Active:=False;
//grava na tabela de dados tecnicos .
qryDadosTec_AC1.Edit;
qryDadosTec_AC1QTD_DESCARGAAC.AsInteger:=autoclave_1[28];
qryDadosTec_AC1QTD_CARGAAC.AsInteger:=autoclave_1[27];
qryDadosTec_AC1QTD_DESCARGASACO.AsInteger:=autoclave_1[30];
qryDadosTec_AC1QTD_CARGASACO.AsInteger:=autoclave_1[29];
qryDadosTec_AC1QTD_DESCARGAENVELOPE.AsInteger:=autoclave_1[32];
qryDadosTec_AC1QTD_CARGAENVELOPE.AsInteger:=autoclave_1[31];
qryDadosTec_AC1QTD_AQUECIMENTO.AsInteger:=autoclave_1[33];
qryDadosTec_AC1TACUMULADO_AQUECIMENTO.value:=autoclave_1[34];

qryDadosTec_AC1.Post;//Salva alterações na tabela de dados_tecnicos
IBTransDadosTecnicos.Commit;//Commita na tabela
qryDadosTec_AC1.Close;//Fecha o dataset de dados_tecnicos
IBTransDadosTecnicos.Active:=False;//Fecha a transação
end;
qryVulcanizacao_AC1.Close;//Fecha o dataset de vulcanização
IBTransVulcanizacao.Active:=False;
qryDadosTec_AC1.Close;//Fecha o dataset de dados_tecnicos
IBTransDadosTecnicos.Active:=False;//Fecha a transação
end// fim do IF bitStsIniCiclo1.
else
begin
qryDadosPneus_AC1.Close;
IBTransDadosPneus.Active:=False;
end;
//inicia a transação e abre novamente o dataset para gravar na tabela de dados_tecnicos
If not qryDadosTec_AC1.Active Then
qryDadosTec_AC1.Open;
if Not IBTransDadosTecnicos.Active Then
IBtransDadosTecnicos.StartTransaction;

IF bitStsCarrAr1 Then//Se o bit de carregamento de ar for verdadeiro, grava o tempo de carregameto.
If qryDadosTec_AC1TCARREGAMENTOAR.Value = 0 Then
begin
qryDadosTec_AC1.Edit;
[b] qryDadosTec_AC1TCARREGAMENTOAR.Value:= now - AInicioCiclo;//[/b]Grava o tempo de carregamento de ar....
qryDadosTec_AC1.Post
end;
{===========================================================================
se estiver aquecendo, grava em banco o horario de inicio do aquecimento
============================================================================}
if bitStsEntAque1 then
if qryDadosTec_AC1HENTAQUECIMENTO.Value = 0 then
begin
HentAquecimento:=Now;
qryDadosTec_AC1.Edit;
qryDadosTec_AC1HENTAQUECIMENTO.Value := HentAquecimento;
[b] qryDadosTec_AC1TPRE_CARGA.Value:= HentAquecimento - AInicioCiclo;//Grava o tempo de pre carga......[/b] qryDadosTec_AC1.Post;
end;
{===========================================================================
Se entrar o controle da terceira pressao registra no banco,
só registra se ja existir o registro inicial na tabela de dados técnicos
===========================================================================}
if bitStsEnt3Press1 then
if qryDadosTec_AC1HENT3PRES.Value = 0 then
begin
qryDadosTec_AC1.Edit;
qryDadosTec_AC1HENT3PRES.Value := Now;
qryDadosTec_AC1.Post;
end;
{===========================================================================
Se estiver Vulcanizando, grava a hora de inicio da vulcanização.
===========================================================================}
If bitStsVulcanizando1 Then
if qryDadosTec_AC1HINICIOVULCANIZACAO.Value = 0 Then
begin
qryDadosTec_AC1.Edit;
InicioVulcanizacao:=Now;
qryDadosTec_AC1HINICIOVULCANIZACAO.Value := InicioVulcanizacao;
qryDadosTec_AC1PREVISAO.Value :=InicioVulcanizacao - autoclave_1[17];
[b] qryDadosTec_AC1TPRE_AQUECIMENTO.Value := InicioVulcanizacao - HentAquecimento;//Grava o tempo de aquecimento......[/b] qryDadosTec_AC1.Post;
end;
//Descarregando saco de ar
If bitStsDescSA1 Then
if qryDadosTec_AC1HDESCSACO.Value = 0 Then
begin
HentDescSaco:=Now;
qryDadosTec_AC1.Edit;
qryDadosTec_AC1HDESCSACO.Value := HentDescSaco;
qryDadosTec_AC1.Post;
end;
//Descarregando autoclave
If bitStsDescAC1 Then
if qryDadosTec_AC1HDESCAUTOCLAVE.Value = 0 Then
begin
qryDadosTec_AC1.Edit;
qryDadosTec_AC1HDESCAUTOCLAVE.Value := Now;
qryDadosTec_AC1.Post;
end;
//Ciclo completo
If bitStsCicloCompleto1 Then
begin
qryDadosTec_AC1.Edit;
qryDadosTec_AC1HFINALCICLO.Value := Now;
[b] qryDadosTec_AC1TDESCARREGAMENTO.Value:= Now - HentDescSaco;//Grava o Tempo de descarregamento.........[/b]
qryDadosTec_AC1.Post;
end;
//fecha os dataset\'s e grava no banco dando um commit nas tabelas.
IBTransDadosTecnicos.Commit;
qryDadosTec_AC1.Close;
IBTransDadosTecnicos.Active:=False;
{=============================================================================
verifica se houve disparo de alarmes se tiver alarmes, então chama o metodo
gravaAlarmes passando como parametro o nº da autoclave,o nº do alarme e o
ciclo para que seja gravado na tabela temporaria, para ser reconhecidos.
=============================================================================}
If Autoclave_1[1] <> 0 Then
begin
aux:=autoclave_1[1];
If auxAlarme1 <> aux Then
gravaAlarmes(1,autoclave_1[1],autoclave_1[6]);
auxAlarme1:=aux;
exit;
end;
auxAlarme1:=0;
end;
end;

[Editado em 6/10/2006 por perdiga]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
perdiga
Novato
Novato


Registrado: Quarta-Feira, 8 de Março de 2006
Mensagens: 86

MensagemEnviada: Sex Out 06, 2006 11:35 am    Assunto: ajuda em código para gravação no banco... não esta gravando Responder com Citação

e ai pessoal, alguem tem alguma ideia do pq esses dados não gravam e o resto grava, e ja fiz um teste por fora para ver se não era problema com banco , tabelas e tals.. mas não é pq grava perfeitamente...

Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB