Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) erro ao dar update em campo Null


flavioavilela

Pergunta

boa tarde a todos... uso o sql server e fiz uma stored procedure para atualizar um determinado campo numa tabela

só que quando chamo a procedure e se o campo for um valor Null, ele não atualiza o campo que eu quero...

update Cadastro_Gado set Codigo_Situacao=@Codigo_Situacao
             where @Codigo_Animal=Codigo_Animal

alguém pode dar uma luz?

Link para o comentário
Compartilhar em outros sites

20 respostass a esta questão

Posts Recomendados

  • 0

Seu update não está correto

update Cadastro_Gado set Codigo_Situacao=@Codigo_Situacao

where @Codigo_Animal=Codigo_Animal

Tire o @

.. Where Codigo_Animal = @Codigo_Animal

Onde seria =

update Cadastro_Gado set Codigo_Situacao= @Codigo_Situacao

where Codigo_Animal= @Codigo_Animal

E se possivel coloque toda a stored procedure, caso ainda encontre erro

Link para o comentário
Compartilhar em outros sites

  • 0

boa noite amigo, eu imagino que a sintaxe esteje correta... mas, para testar, fiz dessa forma que você disse e mesmo assim não funcionou... lá no delphi, estou chamando ela assim:

with dm.SPAtualiza_Situacao do
                    begin
                      Parameters.ParamByName('@Codigo_Animal').Value:= dm.qryconsulta_ver_coberturaCodigo_Animal.AsInteger;
                      Parameters.ParamByName('@Codigo_Situacao').Value:= situacao_vaca_seca_coberta;
                      ExecProc;
                    end;

interessante que, utilizando essa procedure criada para outro campo que está ao lado do campo que eu quero, funciona saca, ele altera o valor do campo numa boa, agora, esse campo Codigo_Situacao não altera de forma alguma... não sei porque...

essa variavel situacao_vaca_seca_coberta é global e criei para armazenar um codigo que o usuário escolhe numa janela de configurações que tenho no sistema....

obs.: desculpe ter postado aqui esse assunto, mas na categoria de bd e mais específico sql server, a galera demora um ano pra responder, e perguntando aqui pensei que fosse mais rápido a resposta, como veio...

Editado por flavioavilela
Link para o comentário
Compartilhar em outros sites

  • 0

Uso essa stored procedure para atualizar uma tabela através de outra.

E depois executo pelo Delphi chamando-a apenas, sem parâmetros, pois já estão contidos

na própria stored procedure.

USE [secraso]

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[sp_quita]

AS

UPDATE dbo.TblMovimentacao

SET dbo.TblMovimentacao.vrpago = dbo.TblArqRetorno.vr,

dbo.TblMovimentacao.dtpgto = dbo.TblArqRetornoU.dtpgto

FROM dbo.TblMovimentacao, TblArqRetorno, TblArqRetornoU

where TblMovimentacao.seq = dbo.TblArqRetorno.numerodoc

And TblArqRetorno.cod = dbo.TblArqRetornoU.loteu

Se como disse, apenas quando há nulos é que a atualização não acontece, não seria melhor impor

isso ao usuário, voce obriga a informar um valor. Se não informar nulo, grava o registro.

if dbEdit22.Text = '' then

Begin

showmessage('Preencha o código corretamente!');

dbEdit22.setfocus;

exit;

End;

QueryAssociados.post;

QueryAssociados.Refresh;

showmessage('Dados foram atualizados com sucesso!');

Tente adaptar para voce.

Um abraço

Editado por Alberto Mota
Link para o comentário
Compartilhar em outros sites

  • 0

agora zicou de vez o trem aqui... fiz um teste colocando valores esporádicos aqui no campo, mandei atualizar aqueles valores e jogou Null pra lá.. :blink:

with dm.SPAtualiza_Situacao do
  begin
    Parameters.ParamByName('@Codigo_Animal').Value:= dm.qryconsulta_ver_coberturaCodigo_Animal.AsInteger;
    Parameters.ParamByName('@Codigo_Situacao').Value:= situacao_vaca_lac_coberta;  ----> erro
    ExecProc;
  end;

