Problemas para atualizar os dados no banco de dados.
Olá pessoal, estou aqui para pedir uma ajuda, estou fazendo meu projeto final de conclusão de curso, e esta acontecendo o seguinte problema no momento de salvar, não esta atualizando no banco de dados a informção, sempre esta dando Key Violantion.
Este é meu código do botão SALVAR !
Module.quTemp.Close;
Module.quTemp.SQL.Clear;
Module.quTemp.SQL.Add(´SELECT MAX(Fabri_Cod) AS MaxCod ´);
Module.quTemp.SQL.Add(´FROM SIGA_FABRI ´);
Module.quTemp.Open;
Module.qFabricanteFABRI_COD.Value := Module.quTemp.FieldByName(´MaxCod´).AsInteger + 1;
Module.quTemp.Close;
Module.qFabricante.Post;
{coloquei o ApplyUpdate pq nao estava gravando em banco}
Module.qFabricante.Refresh;
BAlterar.Enabled := True;
BIncluir.Enabled := True;
BExcluir.Enabled := True;
BProcurar.Enabled := True;
BAjuda.Enabled := True;
PnlDados.Enabled := False;
BGravar.Enabled := False;
quando vai salvar a primeira vez ele pega o MAX corretamente, mas depois que ele salva a segunda vez o MAX dele continua o mesmo da ultima vez que foi salvo.
Estou utilizando banco de dados Interbase, e os seguintes componentes, IBquery, IBTRansaction, IbUpdate, Datasource.
Me ajudem por favor ..
Obrigado. :D
Este é meu código do botão SALVAR !
Module.quTemp.Close;
Module.quTemp.SQL.Clear;
Module.quTemp.SQL.Add(´SELECT MAX(Fabri_Cod) AS MaxCod ´);
Module.quTemp.SQL.Add(´FROM SIGA_FABRI ´);
Module.quTemp.Open;
Module.qFabricanteFABRI_COD.Value := Module.quTemp.FieldByName(´MaxCod´).AsInteger + 1;
Module.quTemp.Close;
Module.qFabricante.Post;
{coloquei o ApplyUpdate pq nao estava gravando em banco}
Module.qFabricante.Refresh;
BAlterar.Enabled := True;
BIncluir.Enabled := True;
BExcluir.Enabled := True;
BProcurar.Enabled := True;
BAjuda.Enabled := True;
PnlDados.Enabled := False;
BGravar.Enabled := False;
quando vai salvar a primeira vez ele pega o MAX corretamente, mas depois que ele salva a segunda vez o MAX dele continua o mesmo da ultima vez que foi salvo.
Estou utilizando banco de dados Interbase, e os seguintes componentes, IBquery, IBTRansaction, IbUpdate, Datasource.
Me ajudem por favor ..
Obrigado. :D
Eliel_martins
Curtidas 0
Respostas
Pezzin
25/09/2005
Tudo indica que está faltando comitar o banco após o Post.
Module.quTemp.Close; Module.quTemp.SQL.Clear; Module.quTemp.SQL.Add(´SELECT MAX(Fabri_Cod) AS MaxCod ´); Module.quTemp.SQL.Add(´FROM SIGA_FABRI ´); Module.quTemp.Open; Module.qFabricanteFABRI_COD.Value := Module.quTemp.FieldByName(´MaxCod´).AsInteger + 1; Module.quTemp.Close; Module.qFabricante.Post; IBTransaction.Commit;
GOSTEI 0
Pezzin
25/09/2005
Desculpe mas é comando correto é CommitRetaining;
GOSTEI 0
Gandalf.nho
25/09/2005
[b:71cbc46bd3][color=red:71cbc46bd3]Bloqueado por Infração às Regras de Conduta :[/color:71cbc46bd3][/b:71cbc46bd3]
Duplicidade.
[url]http://forum.clubedelphi.net/viewtopic.php?t=68472[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Duplicidade.
[url]http://forum.clubedelphi.net/viewtopic.php?t=68472[/url]
Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
GOSTEI 0