Array
(
)

Sobre DbExpress não Grava

Pro2
   - 21 fev 2006

E AI BLZ
e o seguinte estou com algumas duvida aqui no Dbexpress
ProviderFlags

pra o campo chave eu estou colocando assim

pfInUpdate = True
pfInWhere = True
pfInKey = True

e nos de mais assim

pfInUpdate = True
pfInWhere = False
pfInKey = False

so que não esta gravando

quando edito os registros

eu coloca esta configuração do ProviderFlags tanto no ClientDataSet e tbm no SqlDataSet

onde posso esta errando
por que não esta gravando


para não ficar duvida eu chamo o metodo ApplyUpdates(0);


Rod8
   - 21 fev 2006

tente usar a flag nos demais campos:

pfInWhere = True

eu uso assim e nao tenho problemas ... so coloco:

pfInWhere = False
pfInUpdate = false

quando é um campo q nao pertence a tabela que pretendo gravar.


Martins
   - 21 fev 2006


Citação:
tente usar a flag nos demais campos:

pfInWhere = True

eu uso assim e nao tenho problemas ... so coloco:

pfInWhere = False
pfInUpdate = false

quando é um campo q nao pertence a tabela que pretendo gravar.


Está retornando algum erro ou simplesmente não grava?

vc está usando ClientDataSet e SqlDataset?


Michael
   - 22 fev 2006

Olá!

Além de ligar/desligar os flags mencionados, vc tbm tem que configurar a propriedade UpdateMode do DataSetProvider para upWhereKeyOnly. Assim o componente irá montar os comandos SQL utilizando a chave-primária definida acima na cláusula WHERE.


Citação:
tente usar a flag nos demais campos:

pfInWhere = True

eu uso assim e nao tenho problemas ... so coloco:

pfInWhere = False
pfInUpdate = false

quando é um campo q nao pertence a tabela que pretendo gravar.


A propriedade ProviderFlags da classe TField não serve exatamente para isso, mas sim para dizer como o DataSetProvider vai montar as instruções SQL de atualização da tabela no banco. Se vc deixar todos os campos configurados com pfInWhere, então a edição de um registro vai gerar algo assim:


Citação:
UPDATE TABELA SET CAMPO1=:CAMPO1, CAMPO2=:CAMPO, ... WHERE CAMPO1 = <VALOR_ANTIGO_DE_CAMPO1> AND CAMPO2 = <VALOR_ANTIGO_DE_CAMPO2>...


Isso pode causar problemas em alterações do mesmo registro por usuários diferentes. Há uma vídeo aula no site do ClubeDelphi, produzida pelo meu amigo Guinther Pauli, que mostra como usar essas propriedades do TField e do TDataSetProvider. Quem for assinante ou tiver comprado a revista na banca pode acessá-la [url=http://www.devmedia.com.br/visualizacomponente.aspx?comp=548&site=3]neste link[/url].

[]´s