Fórum Provider Flag x ProviderDataset #388343

13/10/2010

0

ola bom dia

existe algum material que me ensine a configurar corretamente o update mode do providerdataset de acordo com as provider flag das chaves?

valeu
Diego Macario

Diego Macario

Responder

Posts

14/10/2010

Eriley Barbosa

http://www.dotbr.com.br/fernando/lp_comercial/Datacar-ParteII.pdf
Responder

Gostei + 0

14/10/2010

Marcos Iwazaki

Em resumo.
Os dados mais importante que eu considero deste componenteDataSetProvider  Options = [poIncFieldProps -> propriedades como displayLabe, required, etc. Serão passadas para o ClientDataSet(ou outro dataset ligado a ele)                  ,poAllowCommandText  -> permite que vc consiga utilizar o commandText do ClientDataSet                  ,poRetainServerOrder -> isso pode dar uns "reverterios". É mais ou menos assim... as vezes no banco o order by funciona de uma maneira e no delphi de outra. Então é melhor sempre pegar da maneira do banco.
  UpdateMode = upWhereKeyOnly - o sql de atualização cria na clausula where apenas as PK                          upWhereAll - o sql de atualização cria na clausula where todos os campos da tabela.

  ** Ao usar o upWhereKeyOnly é obrigatório configurar certo os providerFlags de todos os fields nas Query.
Responder

Gostei + 0

14/10/2010

Diego Macario

http://www.dotbr.com.br/fernando/lp_comercial/Datacar-ParteII.pdf


cara justamente isso, eu fiz com base neste programa e ai pintou minha duvida
Responder

Gostei + 0

14/10/2010

Diego Macario

Em resumo.
Os dados mais importante que eu considero deste componenteDataSetProvider  Options = [poIncFieldProps -> propriedades como displayLabe, required, etc. Serão passadas para o ClientDataSet(ou outro dataset ligado a ele)                  ,poAllowCommandText  -> permite que vc consiga utilizar o commandText do ClientDataSet                  ,poRetainServerOrder -> isso pode dar uns "reverterios". É mais ou menos assim... as vezes no banco o order by funciona de uma maneira e no delphi de outra. Então é melhor sempre pegar da maneira do banco.
  UpdateMode = upWhereKeyOnly - o sql de atualização cria na clausula where apenas as PK                          upWhereAll - o sql de atualização cria na clausula where todos os campos da tabela.

  ** Ao usar o upWhereKeyOnly é obrigatório configurar certo os providerFlags de todos os fields nas Query.


cara me diga entao

eu tenho um programa aonde gera a chave pelo incremento do generator

e ai configurei ele com o inckey, where, update enabled

e deixei o datasetprovider como where key only

mas quando eu editava ou excluia dava um erro de key field requiered

mas preciso que eu possa fazer inserção, edição ou deleção mais de uma vez...

insiro, dou um post
deleto, dou um post
altero, dou um post
Responder

Gostei + 0

14/10/2010

Eriley Barbosa

Você tem que selecionar o campo chave e alterar sua propriedade Required para False, tanto no SQLDataset como no ClientDataset.
Responder

Gostei + 0

14/10/2010

Diego Macario

Você tem que selecionar o campo chave e alterar sua propriedade Required para False, tanto no SQLDataset como no ClientDataset.


cara esta como false...
Responder

Gostei + 0

14/10/2010

Marcos Iwazaki

verifique se na sua query esta configurado certoe se no ClientDataSet ele puxou certos essas flags.
Esse erro é q tem algum campo ae que é obrigatorio e não foi preenchido. Pode até ser um outro campo q não seja essa sua PK.
Responder

Gostei + 0

14/10/2010

Diego Macario

verifique se na sua query esta configurado certoe se no ClientDataSet ele puxou certos essas flags.
Esse erro é q tem algum campo ae que é obrigatorio e não foi preenchido. Pode até ser um outro campo q não seja essa sua PK.


ae socram, quando eu mudo as provider flags e o provider dataset ai da certo...

deixo em whereall
Responder

Gostei + 0

14/10/2010

Marcos Iwazaki

O ideal seria usar WhereKeyOnly
É mto mais rapido. 
No WhereAll tenha certeza que vc inicialize todos os campos not null e que tenham valores default no banco...Senão vai ficar aparecendo de vez enqdo a msg que o registros foi alterado por outro usuario e talz.




verifique se na sua query esta configurado certoe se no ClientDataSet ele puxou certos essas flags.
Esse erro é q tem algum campo ae que é obrigatorio e não foi preenchido. Pode até ser um outro campo q não seja essa sua PK.


ae socram, quando eu mudo as provider flags e o provider dataset ai da certo...

deixo em whereall
 
Responder

Gostei + 0

16/10/2010

Diego Macario

O ideal seria usar WhereKeyOnly
É mto mais rapido. 
No WhereAll tenha certeza que vc inicialize todos os campos not null e que tenham valores default no banco...Senão vai ficar aparecendo de vez enqdo a msg que o registros foi alterado por outro usuario e talz.




verifique se na sua query esta configurado certoe se no ClientDataSet ele puxou certos essas flags.
Esse erro é q tem algum campo ae que é obrigatorio e não foi preenchido. Pode até ser um outro campo q não seja essa sua PK.


ae socram, quando eu mudo as provider flags e o provider dataset ai da certo...

deixo em whereall
 


pessoal tentei e nao consigo achar uma solucao
oq fazer?

eu li q as providers do dataset nao podem estar iguais a do cds

é verdade?

a flah inkey serve para q?
Responder

Gostei + 0

18/10/2010

Eriley Barbosa

InfKey quando true para um campo, diz que o campo é chave primaria.
Responder

Gostei + 0

19/10/2010

Diego Macario

InfKey quando true para um campo, diz que o campo é chave primaria.


a solucao por mim encontrada foi

em modo de execucao, antes de editar, inserir ou deletar...mudar as provider flags

assim parou ou erro
Responder

Gostei + 0

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

Aceitar