Fórum ApplyUpdates não Salva no Banco #130655
19/03/2010
0
Estou realizando processos de cadastros em uma aplicação, no botão “Salvar” coloquei o Applyupdates não identifiquei erro algum, coloquei o comando dentro de um Try e o mesmo passou só que quando visualizei no banco o registro não tinha sido salvo.
O interessante que o processo funcionava com o MSSQLSERVER mas quando troquei o banco para o Oracle passou a não funcionar.
Tem alguma paramentrização nos componentes ou no banco necessária para que o ApplyUpadades funcione ?
Estou usando estrutura Client/Server Utilizando DataSnap
Estou usando TSQLDataSet, TDataSetProvider, TClientDataSet
Fico no Aguardo.
Jorge Farias
Jorge Silva
Curtir tópico
+ 0Posts
19/03/2010
Wesley Yamazack
o que funciona para o SQL Server, tem que fucionar para o Oracle, se da mesma forma estava funcionando, para um tem que funcionar para outro, o seu problema, derrepente não esta no ApplyUpdates, mas sim no Oracle.
Você realmente esta usando o ApplayUpdates no lugar certo ?
Na hora de montar as suas instruções SQL, você colocou o Owner das tabelas ?
Exemplo : Select * from bdauser.cliente
Pois já trabalhei com Oracle a um tempo atras, e ele tinha esta necessidade de colocar o Dono da tabela, para poder ter acesso.
Veja se isso irá lhe ajudar.
Um abraço
Wesley Y
Gostei + 0
19/03/2010
Jorge Silva
Gostei + 0
21/03/2010
Wesley Yamazack
O onwner que digo , é o usuário do Oracle, no qual você cria as tabelas e tudo mais, o administrador. Quanto ao CommandText, não tem problema pois é lá mesmo que você tem que colocar, agora por que você achou que fosse problema de provider ?
Um abraço
Wesley Y
Gostei + 0
22/03/2010
Jorge Silva
Estava achando que tinha algum problema com a comunicação do TClienteDataSet com o TSqlDataSet (Configuração do Provider)
Coloquei o usuario com que criei as tabelas no commandtext, mas mesmo assim não funcionou.
E agora ?
Gostei + 0
22/03/2010
Wesley Yamazack
Mas qual é o erro que acontece ? Pois se antes funcionava com um banco, e agora parou de funcionar o problema esta neste novo banco, ele apresenta algum erro ?
Um abraço
Wesley Y
Gostei + 0
22/03/2010
Jorge Silva
Não dá mensagem nenhuma
Para testas depois do applyupdates coloquei um reflesh esse sim dá erro indicando que nada foi salvo no banco
Gostei + 0
22/03/2010
Jorge Silva
Fiz uma nova tela de cadastro mais simples e vi que o erro está dando no numero que esta dando invalido, originalmente tinha colocado para as chaves um campo do tipo INT no MSSQLSERVER, mas como no Oracle não existe campo do tipo INT troquei para tipo Number.
agora esta exibindo a seguinte mensagem: Numero invalido.
O que devo fazer ?
Gostei + 0
22/03/2010
Wesley Yamazack
Este erro como você pode notar é por que esta passando um valor inválido, um número inválido, depure o seu código e veja qual é o conteúdo passado para este campo que esta dando erro, caso tenha dúvidas faço o seguinte
Antes de gravar o registro faça isso :
Showmessage(CDSCliente.FieldByName('IDCLiente').Asstring);
Veja qual é o resultado, faça isso para todos os campos da sua tabela, para testar também faça um script na mão e rode direto no Oracle , veja um exemplo
Insert into Cliente (IDCliente, Nome, Sexo)
Values (1, 'Wesley','M');
Veja se isso irá lhe ajudar.
Um abraço
Wesley Y
Gostei + 0
22/03/2010
Jorge Silva
Gostei + 0
22/03/2010
Wesley Yamazack
Há um tempo atraz me deparei com este erro, acabei de me lembrar, faça o seguite selecione o SQLCOnnection , e vá no evento AfterConnect
procedure TMainDM.SQLConnectionAfterConnect(Sender: TObject);
const
SQL = 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''.,''';
begin
SQLConnection.ExecuteDirect(SQL);
end;
Veja se isso irá resolver seu problema
Um abraço
Wesley Y
Gostei + 0
24/03/2010
Devmedia
a resposta do consultor lhe ajudou? Podemos encerrar o chamado?
Gostei + 0
24/03/2010
Jorge Silva
Gostei + 0
24/03/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
24/03/2010
Jorge Silva
Vou testar amanhã no servidor do cliente.
e retorno com o resultado.
Muito grato,
Jorge
Gostei + 0
24/03/2010
Wesley Yamazack
Um abraço
Wesley Y
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)