ApplyUpdates não Salva no Banco
Bom Dia,
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
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
Curtidas 0
Respostas
Wesley Yamazack
19/03/2010
Olá amigo,
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
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
Jorge Silva
19/03/2010
O onwer que você está falando é o schema ? Que estou usando
no banco, achei que poderia ser alguma coisa com o provider.
Estou usando a tela do CommandText editor do TSQLDATASET.
GOSTEI 0
Wesley Yamazack
19/03/2010
Olá amigo,
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
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
Jorge Silva
19/03/2010
Bom dia Wesley,
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 ?
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
Wesley Yamazack
19/03/2010
Bom dia amigo,
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
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
Jorge Silva
19/03/2010
Exatamente isso, funcionava mas agora não funciona como disse coloquei o aplyupdates dentro de um try mandando dar uma mensagem se não fosse aplicado ele passe sem problema, utilizei o botão delete e funcionou a questão é só para auterar e inserir dados.
Não dá mensagem nenhuma
Para testas depois do applyupdates coloquei um reflesh esse sim dá erro indicando que nada foi salvo no banco
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
Jorge Silva
19/03/2010
Wesley,
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 ?
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
Wesley Yamazack
19/03/2010
Olá amigo,
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
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
Jorge Silva
19/03/2010
Wesley,
Já fiz isso, direto no banco funciona e o valor que estou
passando para o campo é um inteiro, lembrando que estou usando os componentes
da palheta DBExpress.
Estava lendo e vi que o Oracle tem uma tratativa diferente
para campos do tipo inteiro, na verdade pelo que entendi o Oracle não tem a
opção de um tipo inteiro. Tem tipo Number que não entendi direito como
funciona.
Complicado
Jorge
GOSTEI 0
Wesley Yamazack
19/03/2010
Olá amigo,
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
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
Devmedia
19/03/2010
Jorge,
a resposta do consultor lhe ajudou? Podemos encerrar o chamado?
a resposta do consultor lhe ajudou? Podemos encerrar o chamado?
GOSTEI 0
Jorge Silva
19/03/2010
Só uma duvida:
Estou usando dois conectores um na aplicação cliente e outra na aplicação servidora coloco isto no evento AfterConnect servidora que conecta com o banco ?
No aguardo,
Jorge
GOSTEI 0
Wesley Yamazack
19/03/2010
Olá amigo, você esta trabalhando com MultiCamadas ? Não Certo ? Se você tem os dois, coloque nos dois para garantir.
Um abraço
Wesley Y
Um abraço
Wesley Y
GOSTEI 0
Jorge Silva
19/03/2010
ok,
Vou testar amanhã no servidor do cliente.
e retorno com o resultado.
Muito grato,
Jorge
Vou testar amanhã no servidor do cliente.
e retorno com o resultado.
Muito grato,
Jorge
GOSTEI 0
Wesley Yamazack
19/03/2010
Blz amigo, fico no aguardo
Um abraço
Wesley Y
Um abraço
Wesley Y
GOSTEI 0
Jorge Silva
19/03/2010
OK, Wesley Funcionou,
Pode fachar o chamado.
Obrigado.
Jorge
Pode fachar o chamado.
Obrigado.
Jorge
GOSTEI 0
Wesley Yamazack
19/03/2010
Olá amigo, chamado fechado.
Um abraço
Wesley Y
Um abraço
Wesley Y
GOSTEI 0