Sobre atualização de CDS...

Delphi

02/05/2005

pessoal tenho um CDS que funciona para inserção mas não para atualização


Bruno Belchior

Bruno Belchior

Curtidas 0

Respostas

Nerdex

Nerdex

02/05/2005

CDS do ClientDataSet? Se sim... pode entrar no modo de edição = Edit para atualização?!


GOSTEI 0
Bruno Belchior

Bruno Belchior

02/05/2005

eu já estou em modo de edição, vamos supor que tenho a tabela
Clientes --------------- IdCliente Nome CPF
e faça
CDS.Insert;
CDSIdCliente.AsString := 1;
CDSNome.AsString := ´Testando´;
CDSCPF.AsString := ´000.000.000-00;
CDS.Post
ele [b:e455462c46]insere[/b:e455462c46] corretamente porém se seguindo eu fizer
CDS.Edit;
CDSNome.AsString := ´Testando´2;
CDSCPF.AsString := ´000.000.000-01;
CDS.Post
o [b:e455462c46]ApplyUpdates[/b:e455462c46] me retorna [b:e455462c46]um[/b:e455462c46] erro...


GOSTEI 0
Bruno Belchior

Bruno Belchior

02/05/2005

só pra complementar me ocorre o segundo erro [b:883b976ef0]Unable to find record. No key specifie[/b:883b976ef0], porém debugando o CDS está posicionado no Registro um com chave 1...


GOSTEI 0
Anfm

Anfm

02/05/2005

Talvez o select deste CDS esteja trazendo os campos de uma outra tabela(join) e por este motivo, quando ele tenta gravar ele não encontra estes campos da outra tabela e por isso retorna este erro.

Verifique todos os seus campos(clique duas vezes no seu CDS e adicione os campos do seu select) e na propriedade Required coloque false para os campos que não são da sua tabela e verifique as propriedades do ProviderFlags se estão corretas.

Espero ter ajudado.


GOSTEI 0
Bruno Belchior

Bruno Belchior

02/05/2005

não, é um [b:fc05c6a98b]select[/b:fc05c6a98b] bem simples tipo
select * from clientes



GOSTEI 0
Rômulo Barros

Rômulo Barros

02/05/2005

:arrow: [color=blue:bf7e7e69ed]Selecione o DataSetProvider e altera a propriedade [b:bf7e7e69ed]UpdateMode [/b:bf7e7e69ed]para [b:bf7e7e69ed][u:bf7e7e69ed]WhereKeyOnly[/u:bf7e7e69ed][/b:bf7e7e69ed].[/color:bf7e7e69ed]
[color=blue:bf7e7e69ed] :!: Agora, adicione todos os [b:bf7e7e69ed]Fields[/b:bf7e7e69ed] na sua [b:bf7e7e69ed]SqlQuery [/b:bf7e7e69ed]e [b:bf7e7e69ed]ClientDataSet[/b:bf7e7e69ed].[/color:bf7e7e69ed]
:roll: [color=blue:bf7e7e69ed]Agora, configure a propriedade [u:bf7e7e69ed][b:bf7e7e69ed]ProviderFlags[/b:bf7e7e69ed][/u:bf7e7e69ed] de cada Field ( [u:bf7e7e69ed]da SqlQuery e do ClientDataSet[/u:bf7e7e69ed] ) da seguinte forma:[/color:bf7e7e69ed]
:idea:

[b:bf7e7e69ed]IdCliente:[/b:bf7e7e69ed]

pflnUpdate = True
pflnWhere = True
pflnKey = True
pflnHidden = False

[b:bf7e7e69ed]Nome [/b:bf7e7e69ed]

pflnUpdate = True
pflnWhere = False
pflnKey = False
pflnHidden = False

[b:bf7e7e69ed]Nome [/b:bf7e7e69ed]

pflnUpdate = True
pflnWhere = False
pflnKey = False
pflnHidden = False

[b:bf7e7e69ed]CPF[/b:bf7e7e69ed]

pflnUpdate = True
pflnWhere = False
pflnKey = False
pflnHidden = False

:twisted: [i:bf7e7e69ed][u:bf7e7e69ed][color=red:bf7e7e69ed][b:bf7e7e69ed]Pronto, sua aplicação não apresentará mais os erros descritos por vc.[/b:bf7e7e69ed][/color:bf7e7e69ed][/u:bf7e7e69ed][/i:bf7e7e69ed]


GOSTEI 0
Bruno Belchior

Bruno Belchior

02/05/2005

não fiz o q vc disse, mas reconstrui minhas ligações e funcionou, talvez eu tenha ligado erroneamente o CDS, porém o curioso é que para inserção funcionou...


GOSTEI 0
POSTAR