alguma hora dentro do programa eu executo a proc, como o exemplo acima... essa variável situacao_vaca_lac_coberta é uma variável global que, quando o cara loga no programa ela já é alimentada de uma tabela de configurações que criei e já fiz um ShowMessage entre os dois parametros ai para verificar se está vindo a informação que preciso e está vindo sim, aparentemente estaria funcionando pois a variavel está sendo alimentada numa boa com a informação... só que, na hora de executar a proc, ele joga Null lá pra dentro do campo.... e o campo contem alguma informação... agora ficou feio rsrs... e agora???

obs.: até mesmo depois de executar a proc, eu dei um showmessage(inttostr(situacao_vaca_lac_coberta)); e continuou chamando a informação desejada...

Editado por flavioavilela
Link para o comentário
Compartilhar em outros sites

  • 0
agora zicou de vez o trem aqui... fiz um teste colocando valores esporádicos aqui no campo, mandei atualizar aqueles valores e jogou Null pra lá..

Veja se resolve

with dm.SPAtualiza_Situacao do
  begin
    Parameters.ParamByName('@Codigo_Animal').Value:= dm.qryconsulta_ver_coberturaCodigo_Animal.AsInteger;
    Parameters.ParamByName('@Codigo_Situacao').Value:= @situacao_vaca_lac_coberta; 
    ExecProc;
  end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

assim ele nem deixa compilar, fala q da erro com o @ junto com a variavel...

cara, já fiz tudo q você imaginar, só que tem um porém.......... se eu colocar essa meeeesma para ser chamada em outro lugar no sistema, ela funciona... só altero o valor dos parametros e funciona.... só q os testes q eu fiz são os mesmos... dou um showmessage antes e depois do execproc e sempre chama os valores q eu quero... cara, estou a 3 dias impatado meu serviço por conta disso... e nunca tinha acontecido isso antes, sempre funcionava quando tento usar uma procedure para atualizar algo... :blink:

Link para o comentário
Compartilhar em outros sites

  • 0
cara, estou a 3 dias impatado meu serviço por conta disso... e nunca tinha acontecido isso antes, sempre funcionava quando tento usar uma procedure para atualizar algo...
exemplo:

CREATE procedure spAlterarCadastro
(       @nomeProcura    nvarchar(100)
,       @nome           nvarchar(100) = NULL
,       @dataNascimento datetime = NULL
,       @sexo           nvarchar(10) = NULL
,       @numID          varchar(10) = NULL
) AS

UPDATE Cadastro
SET nome = IsNull(@nome, nome)
  , dataNascimento = IsNull(@dataNascimento, dataNascimento)
  , sexo = IsNull(@sexo, sexo)
  , numID = IsNull(@numID, numID)
WHERE nome = @nomeProcura

exec spAlterarCadastro 'Maria', null, null, 'sapatao'

Outras fontes de informação:

http://www.oficinadanet.com.br/artigo/177/...ored_procedures

http://www.linhadecodigo.com.br/Artigo.aspx?id=891

http://www.ebah.com.br/busca.buscar.logic?...red%20Procedure

http://www.vclcomponents.com/s/0__/sql_ser...cedure_tutorial

OBS: Tente se basear no exemplo para descobrir onde está o erro no seu código

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

só uma pergunta: eu tenho um form aqui e chamo de Principal... nele, quando loga no programa é carregado várias váriaveis inclusive essas que estou colocando nessa questão no tópico... essas váriaveis são alimentadas por dados de uma tabela... eu dou um close e open da query pra atualizar a tabela e chamo os dados que eu quero pras variaveis respectivas... tem algo haver eu utilizar essas variaveis para alimentar campos do banco de dados? há alguma restrição quanto a isso???

Link para o comentário
Compartilhar em outros sites

  • 0
