Erro usando dbExpress
Estou usando dbExpress para acessar um bd Firebird.
Tenho uma tabela mestre ´Usuario´ com os dados dos usuários que podem acessar o sistema, e uma tabela de detalhes ´Opcao_Us´ com os direitos de acesso.
Uso o seguinte esquema de acesso:
SQLQuery -> DataSetProvider -> ClientDataSet -> DataSource
O componente SQLQuery fica em um DataModule e os outros ficam no formulário.
No DataModule, a tabela ´Opcao_US´ esta relacionada com a tabela ´Usuario´ atavés da propriedade DataSource do SQLQuery:
SQLQuery(Usuario) -> DataSource(Usuario) -> SQLQuery(Opcao_Us)
No formulário, onde estão o DataSetProvider, ClientDataSet e DataSource, tenho um conjunto para a tabela ´Usuario´ e apenas o ClientDataSet e o DataSource para a tabela ´Opcao_Us´. Esta tabela é ligada à tabela ´Usuario´ através da propriedade DataSetField do ClientDataSet.
Na inclusão de registro não ocorre erro, mas quando altero mais de uma opção do usuário, tabela ´Opcao_Us´ ocorre um erro com a seguinte mensagem:
´Update affected more than 1 record´
Se algum souber como resolver, agradeço.
Tenho uma tabela mestre ´Usuario´ com os dados dos usuários que podem acessar o sistema, e uma tabela de detalhes ´Opcao_Us´ com os direitos de acesso.
Uso o seguinte esquema de acesso:
SQLQuery -> DataSetProvider -> ClientDataSet -> DataSource
O componente SQLQuery fica em um DataModule e os outros ficam no formulário.
No DataModule, a tabela ´Opcao_US´ esta relacionada com a tabela ´Usuario´ atavés da propriedade DataSource do SQLQuery:
SQLQuery(Usuario) -> DataSource(Usuario) -> SQLQuery(Opcao_Us)
No formulário, onde estão o DataSetProvider, ClientDataSet e DataSource, tenho um conjunto para a tabela ´Usuario´ e apenas o ClientDataSet e o DataSource para a tabela ´Opcao_Us´. Esta tabela é ligada à tabela ´Usuario´ através da propriedade DataSetField do ClientDataSet.
Na inclusão de registro não ocorre erro, mas quando altero mais de uma opção do usuário, tabela ´Opcao_Us´ ocorre um erro com a seguinte mensagem:
´Update affected more than 1 record´
Se algum souber como resolver, agradeço.
Lab
Curtidas 0
Respostas
A.paiva
02/06/2005
Já tive problemas com Dbexpress nesse sentido e principalmente quando utilizava um sql utilizando mais de um tabela (join), nesse caso tive q verificar as opções do providerflags dos campos:
campos chaves [pfInUpdate,pfInKey]
demais campos da tabela a ser atualizada [pfInUpdate,pfInWhere]
campos provenientes do join e q nao sao atualizaveis [] (nenhum),
e nao esquecer as conf. do DatasetProvider;
Option = poAllowcommandtext
Updatemode = upWhereKeyOnly
alem do evento ongettablename com o nome da tabela.
Espero ter ajudado.
campos chaves [pfInUpdate,pfInKey]
demais campos da tabela a ser atualizada [pfInUpdate,pfInWhere]
campos provenientes do join e q nao sao atualizaveis [] (nenhum),
e nao esquecer as conf. do DatasetProvider;
Option = poAllowcommandtext
Updatemode = upWhereKeyOnly
alem do evento ongettablename com o nome da tabela.
Espero ter ajudado.
GOSTEI 0