Atualização só depois que o form fecha????

Delphi

25/08/2005

Algumas duvidas:

- Primeiro: Uso Delphi 7 / Interbase 6.0 / Firebird 1.5

- Pessoal, alguem poderia me dizer porque na minha aplicação os dados que ´gravo´ na tabela, na verdade nao sao gravados nele até que eu saia por completo da minha aplicação???? Alguem teria a solução para isso, para que ao apertar no botao salvar os dados fossem realmente gravados fisicamente na tabela....

exemplo de código:

procedure TLivros.Btn_SalvarClick(Sender: TObject);
                          begin
                              if Livros.Edit_Nome.Text = ´´ then
                              ShowMessage(´Campo Nome está vazio, por favor verifique´)
                              else
                                begin
                                    DM.Tbl_Livros.Last;
                                    If Not(DM.Tr_Livros.InTransaction) Then
                                    DM.Tr_livros.StartTransaction;


                                    DM.Tbl_Livros.insert;

                                    DM.Tbl_Livros.FieldByName(´Codigo´).AsInteger   := StrToInt(Edit_Codigo.Text);
                                    DM.Tbl_Livros.FieldByName(´Nome´).AsString      := Edit_Nome.text;
                                    DM.Tbl_Livros.FieldByName(´Tipo´).AsString      := Combo_Tipo.text;
                                    DM.Tbl_Livros.FieldByName(´Quantidade´).AsString:= Edit_Qtdade.text;
                                    DM.Tbl_Livros.FieldByName(´Autor´).AsString     := Combo_autor.text;
                                    DM.Tbl_Livros.FieldByName(´Editora´).AsString   := Combo_Editora.text;
                                    DM.Tbl_Livros.FieldByName(´Sinopse´).AsString   := Memo_Sinopse.Lines.Text;
                                    DM.Tbl_Livros.FieldByName(´Area´).AsString      := Combo_Area.text;
                                    DM.Tbl_Livros.FieldByName(´Exemplar´).AsString  := Edit_Exemplar.text;
                                    DM.Tbl_Livros.FieldByName(´Volume´).AsString    := Edit_Volume.text;
                                    DM.Tbl_Livros.FieldByName(´Local´).AsString     := Edit_LocalEdicao.text;
                                    DM.Tbl_Livros.FieldByName(´Ano_Edicao´).AsString:= Edit_AnoEdicao.text;
                                    DM.Tbl_Livros.FieldByName(´Edicao´).AsString    := Edit_Edicao.text;

                                    DM.Tbl_Livros.post;
                                    DM.Tbl_Livros.ApplyUpdates;


                                    ShowMessage(´Material Cadastrado Com Sucesso.´);
                                    limpa_Edit;
                                    Btn_Salvar.Enabled   := False;
                                    Btn_Editar.Enabled   := FALSE;
                                    Btn_Up.Enabled       := true;
                                    Btn_Down.Enabled     := true;
                                    Edit_Disable;
                                end;
                          end;



- outra duvida. nao consigo editar nenhuma tabela de minha aplicação. ja fiz de um tudo aqui ja postei duvidas no forum mais nao teve jeito... vou postar novamente o código de edição que uso aqui. os componentes do banco de dados sao os da paleta Interbase. a ligação está tudo ok. ja to ficando maluco com esse problema (ele ja se tornou uma novela aqui no meu serviço)... se alguem quiser envio as UNITS pra quem se habilitar a tentar resolver esse meistério da meia noite....
- O problema: Simplesmente nao edita, só isso, mas o código roda até a mensagem de material editado com sucesso...