só uma pergunta: eu tenho um form aqui e chamo de Principal... nele, quando loga no programa é carregado várias váriaveis inclusive essas que estou colocando nessa questão no tópico... essas váriaveis são alimentadas por dados de uma tabela... eu dou um close e open da query pra atualizar a tabela e chamo os dados que eu quero pras variaveis respectivas... tem algo haver eu utilizar essas variaveis para alimentar campos do banco de dados? há alguma restrição quanto a isso???

essas váriaveis são alimentadas por dados de uma tabela... eu dou um close e open da query pra atualizar a tabela e chamo os dados que eu quero pras variaveis respectivas...

porque fazer dois trabalhos ... porque não usar a propria variavel definida na tabela ?

tem algo haver eu utilizar essas variaveis para alimentar campos do banco de dados? há alguma restrição quanto a isso???

Não existe restrição, voce deve somente tomar cuidado na implementação do código

voce vai encontrar exemplos nos links que indiquei

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

galera, estou enxergando uma luz no fim do tunel... rsrs...

minha chamada da stored procedure no delphi está assim:

with dm.SPAtualiza_Situacao do
  begin
    Parameters.ParamByName('@Codigo_Animal').Value:= dm.qryconsulta_ver_coberturaCodigo_Animal.AsInteger;
    Parameters.ParamByName('@Codigo_Situacao').Value:= situacao_vaca_lac_coberta;
    ExecProc;
  end;
se eu colocar assim funciona, atualiza os dados:
with dm.SPAtualiza_Situacao do
  begin
    Parameters.ParamByName('@Codigo_Animal').Value:= StrToInt(Edit1.Text);
    Parameters.ParamByName('@Codigo_Situacao').Value:= situacao_vaca_lac_coberta;
    ExecProc;
  end;

mas eu preciso colocar é a query, pois é de lá q virá meus dados q preciso... mas é aquela questão, já dei um showmessage antes e depois do execproc, e chama os dados numa boa... alguém sabe???

Link para o comentário
Compartilhar em outros sites

  • 0

Só para teste, tente assim:

var  
   Cod_Animal : integer;

with dm.SPAtualiza_Situacao do
  begin
    Cod_Animal := dm.qryconsulta_ver_coberturaCodigo_Animal.AsInteger;
    Parameters.ParamByName('@Codigo_Animal').Value:= Cod_Animal;
    Parameters.ParamByName('@Codigo_Situacao').Value:= situacao_vaca_lac_coberta;
    ExecProc;
  end;

Se não funcionar, sugiro voce a colocar a query no mesmo Data Module ( dm.SPAtualiza_Situacao ) .

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

cara, infelizmente não funcionou... não sei mais o que faço, passei o fim de semana todo fuçando nisso e não funcionou... :blink: ... até alterei o layout da janela, coloquei a coisa bem simples, tirei o dbgrid, deixei tudo apenas nos edits, e não funcionou... eu coloquei esse mesmo código no botão Excluir aqui da minha janela, e lá funciona, no salvar não funciona.... coloco showmessage() onde você imaginar, antes, durante e depois do procedimento de salvar, de editar, excluir e sempre sempre chama os dados que eu quero, ai você pensa que vai funcionar na boa, mas não funciona... já fiz várias e inumeras alterações no codigo do botão salvar e naaaaaaaaaaada.... já fiz de tudo que imaginar.... :blink: :blink: :blink:

Editado por flavioavilela
Link para o comentário
Compartilhar em outros sites

  • 0
cara, infelizmente não funcionou... não sei mais o que faço, passei o fim de semana todo fuçando nisso e não funcionou...

Já que tentou tudo, que tal começar do zero com um exemplo que funciona e ai fazer uma correlação com o seu código ?

Veja novamente o post 10

http://scriptbrasil.com.br/forum/index.php...st&p=577599

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

bem, fiz umas mudanças no código... alterei a ordem de processamento do codigo... ficou muito sem lógica, vendo que eu já testei somente o código que esta (estava) dando problema e também não havia funcionado, e agora funcionou... mas td bem rsrs... obrigado pela paciencia em ajudar...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...