Gravando dados com ADO
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]
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
Curtidas 0
Respostas
Bon Jovi
14/10/2004
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´;
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´;
GOSTEI 0
Bon Jovi
14/10/2004
Em ´Nos TFields do clientdataset set os ProviderFlags´ faça o mesmo principalmente no dataset do ado.
GOSTEI 0