Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Vainqueurbr

Problemas ao alterar registro usando Query

Recommended Posts

Olá, preciso gravar os dados em uma tabela paradox que possuem campos texto, numérico, memorando e data.
No datamodule criei um componente [Data source] um Componente [Query] e um componente [updateSQL]

O que ocorre é:
Quando Crio um registro novo, tudo funciona todos os campos são salvos e o registro gerado.

Quando modifico um registro ou excluo um registro existente é exibido a seguinte mensage: [Type mismatch in expression]

No componente datasource esta setado em dataset a query clientes

No componente [Query] está com os seguinte parâmetros
Active: True
CachedUpdate: True
DatabaseName: Sistest
SQL: Select * from Clientes
UpdateObject: UpdateSQL1


No componente UpdateSQL:
Foi gerado de forma altomatica, através de Generate Sql, sendo:

Modify
update Clientes
set
Codigo = :Codigo,
Nome = :Nome,
Ordem = :Ordem,
Endereco = :Endereco,
Bairro = :Bairro,
Cidade = :Cidade,
UF = :UF,
Fone = :Fone,
Nascimento = :Nascimento,
Comissao = :Comissao,
Preferencial = :Preferencial,
Obs = :Obs
where
Codigo = :OLD_Codigo and
Nome = :OLD_Nome and
Ordem = :OLD_Ordem and
Endereco = :OLD_Endereco and
Bairro = :OLD_Bairro and
Cidade = :OLD_Cidade and
UF = :OLD_UF and
Fone = :OLD_Fone and
Nascimento = :OLD_Nascimento and
Comissao = :OLD_Comissao and
Preferencial = :OLD_Preferencial and
Obs = :OLD_Obs

Insert
insert into Clientes
(Codigo, Nome, Ordem, Endereco, Bairro, Cidade, UF, Fone, Nascimento,
Comissao, Preferencial, Obs)
values
(:Codigo, :Nome, :Ordem, :Endereco, :Bairro, :Cidade, :UF, :Fone,

:Nascimento,
:Comissao, :Preferencial, :Obs)

Delete
delete from Clientes
where
Codigo = :OLD_Codigo and
Nome = :OLD_Nome and
Ordem = :OLD_Ordem and
Endereco = :OLD_Endereco and
Bairro = :OLD_Bairro and
Cidade = :OLD_Cidade and
UF = :OLD_UF and
Fone = :OLD_Fone and
Nascimento = :OLD_Nascimento and
Comissao = :OLD_Comissao and
Preferencial = :OLD_Preferencial and
Obs = :OLD_Obs

 

Obs:


Testei de duas formas em um botão gravar com o código (além do descrito acima) dm1.QClientes.Post e também pelo componente dbnavigator, de uma forma ou de outra ao fazer um dos dois procedimentos ocorre o erro, lembrando que a inclusão de novos registros funciona normalmente.


Desde já agradeço pelo ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Acredito que na opção de Update e Delete, você precise apenas usar na sua condição where a coluna codigo para determinar a ação que pretende realizar, e não passar todas as colunas.

 

Acredito eu que o correto seria algo assim:

 

Opção Update
update Clientes
set
Nome = :Nome,
Ordem = :Ordem,
Endereco = :Endereco,
Bairro = :Bairro,
Cidade = :Cidade,
UF = :UF,
Fone = :Fone,
Nascimento = :Nascimento,
Comissao = :Comissao,
Preferencial = :Preferencial,
Obs = :Obs
where
Codigo = :OLD_Codigo
Opção Delete
delete from Clientes
where
Codigo = :OLD_Codigo
Até a proxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara olha eu de novo o com essa duvida agora, pra atualizar posso usar o ibquery? uma base de dados firebird. Eu preciso dar comit?

 

eu fiz assim

 

ibquery1.open;

ibquery1.sql.clear;

ibquery1.sql.add('UPDATE tabela SET CAMPO = '+VARIAVEL+' WHERE CODIGO = "'+VARCOD+'"');

ibquery1.open;

 

esse carai nao atualiza nem a pancada, ja tentei usar dataset ja tentei usar todos componentes da interbase.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos.

 

Amigo srnalim, vamos por partes:

 

1) Referente a sua dúvida anterior, a mesma está resolvida?

2) Agora você está com outra dúvida referente a utilização do IBQuery com um banco de dados Firebird, é isso? Caso o seja, abra um tópico com essa dúvida, pois a mesma difere da "1". Assim mantemos o fórum organizado e facilitamos futuras buscas.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.