ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como ignorar um campo no DataSetProvider ?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
CarneiroDelphi
Experiente
Experiente


Registrado: Sexta-Feira, 5 de Agosto de 2005
Mensagens: 417

MensagemEnviada: Sex Jan 04, 2008 4:38 pm    Assunto: Como ignorar um campo no DataSetProvider ? Responder com Citação

Olá pessoal.

Preciso fazer o DataSetProvider ignorar o campo código, para que eu possa selecionalo normalmente e assim usá-lo caso necessário.

O tópico está no link abaixo:
http://www.activedelphi.com.br/forum/viewtopic.php?t=37436


Como verão no tópico, tentei usar a ProviderFlag pfHidden mais não deu certo.

Se puderem me ajudar eu agradeço.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
under
Novato
Novato


Registrado: Quinta-Feira, 6 de Dezembro de 2007
Mensagens: 50

MensagemEnviada: Qua Jan 09, 2008 3:51 pm    Assunto: Responder com Citação

Quando eu não quero fazer update em um campo faço o seguinte:
No ClienteDataSet > FieldsEditor > ProvidersFlags e pfUpdates (false).
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CarneiroDelphi
Experiente
Experiente


Registrado: Sexta-Feira, 5 de Agosto de 2005
Mensagens: 417

MensagemEnviada: Qua Jan 09, 2008 6:52 pm    Assunto: Responder com Citação

Caro Under.

Como passei um link em um post anterior nesse mesmo tópico, verá que foi resolvido, apesar de ter sido em partes, mais se procurar por outro tópico meu chamado: "Key Violation" verá que ainda tenho problemas.

O link é esse:
http://www.activedelphi.com.br/forum/viewtopic.php?t=37463

No caso você já deve saber que "Key Violation" significa "chave primaria invalida" mais meu campo é autoInc no banco de dados, e além do mais o erro ocorre no post do ClientDataSet e não no ApplyUpdates como deveria ser.

O tópico trás mais detalhes sobre tal problema, quem puder me ajudar, fico agradecido.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
under
Novato
Novato


Registrado: Quinta-Feira, 6 de Dezembro de 2007
Mensagens: 50

MensagemEnviada: Qui Jan 10, 2008 8:59 am    Assunto: Responder com Citação

Caro CarneiroDelphi,

Dei uma olhada rápida no seu código principalmente no botão salvar:

"procedure TFormCadPadrao.btnSalvarClick(Sender: TObject);
begin
if Assigned( Self.CDataSet ) then
begin
if not (CDataSet.State in [dsEdit, dsInsert]) then Exit;
CDataSet.Post;
Self.UpdateDataSource;
end;
btnNovo.SetFocus;
end"

Mas na hora q vc for salvar, o dataSet tem q estar em dsEdit ou dsInsert, não é isso?
Agora, pq vc colocou "not", ou seja, se ele não estiver em dsEdit ou dsInsert, faça o "Post"...? Deveria ser ao contrário, não Question


Corrija-me se estiver errado Smile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Allan_Johnson
Aprendiz
Aprendiz


Registrado: Terça-Feira, 29 de Agosto de 2006
Mensagens: 173

MensagemEnviada: Qui Jan 10, 2008 9:44 am    Assunto: Responder com Citação

Under,

se voce olhar bem mais detalhado o codigo, o que o carneiro delphi ta fazendo é testando o estado... se nao estiver em dsInsert ou dsEdit ele esta dando um Exit.. ou seja parando a execução...
_________________
Allan Johnson
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CarneiroDelphi
Experiente
Experiente


Registrado: Sexta-Feira, 5 de Agosto de 2005
Mensagens: 417

MensagemEnviada: Qui Jan 10, 2008 1:31 pm    Assunto: Responder com Citação

Caros amigos.

Under, o que o Allan_Johnson disse é o certo, estou testando, se não estiver certo em edição ou inserção então ele sai do procedimento sem fazer nada, ou seja, ele dá um Exit.

Mais enfim, o tópico tá crescendo, e infelizmente, ainda não consegui encontrar a solução.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
under
Novato
Novato


Registrado: Quinta-Feira, 6 de Dezembro de 2007
Mensagens: 50

MensagemEnviada: Sex Jan 11, 2008 9:28 am    Assunto: Responder com Citação

Olá,

Tá certo, eu não tinha visto o 'Exit' na frente!!!! Mas tive testando, e não sei se vc fez dessa forma, mas pode ser no 'ProviderFlags'.

Vc colocou assim: ClientDataSetID.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey, pfHidden];

Tenta desta forma: ClientDataSetID.FieldByName('ID').ProviderFlags := [pfInUpdate, pfInWhere];

t+
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CarneiroDelphi
Experiente
Experiente


Registrado: Sexta-Feira, 5 de Agosto de 2005
Mensagens: 417

MensagemEnviada: Sex Jan 11, 2008 6:44 pm    Assunto: Responder com Citação

Ok amigo, vou tentar depois retorno.

Mais enfim, porque retirar o InKey se o campo é uma chave primaria ?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
CarneiroDelphi
Experiente
Experiente


Registrado: Sexta-Feira, 5 de Agosto de 2005
Mensagens: 417

MensagemEnviada: Seg Jan 14, 2008 8:56 pm    Assunto: Responder com Citação

Não funcionou ainda.

O que preciso é que o ClientDataSet consiga inserir multiplos registros, pois como tá, depois de cada post ele dá "Key Violation."

No caso de uma venda, por exemplo, eu teria que enviar para o banco de dados os registros tudo de uma vez, pois enviar um item do pedido de cada vez, e depois o cliente chegar e falar que desistiu de uns 10 itens e ter que esperar o computador remover do banco de dados, isso numa rede de uma empresa grande seria tedioso, pois vários computadores fazendo vendas ao mesmo tempo já seria demorado, imagina ter que cancelar 10 itens.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB