Problema com atualizacoes em cache

27/12/2005

0

tenho um programa que resolvi dar uma incrementada nele...

É grande e é trabalhoso ... Mas na indas e vindas me apareceu um problema que esta me tirando do serio..

Tenho uma Query associada a um UpdateSQL1 , um dbgrid e um DataSouce

Na grid faço as alteraçoes nos campos

O Grande problema é quando faço uma[color=darkred:cee767225f] única [/color:cee767225f]alteração na Grid e Logo após preciso Executar os métodos query1.ApplyUpdates e query1.CommitUpdates;

antes de executar esses método eu testo se existe uma Transação pendende.. Para isso eu uso o if Query1.UpdatesPending then

O Código então fica assim ;

 if Query1.UpdatesPending then
     begin
          FormMovimentoCheques.query1.ApplyUpdates;
          FormMovimentoCheques.query1.CommitUpdates;
    end;


O Que esta ocorrendo é que nas situaçoes onde realizo[color=darkred:cee767225f] uma pequena alteração[/color:cee767225f] na base de dados via dbGrid a propriedade [b:cee767225f]Query1.UpdatesPending [/b:cee767225f]se mantem em[b:cee767225f] False [/b:cee767225f]o que impossibilita a [b:cee767225f]conclussão da Transição[/b:cee767225f] .. Pois os métodos
FormMovimentoCheques.query1.ApplyUpdates;
  FormMovimentoCheques.query1.CommitUpdates;

[color=darkred:cee767225f]Não são executados[/color:cee767225f]:cry: :cry: :cry:

:arrow:
Por outro lado se[b:cee767225f] apos [/b:cee767225f]esta pequena modificaçao na Base de Dados eu [color=darkred:cee767225f]usar[/color:cee767225f] a barra de rolagem , isto ja é [b:cee767225f]suficiente[/b:cee767225f] para que a propriedade
[color=darkred:cee767225f]Query1.UpdatesPending se transforme em True..[/color:cee767225f]
e com isto eu finalizo a transação

Vou tentar explicar com as figuras abaixo :

[b:cee767225f]Na primeira figura é o estad do Banco Inicial[/b:cee767225f]

[URL=http://imageshack.us][img:cee767225f]http://img445.imageshack.us/img445/4887/imagemtransacao11my.jpg[/img:cee767225f][/URL]

[b:cee767225f]Inicio uma alteração no primeiro Registro . Note que o Botão Refresh Esta Habilitado[/b:cee767225f]

[URL=http://imageshack.us][img:cee767225f]http://img445.imageshack.us/img445/5599/imagemtransacao22gl.jpg[/img:cee767225f][/URL]

[b:cee767225f]Na terceira e ultima etapa clico no Botao Refresh.. É neste botao que esta o Código [/b:cee767225f]

if Query1.UpdatesPending then
     begin
          FormMovimentoCheques.query1.ApplyUpdates;
          FormMovimentoCheques.query1.CommitUpdates;
    end;


[b:cee767225f]Na quarta e ultima etapa os Dados Não são gravados como se pode ver na figura abaixo[/b:cee767225f]

[URL=http://imageshack.us][img:cee767225f]http://img445.imageshack.us/img445/5599/imagemtransacao22gl.jpg[/img:cee767225f][/URL]

[b:cee767225f]O Problema é que mesmo que o campo Observaçoes foi modificado a propriedade Query1.UpdatesPending não alterou seu estado... Como alterar esta Propriedade , alterando simplesmente alguns dados na Base de Dados[/b:cee767225f]

Muito Obrigado...


Marco Salles

Marco Salles

Responder

Posts

27/12/2005

Thomaz_prg

Não uso BDE mas, se existe a necessidade de uma movimentação no ponteiro, tente gravar a posição atual e retorná-la. Por exemplo, antes do seu código (de gravação) tente colocar:

var p:pointer;

p := Query1.GetBookmark;

query1.next;

Query1.GotoBookMark(p);

Parece meio Quebra-Galhos, mas deve funcionar.


Responder

28/12/2005

Marco Salles

[b:1fc8438476]obrigado pela sua participaçao . [/b:1fc8438476]

Bem o fato curioso é o seguinte .. Este problema apareceu do nada . Anteriormente pelo que me costa eu conseguia gravar nas situaçoes onde não havia , digamos assim este ´deslocamento do Ponteiro´

a verdade é que antes mesmo de enviar esta mensagem eu ja tinha observado da necessidade desde deslocamento.. Mas não tinha certeza , se era so o deslocamento ou alguma propriedade da query no objecto inspector, que talves tivesse alterado meio sem querer ...

tinha feiro assim :
if datasource1.state in [DsEdit] then
  query1.post


Mas o que voce me passou não foi apenas um código , foi o conteudo de que nas atualizaçoes com cache usando BDE , é necessário ter o deslocamento do ponteiro.. Isto não esta escrito na biografia que estava lendo sobre o assunto :cry: :cry: :cry:


Responder

28/12/2005

Thomaz_prg

Então funcionou blz?


Responder

29/12/2005

Marco Salles

thomaz_prg
Então funcionou blz?


como eu tinha dito anteriormente :

Marco salles
tinha feiro assim : Código: if datasource1.state in [DsEdit] then query1.post


Eu ja tinha resolvodo o Problema em questão .. Somente estava em dúvida se era alguma configuração da query que eu porventura tivesse sida alterada , ou algo inetrente aos meus conhecimentos

Não apresentei a solução , porque muitas das vezes ninguem responde

So que voce colocou algo de novo :

thomaz_prg
Não uso BDE mas, se existe a necessidade de uma movimentação no ponteiro,


Marco salles
Isto não esta escrito na biografia que estava lendo sobre o assunto


Se esta informaçõa estiver correta , Eu dou por encerrado o assunto.

muito obrigado..


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar