Fórum Perda de dados interbase...ajudem #218500
05/03/2004
0
Tenho o seguinte problema...digo esta me tirando o sono...
Tenho um BD em Interbase e rodando em uma rede NT com varios clientes Win98 e win2000 o sistema apresentando algumas perdas de dados...tipo assim : faço a digitação de algumas turmas e entre 10 uma simplesmente desaparece...estou ficando puto com isso.
Estou usando TIBDatabase -> TIBTransaction -> TIBQuery para fazer os procedimentos e sim trabalho com Store Procedure no BD para os Inserts, Deletes e Updates.
No TIBTransaction esta setado para : read_commited , rec_version e nowait.
Eis uma chamda que estou usando :
procedure TF_Turmas.Chama_SP;
Begin
Try
If Not DM1.IBT1.InTransaction Then
DM1.IBT1.StartTransaction;
With DM1.SP1 Do
Begin
Close;
StoredProcName := ´SP_IAD_TURMA´; //Mudar o Nome da SP
ParamByName(´OPERACAO´).AsInteger := StrToInt(frOperacao.Caption);
ParamByName(´ID_ACAO´).AsString := Edit1.Text;
ParamByName(´ID_CONTRATO´).AsString := EditCodigoContrato.Text;
ParamByName(´CLIENTELA´).AsString := DelphiAllTrim(EditClientela.Text);
ParamByName(´ATIVIDADE´).AsString := DelphiAllTrim(EditAtividade.Text);
ParamByName(´OCUPACAO´).AsString := DelphiAllTrim(EditOcupacao.Text);
ParamByName(´DATA_INICIO´).AsDate := Strtodate(EditDataInicio.Text);
ParamByName(´DATA_FINAL´).Asdate := Strtodate(EditDataTermino.Text);
ParamByName(´LOCAL´).AsString := DelphiAllTrim(EditLocal.Text);
ParamByName(´ENTIDADE´).AsString := DelphiAllTrim(EditEntidade.Text);
ParamByName(´PERIODO´).AsString := DelphiAllTrim(EditPeriodoInicial.Text);
ParamByName(´ACAO´).AsString := DelphiAllTrim(EditAcao.Text);
ParamByName(´TREINANDO´).AsInteger := StrToInt(EditTreinandos.Text);
ParamByName(´CARGAHORARIA´).AsInteger:= StrToInt(EditCargaHoraria.Text);
ParamByName(´MUNICIPIO´).AsString := DelphiAllTrim(EditMunicipio.Text);
ParamByName(´PERIODO1´).AsString := DelphiAllTrim(EditPeriodoFinal.Text);
ExecProc;
End;
DM1.IBT1.CommitRetaining;
except
on E:Exception do
begin
DM1.IBT1.RollbackRetaining;
MessageDlg(´Tabela em uso exclusivo no momento...tente novamente´,Mterror,[MbOk],0);
end;
end;
End;
Vcs verão que estou realizando o CommitRetaining para confirmar a gravação.
Então o que esta de errado.....
[]´s
Fábio Cavalcanti
Cavalcanti.fabio
Curtir tópico
+ 0Posts
05/03/2004
Wtjunior
Aparentemente está tudo certo...
Vc sabe se o registro que não está ´desaparecendo´ é sempre o mesmo, por exemplo==> vc cadastra 10 e sempre o 7o. desaparece
verifique isso e tenho certeza que aqui no fórum vamos juntos resolver..
um abraço
Wilson
Gostei + 0
05/03/2004
Wtjunior
Sou eu de novo...
Faz algum tempo que não mexo com o Delphi (aliás preciso voltar, estou com saudades, atualmente estou trabalhando com Centura) e se não me engano existe um componente para ser usado com Storage Procedure... verifique isso
abraço
Wilson
Gostei + 0
05/03/2004
Weber
Quer dizer que ontem estava no banco e hoje não está mais?
Verifique isso, pois talvez não esteja nem inserindo no banco e eu não sei como a storeprocere vai se comportar quando der um erro de insert.
Gostei + 0
05/03/2004
Cavalcanti.fabio
O sistemas e um controle de turmas de cursos onde tenho uma tela principal com os dados do curso e da entidade que realiza e em outro tela tenho os dados dos treinandos para esta turma...até ai tudo bem...abrao uma nova turma e digitado os dados da mesma e então começo a digitar os dados dos treinandos na outra tela e ao fechar a tela de treinandos retorno a tela da turma e em uma grid verifico que os treinandos digitados estão lá ((((todos)))) e então imprimi uma etiqueta com as informaçõe de nro de turma , contratos e total de treinandos...até aqui tudo bem...só que tenho que fechar a tela de turmas e ir ao menu de relatorios e puxar os relatorio com os dados da turma e treinandos para anexar a basta.
Ao pedir o codigo da turma para impressão .... CADEEEEEEE os treinandos que entes eu imprimi a etiqueta apos a digitação....SOCORROOOO...o pessoal fica me perguntando o que houve e eu fico tentando entender o motivo...
será que dar para entender...
[]´s
fabio cavalcanti
Gostei + 0
05/03/2004
Weber
Tenta fazer um texte fazendo o Insert na mão, usando uma query e deixando a storeprocedure de lado.
Gostei + 0
05/03/2004
Catunda
Assim a quantidade de informação armazenada em memoria pode ser enorme e causar esses efeitos indesejaveis.
Um outro problema, tambem, pode ser essa utilização de stored procedures na manutenção dos dados, pois se sua aplicação roda em rede e uma stored procedure ou trigger deleta um registro que seja corrente em outro usuario, vc pode corromper todo o banco de dados, simplismente inutilizar totalmente o banco de dados.
Todavia faça o teste de inclusão de varias turmas mas fazendo uma de cada vez, faz uma sai da tela, imprime tudo que precisa dela e depois parte pra outra e veja se some alguma.
Espero ter ajudado.
Gostei + 0
05/03/2004
Buosinet
Em vez das procedures pra atualizar o banco, por que você não usa o TUpdateSQL, que já faz isso automaticamente?
Boa sorte
Buosi.
Gostei + 0
09/03/2004
Cavalcanti.fabio
Algum tem uma outra forma de se trabalha com o interbase e o delphi para tratamento de insert,delete e update.
Valeu,
[]´s
Fábio Cavalcanti
Gostei + 0
09/03/2004
Gandalf.nho
Gostei + 0
09/03/2004
Khundalini
[]s
Rubem Rocha
Manaus, AM
Gostei + 0
11/03/2004
Cavalcanti.fabio
Vcs poderiam me enviar exemplos de como vc procedem ( procedimentos ) para fazer as transações...quais componentes e a forma de trabalha...
valeu.
[]´s
t+
fabio cavalcanti
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)