procedure TLivros.Btn_EditarClick(Sender: TObject);
        begin
            if Livros.Edit_Nome.Text = ´´ then 
            ShowMessage(´Campo Nome está vazio, por favor verifique´) 
            else 
                begin
                    
                    DM.Tbl_Livros.Edit; 

                    //DM.Tbl_LivrosCODIGO.AsInteger   := StrToInt(Edit_Codigo.text);
                    DM.Tbl_LivrosNome.AsString      := Edit_Nome.text; 
                    DM.Tbl_LivrosTipo.AsString      := Combo_Tipo.text; 
                    DM.Tbl_LivrosQuantidade.AsString:= Edit_Qtdade.text; 
                    DM.Tbl_LivrosAutor.AsString     := Combo_autor.text; 
                    DM.Tbl_LivrosEditora.AsString   := Combo_Editora.text; 
                    DM.Tbl_LivrosSinopse.AsString   := Memo_Sinopse.Lines.Text; 
                    DM.Tbl_LivrosArea.AsString      := Combo_Area.text; 
                    DM.Tbl_LivrosExemplar.AsString  := Edit_Exemplar.text; 
                    DM.Tbl_LivrosVolume.AsString    := Edit_Volume.text; 
                    DM.Tbl_LivrosLocal.AsString     := Edit_LocalEdicao.text; 
                    DM.Tbl_LivrosAno_Edicao.AsString:= Edit_AnoEdicao.text; 
                    DM.Tbl_LivrosEdicao.AsString    := Edit_Edicao.text; 

                    DM.Tbl_Livros.Post;
                    DM.Tbl_Livros.ApplyUpdates;

                    ShowMessage(´Material Editado Com Sucesso.´);
                    limpa_Edit; 
                    Btn_Salvar.Enabled   := False; 
                    Btn_Editar.Enabled   := FALSE; 
                    Btn_Up.Enabled       := true; 
                    Btn_Down.Enabled     := true; 
                    Edit_Disable; 
                end; 
        end;



Tabela
--------
CREATE TABLE "LIVROS"
(
  "CODIGO"INTEGER NOT NULL,
  "NOME"VARCHAR(100) NOT NULL,
  "QUANTIDADE"VARCHAR(50),
  "TIPO"VARCHAR(50),
  "AUTOR"VARCHAR(100),
  "SINOPSE"VARCHAR(1000),
  "EDITORA"VARCHAR(50),
  "EXEMPLAR"VARCHAR(50),
  "VOLUME"VARCHAR(50),
  "EDICAO"VARCHAR(50),
  "ANO_EDICAO"VARCHAR(50),
  "LOCAL"VARCHAR(50),
  "AREA"VARCHAR(50),
  "STATUS"VARCHAR(50),
  "RESERVA"VARCHAR(50),
CONSTRAINT "PK_LIVROS" PRIMARY KEY ("CODIGO")
);



Mahdak

Mahdak

Curtidas 0

Respostas

Edineidaniel

Edineidaniel

25/08/2005

Mahdak,

Você não especificou os componentes de acesso ao banco de dados, que você esta usando...

Mas acredito que seja da paleta InterBase.... Esses tm um sério problema na atualização dos dados em tempo de execussão...

Mas tm jeito de resolve....

1º - Você deve dar um Commit na transação...
2º - Atualizar a conexão com o banco....
3º - Atualizar a tabela ou Query...

Issoo!!!!

t+
Edinei


GOSTEI 0
Mahdak

Mahdak

25/08/2005

Mahdak, Você não especificou os componentes de acesso ao banco de dados, que você esta usando... Mas acredito que seja da paleta InterBase.... Esses tm um sério problema na atualização dos dados em tempo de execussão... Mas tm jeito de resolve.... 1º - Você deve dar um Commit na transação... 2º - Atualizar a conexão com o banco.... 3º - Atualizar a tabela ou Query... Issoo!!!! t+ Edinei



isso mesmo edinei, sao os componentes da paleta interbase... vc poderia dar um exemplo aqui pra mim de código de como adotar esses tres passos?, pq se eh omo estou pensando ja fiz e nao deu certo...

Abraços!


GOSTEI 0
Mahdak

Mahdak

25/08/2005

sobe, pessoal é importante.... :cry:


GOSTEI 0
Gandalf.nho

Gandalf.nho

25/08/2005

[b:57d6d01dae][color=red:57d6d01dae]Bloqueado por Infração às Regras de Conduta :[/color:57d6d01dae][/b:57d6d01dae]

Duplicidade.
[url]http://forum.clubedelphi.net/viewtopic.php?p=215114[/url]

Para maiores esclarecimentos pode mandar-me uma [url=http://forum.clubedelphi.net/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].


GOSTEI 0
POSTAR