Provider Flag x ProviderDataset

Delphi

13/10/2010

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

Curtidas 0

Respostas

Eriley Barbosa

Eriley Barbosa

13/10/2010

http://www.dotbr.com.br/fernando/lp_comercial/Datacar-ParteII.pdf
GOSTEI 0
Marcos Iwazaki

Marcos Iwazaki

13/10/2010

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.
GOSTEI 0
Diego Macario

Diego Macario

13/10/2010

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
GOSTEI 0
Diego Macario

Diego Macario

13/10/2010

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
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

13/10/2010

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

Diego Macario

13/10/2010

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


cara esta como false...
GOSTEI 0
Marcos Iwazaki

Marcos Iwazaki

13/10/2010

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.
GOSTEI 0
Diego Macario

Diego Macario

13/10/2010

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
GOSTEI 0
Marcos Iwazaki

Marcos Iwazaki

13/10/2010

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
 
GOSTEI 0
Diego Macario

Diego Macario

13/10/2010

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?
GOSTEI 0
Eriley Barbosa

Eriley Barbosa

13/10/2010

InfKey quando true para um campo, diz que o campo é chave primaria.
GOSTEI 0
Diego Macario

Diego Macario

13/10/2010

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
GOSTEI 0
POSTAR