GARANTIR DESCONTO

Fórum Erro de Inserção e Atualização de Dados com Dbexpress #268826

16/02/2005

0

Gostaria obter ajuda para solucionar um problema que acontece após a inserção ou atualização de dados na tabela com dbexpress.


ERRO:

Project x.exe raised exception class EDatabaseError with message ´Unable to
´resolve records. Table name not found.´. Progress stopped. Use Step or Run to continue


Desde já agradeço a atenção


Lnunes

Lnunes

Responder

Posts

16/02/2005

Wwenceslaunew

Verifique se a instrução SQL na propriedade commandText do TSqlDataSet existe.


Responder

Gostei + 0

16/02/2005

Vinicius2k

Colega,

Regrinha não documentada para uso do dbExpress : nomes dos objetos do banco de dados (tabelas, colunas, views, SPs, etc) sempre em maiúsculas.
Ex:
select ID, NOME from CLIENTES order by NOME


Outro detalhe : se usar aspas na criação dos objetos, terá sempre que utilizar as aspas para referenciá-los.
Ex:
select "ID", "NOME" from "CLIENTES" order by "NOME"


Verifique se não são estes os problemas.

T+


Responder

Gostei + 0

16/02/2005

Lnunes

Obrigado pela atenção mas infelizmente os problemas não são estes e eu não estou consigo desvenda-lo.


Responder

Gostei + 0

16/02/2005

Buosinet

Vc esta usando mais de uma tabela no SQLDataset, por exemplo, fazendo Join pra trazer os lookups? Se for isso, o Resolver não consegue definir qual a tabela a atualizar. Aí, vc tem que usar o evento OnGetTableName do provider, assim:

procedute DataSetProvider1.GetTableName(não lembro os atributos)
begin
TableName := ´NOME_DA_TABELA´;
end;

Boa Sorte,
Buosi.


Responder

Gostei + 0

16/02/2005

Vinicius2k

Vc esta usando mais de uma tabela no SQLDataset, por exemplo, fazendo Join pra trazer os lookups?

Bem lembrado !
Nos casos que envolvem JOINs as colunas ´estrangeiras´, ou seja, que não são originais da Tabela a qual vc está trabalhando os dados, não podem ser levados em consideração na aplicação dos updates...

Se vc estiver utilizando [b:686df043c8]TClientDataSet[/b:686df043c8], set todos os sub-itens da propriedade [b:686df043c8]ProviderFlags[/b:686df043c8], de todos os TFields ´estrangeiros´ para [b:686df043c8]False[/b:686df043c8]. Repita o procedimento nos mesmos TFields do [b:686df043c8]TSQLDataSet[/b:686df043c8].

Normalmente, vc só precisará setar [b:686df043c8]pfInUpdate[/b:686df043c8] e [b:686df043c8]pfInWhere[/b:686df043c8].

Isto faz com que estas colunas não sejam consideradas na ocasião do Insert ou Update.

T+


Responder

Gostei + 0

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

Aceitar