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]
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
Curtir tópico
+ 0
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´;
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
Clique aqui para fazer login e interagir na Comunidade :)