Fórum Locate em CachedUpdates #573987
19/01/2017
0
Estou com uma dificuldade no desenvolvimento de uma rotina e tentarei explicar aqui de forma mais sucinta possível.
A aplicação possui um botão "Inserir registro" que ao clicar, aciona um Query.Append() para que a tabela entre em modo de inserção de registro, esta tabela está marcada como Cached Update. Até aí tudo bem, mas devido ela estar marcada como cached update, os registros ficam em memória e ao pressionar post ele irá gravar o registro no cache e depois que eu inserir todos os registros pretendentes nesta Query eu executo o Applyupdates.
Problema:
- Devido ela estar em cached, ela poderá aceitar vários registros iguais e minha tabela física possui chave primária exigindo que cada registros seja um registro diferente, mas não posso ter apenas uma chave de autoincremento pois o sistema exige que os dados devam ser todos diferentes e o problema ocorrerá ao executar o applyupdates.
Minha solução tinha sido colocar o append no botão gravar, pra que no momento em que eu gravasse o registro, antes ele inseria a linha e eu alimentava, mas quero que ele alimente estes registros quando eu estiver preenchendo os dados, ou seja, já deve estar em modo de append ao clicar em "inserir registro". Nesta solução eu poderia usar o Query.locate pra encontrar registros parecidos e mostrar uma mensagem antes de executar o Post da Query, mas no meu caso agora, eu não posso executar o locate pois ele irá perder as alterações e a Query sai do modo "dsInsert" e passa para o modo de "dsBrowse" e não poderei executar Post.
Então basicamente é isto: Preciso fazer uma busca nos registros que estão em cached e com a Query em modo de edição ou inserção. Se for encontrado algum registro igual, aparecerá a mensagem informando que não posso prosseguir enquanto não mudar os valores do registro. E se não for encontrado registro algum igual, ele prossegue com o Post normalmente.
Desde já agradeço a atenção de todos...
Att.:
Adriano Quintino
A aplicação possui um botão "Inserir registro" que ao clicar, aciona um Query.Append() para que a tabela entre em modo de inserção de registro, esta tabela está marcada como Cached Update. Até aí tudo bem, mas devido ela estar marcada como cached update, os registros ficam em memória e ao pressionar post ele irá gravar o registro no cache e depois que eu inserir todos os registros pretendentes nesta Query eu executo o Applyupdates.
Problema:
- Devido ela estar em cached, ela poderá aceitar vários registros iguais e minha tabela física possui chave primária exigindo que cada registros seja um registro diferente, mas não posso ter apenas uma chave de autoincremento pois o sistema exige que os dados devam ser todos diferentes e o problema ocorrerá ao executar o applyupdates.
Minha solução tinha sido colocar o append no botão gravar, pra que no momento em que eu gravasse o registro, antes ele inseria a linha e eu alimentava, mas quero que ele alimente estes registros quando eu estiver preenchendo os dados, ou seja, já deve estar em modo de append ao clicar em "inserir registro". Nesta solução eu poderia usar o Query.locate pra encontrar registros parecidos e mostrar uma mensagem antes de executar o Post da Query, mas no meu caso agora, eu não posso executar o locate pois ele irá perder as alterações e a Query sai do modo "dsInsert" e passa para o modo de "dsBrowse" e não poderei executar Post.
Então basicamente é isto: Preciso fazer uma busca nos registros que estão em cached e com a Query em modo de edição ou inserção. Se for encontrado algum registro igual, aparecerá a mensagem informando que não posso prosseguir enquanto não mudar os valores do registro. E se não for encontrado registro algum igual, ele prossegue com o Post normalmente.
Desde já agradeço a atenção de todos...
Att.:
Adriano Quintino
Rosilene Back
Curtir tópico
+ 0
Responder
Posts
19/01/2017
Marco Antônio
Adriano, bom dia.
Tenta clona seu dataSet( Query ) e trabalha com o locate no segundo de forma que não venha interferir no principal.
Abc.
Tenta clona seu dataSet( Query ) e trabalha com o locate no segundo de forma que não venha interferir no principal.
Abc.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)