flavioavilela Postado Janeiro 11, 2010 Denunciar Share Postado Janeiro 11, 2010 boa tarde a todos... uso o sql server e fiz uma stored procedure para atualizar um determinado campo numa tabelasó 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_Animalalguém pode dar uma luz? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Janeiro 11, 2010 Denunciar Share Postado Janeiro 11, 2010 Seu update não está corretoupdate Cadastro_Gado set Codigo_Situacao=@Codigo_Situacao where @Codigo_Animal=Codigo_AnimalTire o @.. Where Codigo_Animal = @Codigo_AnimalOnde seria =update Cadastro_Gado set Codigo_Situacao= @Codigo_Situacao where Codigo_Animal= @Codigo_AnimalE se possivel coloque toda a stored procedure, caso ainda encontre erro Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 11, 2010 Autor Denunciar Share Postado Janeiro 11, 2010 (editado) 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 Janeiro 11, 2010 por flavioavilela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Janeiro 12, 2010 Denunciar Share Postado Janeiro 12, 2010 (editado) 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 contidosna própria stored procedure.USE [secraso]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[sp_quita]ASUPDATE dbo.TblMovimentacaoSET dbo.TblMovimentacao.vrpago = dbo.TblArqRetorno.vr,dbo.TblMovimentacao.dtpgto = dbo.TblArqRetornoU.dtpgtoFROM dbo.TblMovimentacao, TblArqRetorno, TblArqRetornoUwhere TblMovimentacao.seq = dbo.TblArqRetorno.numerodocAnd TblArqRetorno.cod = dbo.TblArqRetornoU.loteuSe como disse, apenas quando há nulos é que a atualização não acontece, não seria melhor imporisso ao usuário, voce obriga a informar um valor. Se não informar nulo, grava o registro.if dbEdit22.Text = '' thenBeginshowmessage('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 Janeiro 12, 2010 por Alberto Mota Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 12, 2010 Autor Denunciar Share Postado Janeiro 12, 2010 isso mesmo, vou ter que fazer isso... vou testar aqui agora colocando alguns valores esporádicos aqui e volto com a resposta... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 12, 2010 Autor Denunciar Share Postado Janeiro 12, 2010 (editado) 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 Janeiro 12, 2010 por flavioavilela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Alberto Mota Postado Janeiro 12, 2010 Denunciar Share Postado Janeiro 12, 2010 Coloque toda a stored procedure para analise, e todo o código em Delphipara poder entender melhor seu problema. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 12, 2010 Denunciar Share Postado Janeiro 12, 2010 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 resolvewith 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 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: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 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 = @nomeProcuraexec spAlterarCadastro 'Maria', null, null, 'sapatao'Outras fontes de informação:http://www.oficinadanet.com.br/artigo/177/...ored_procedureshttp://www.linhadecodigo.com.br/Artigo.aspx?id=891http://www.ebah.com.br/busca.buscar.logic?...red%20Procedurehttp://www.vclcomponents.com/s/0__/sql_ser...cedure_tutorialOBS: Tente se basear no exemplo para descobrir onde está o erro no seu códigoabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 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??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 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ódigovoce vai encontrar exemplos nos links que indiqueiabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 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??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 não funcionou... e tudo está no mesmo datamodule...nunca pensei que um trem tão bobo desse fosse me dar cansera desse tanto..... :blink: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 não funcionou... e tudo está no mesmo datamodule...Não parece estar.... eu considero dessa maneira como se fossem dois data modules distintosdm.SPAtualiza_Situacao dm.qryconsulta_ver_coberturaCodigo_Animal.AsIntegerabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 13, 2010 Autor Denunciar Share Postado Janeiro 13, 2010 bom, não sei se serve de explicação, mas SPAtu..... é uma TADOStoredProc que coloquei pra armazenar as procedures criadas no bd e a qry... é uma TADOQuery... ambas estão no mesmo datamodule... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 13, 2010 Denunciar Share Postado Janeiro 13, 2010 bom, não sei se serve de explicação, mas SPAtu..... é uma TADOStoredProc que coloquei pra armazenar as procedures criadas no bd e a qry... é uma TADOQuery... ambas estão no mesmo datamodule...voce linkou um DataSource ao TADOStoredProc ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 18, 2010 Autor Denunciar Share Postado Janeiro 18, 2010 (editado) 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 Janeiro 18, 2010 por flavioavilela Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 19, 2010 Denunciar Share Postado Janeiro 19, 2010 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 10http://scriptbrasil.com.br/forum/index.php...st&p=577599abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 flavioavilela Postado Janeiro 20, 2010 Autor Denunciar Share Postado Janeiro 20, 2010 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... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
flavioavilela
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...
alguém pode dar uma luz?
Link para o comentário
Compartilhar em outros sites
20 respostass a esta questão
Posts Recomendados
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.