Erro de Inserção e Atualização de Dados com Dbexpress
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
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
Curtidas 0
Respostas
Wwenceslaunew
16/02/2005
Verifique se a instrução SQL na propriedade commandText do TSqlDataSet existe.
GOSTEI 0
Vinicius2k
16/02/2005
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:
Outro detalhe : se usar aspas na criação dos objetos, terá sempre que utilizar as aspas para referenciá-los.
Ex:
Verifique se não são estes os problemas.
T+
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+
GOSTEI 0
Lnunes
16/02/2005
Obrigado pela atenção mas infelizmente os problemas não são estes e eu não estou consigo desvenda-lo.
GOSTEI 0
Buosinet
16/02/2005
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.
procedute DataSetProvider1.GetTableName(não lembro os atributos)
begin
TableName := ´NOME_DA_TABELA´;
end;
Boa Sorte,
Buosi.
GOSTEI 0
Vinicius2k
16/02/2005
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+
GOSTEI 0