Gravação no BD Firebird só consiste quando fecho a aplicação
Pessoa, desculpem a minha ignorância, mas tô começando agora !!!
Eu tenho um formulário com um DBGrid aonde eu escolho um determinado cliente, dou 2 cliques no cliente que eu quero, neste momento abre outro formulário (ainda não consegui posicionar o registro deste formulário no cliente que eu cliquei no DBGrid, mas tudo bem esse é outro assunto) que tem o cadastro completo do cliente.
Clico no botão novo (dtm.iTablePropr.insert), insiro uma nova propriedade para o cliente 1 (este cliente já tinha 1 propriedade cadastrada) e depois clico em Salvar (dtm.iTablePropr.post) e fecho o formulário.
Quando volto para o formulário aonde tem o DBGrid (o qual eu escolho um determinado cliente) e faço a pesquisa das propriedades cadastradas para o cliente 1, e só retorna 1 (uma); deveria voltar 2(duas) porque eu acabei de cadastrar outra. Ai quando eu fecho a aplicação e compilo novamente e refaço a pesquisa, tá lá a MÁRDITA propriedade do cliente !!! o que tô fazendo de errado ??? deveria atualizar sem ter que sair da aplicação.
Obs: uso BD Firebird x Delphi 7
Abraço
Obrigado
Eu tenho um formulário com um DBGrid aonde eu escolho um determinado cliente, dou 2 cliques no cliente que eu quero, neste momento abre outro formulário (ainda não consegui posicionar o registro deste formulário no cliente que eu cliquei no DBGrid, mas tudo bem esse é outro assunto) que tem o cadastro completo do cliente.
Clico no botão novo (dtm.iTablePropr.insert), insiro uma nova propriedade para o cliente 1 (este cliente já tinha 1 propriedade cadastrada) e depois clico em Salvar (dtm.iTablePropr.post) e fecho o formulário.
Quando volto para o formulário aonde tem o DBGrid (o qual eu escolho um determinado cliente) e faço a pesquisa das propriedades cadastradas para o cliente 1, e só retorna 1 (uma); deveria voltar 2(duas) porque eu acabei de cadastrar outra. Ai quando eu fecho a aplicação e compilo novamente e refaço a pesquisa, tá lá a MÁRDITA propriedade do cliente !!! o que tô fazendo de errado ??? deveria atualizar sem ter que sair da aplicação.
Obs: uso BD Firebird x Delphi 7
Abraço
Obrigado
Ksotte
Curtidas 0
Respostas
Edilcimar
19/04/2006
Vc não está gravando em cache?
GOSTEI 0
Mvicente
19/04/2006
Amigo,
Se vc estiver usando componentes da palheta Interbase, vc deve dar um commmit na transação, se vc estiver usando dbExpress, não esqueça de dar um ApplyUpdates(0) após o post!
Qto a vc posicionar o registro no form, qdo clica no dbgrid, uma das maneiras q vc pode fazer é guardar o id do registro e qdo abrir o form dar um locate..Essa é uma entre várias...
Espero ter ajudado!
Marcelo
Se vc estiver usando componentes da palheta Interbase, vc deve dar um commmit na transação, se vc estiver usando dbExpress, não esqueça de dar um ApplyUpdates(0) após o post!
Qto a vc posicionar o registro no form, qdo clica no dbgrid, uma das maneiras q vc pode fazer é guardar o id do registro e qdo abrir o form dar um locate..Essa é uma entre várias...
Espero ter ajudado!
Marcelo
GOSTEI 0
Ksotte
19/04/2006
Marcelo, Bom Dia !
1)
Eu estou usando componentes da Paleta Interbase; estou dando commit mas na tabela eu tenho que dar um commit (nometabela.commit) isso depois do post; eu teria que fazer isso na transação ? (nometransação.commit) ??
2)
Me explica melhor como faz para posicionar o registro do outro formulário, a partir do click no DBGrid (por favor é claro rs...)
Abração
Kleber
1)
Eu estou usando componentes da Paleta Interbase; estou dando commit mas na tabela eu tenho que dar um commit (nometabela.commit) isso depois do post; eu teria que fazer isso na transação ? (nometransação.commit) ??
2)
Me explica melhor como faz para posicionar o registro do outro formulário, a partir do click no DBGrid (por favor é claro rs...)
Abração
Kleber
GOSTEI 0
Dli
19/04/2006
Para localizar/posicionar no registro:
tabela.locate(´nomedocampo´,codigo,[]).asInteger;
onde codigo pode ser um edit,dbEdit ou o proprio codigo.
Normalmente pego o codigo em um DBEdit que tem a informação gravada na tabela.
[]´s
Jose
tabela.locate(´nomedocampo´,codigo,[]).asInteger;
onde codigo pode ser um edit,dbEdit ou o proprio codigo.
Normalmente pego o codigo em um DBEdit que tem a informação gravada na tabela.
[]´s
Jose
GOSTEI 0
Aroldo Zanela
19/04/2006
Colega,
Dê um duplo clique no componente de transação e selecione a segunda opção do grupo Transaction properties, ou seja, read committed. No evento afterpost de seus objetos Table, queries, ou DataSets adicione o seguinte:
Dê um duplo clique no componente de transação e selecione a segunda opção do grupo Transaction properties, ou seja, read committed. No evento afterpost de seus objetos Table, queries, ou DataSets adicione o seguinte:
NomeObjetoTransação.CommitRetaining;
GOSTEI 0