Fórum Gravando dados com ADO #254511

14/10/2004

0

Olá companheiros!

Seguinte estou usando um TADOQuery para acessar, altera, gravar e etc os registros de uma determinada tabela. Quando tento inserir um novo registro, é retornado um erro de primary-key. Foi então que percebi que ao executar o comando POST na TADOQuery, ele tentava inserir dados nas demais tabelas declaradas na clausula WHERE.

Alguém saberia me ajudar com esse problema!?


Segue abaixo a clausula where da TADOQuery:

[b:7278697821]

SELECT TAB1.*, TAB2.DESCRICAO , TAB3.DESCRICAO

FROM TAB1
INNER JOIN TAB2 ON TAB1.IDITAB2 = TAB2.IDTAB2
INNER JOIN TAB3 ON TAB1.IDITAB3 = TAB3.IDTAB3




ORDER BY TAB1.NOME
[/b:7278697821][color=yellow:7278697821][/color:7278697821]


Yale

Yale

Responder

Posts

14/10/2004

Bon Jovi

Use o ADOQuery (preferencia ADODataSet) em conjunto com midas (clientdataset e datasetprovider). É mais seguro nesse caso.

Nos TFields do clientdataset set os ProviderFlags = [pfInUpdate,pfInWhere,pfInKey] no(s) campo(s) da chave primaria da tabela que queria gravar. Pros campos q queira gravar e q nao fazem parte da chave primaria, set os ProviderFlags = [pfInUpdate]. E pros campos que nao queira gravar set os ProviderFlags = [].

No DataSetProvider set o UpdateMode = upWhereKeyOnly. E no evento OnGetTableName coloque: TableName := ´TABELA_QUE_QUEIRA_GRAVAR´;


Responder

Gostei + 0

14/10/2004

Bon Jovi

Em ´Nos TFields do clientdataset set os ProviderFlags´ faça o mesmo principalmente no dataset do ado.


Responder

Gostei + 0

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

Aceitar