Ir para conteúdo
Felipe Bastos

Update com Variáveis SQL, no VB.NET como faço?

Recommended Posts

Olá amigos, estou desenvolvendo um projeto no qual, possuo uma tabela com nome de Proprietarios no banco e preciso passar dois valores para duas colunas dessa tabela, que possuem nome Placa1 e Placa2, fiz o código no sql e ocorreu tudo da forma que eu esperava, segue o código que usei abaixo.

 


declare @Placa1 varchar(7), @Placa2 varchar(7);
declare @NovaPlaca varchar(7);
set @NovaPlaca= 'ZZZ9999';

--
SELECT @Placa1= Placa1, @Placa2= Placa2
from proprietarios
where apartamento = 'A-001'

--
IF @Placa1 is NULL
UPDATE Proprietarios
set Placa1= @NovaPlaca
where apartamento = 'A-001'
else
IF @Placa2 is NULL
UPDATE Proprietarios
set Placa2= @NovaPlaca
where apartamento = 'A-001'

Quando fiz a programação em VB, criei as seguintes variáveis:

Public placa1 As SqlParameter
Public placa2 As SqlParameter
Public novaplaca As SqlParameter

Após criar as váriaveis criei o update, no botão de salvar:

sql += "SELECT placa1 = @placa1, placa2 = @placa2 from proprietarios where apartamento = '" & tb_apartamento.Text & "'
IF @placa1 is NULL Update proprietarios set placa1 = '" & tb_placa1.Text & "' where apartamento = '" & tb_apartamento.Text & "'
else IF @placa2 is NULL Update proprietarios set placa2 = novaplaca where apartamento = '" & tb_apartamento.Text & "' "
conectar.Open()
comando = New SqlCommand(sql)
comando.Connection = conectar
comando.ExecuteNonQuery()
conectar.Close()

Ele executa o sistema porém não altera nenhum valor da o seguinte erro:

Additional information: É necessário declarar a variável escalar "@placa1".

É necessário declarar a variável escalar "@placa1".

Sintaxe incorreta próxima à palavra-chave 'else'.

É necessário declarar a variável escalar "@placa2".

Porém não consigo solucionar o erro, aguardo ajuda de alguém, valeu pela atenção pessoal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa atribuir os valores para os parâmetros SQL, você ja verificou quais são os valores que eles estão assumindo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa atribuir os valores para os parâmetros SQL, você ja verificou quais são os valores que eles estão assumindo?

Consegui resolver já o problema, removi as variaveis e criei o IF com um select dentro deu certo, valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por Fabiana Gomes
      Pessoal, boa noite
       
      Preciso de um help!!
       
      Tenho a tabela ENDERECO e na coluna LOUGRADOURO (40) preciso diminuir alguns endereços para 30 caracteres.
      Basicamente preciso cortar a partir da casa 30.
       
      Alguem pode me ajudar?
    • Por Lucast
      Boa tarde galera,
       
      Estou tentando fazer a soma de duas colunas no SQL e queria que ela me retornasse o valor separado em uma coluna a parte, podem me ajudar?
       
      Isso é o que estou fazendo
       
      SELECT MONTH(workOrderDate) AS MES, (SUM(CASE WHEN WorkType = '02' AND workOrderDescription = 'preventiva' THEN 1.0 ELSE 0 END)) AS preventiva, (SUM(CASE WHEN workOrderDescription = 'CORRETIVA' THEN 1 ELSE 0 END)) AS corretivas FROM WorkOrder WHERE YEAR(workOrderDate) = 2018 AND lastUpdateData IS NOT NULL GROUP BY MONTH(workOrderDate);  
      Esse resultado me retorna esses valores:
       
      https://imgur.com/5XqbmFX
       
      Preciso que ele me retorne uma coluna ao lado informando a soma de ambas as colunas.
       
      Alguém consegue me ajudar?
       
       
    • Por eduardohaag
      Boa noite pessoal,
      Esbarrei em um novo problema com consultas no meu sistema.
       
      Tenho um formulário no sistema que deverá apresentar todos os materiais utilizados em uma determinada Venda e seus respectivos estoques obtidos através da soma das entradas e saidas do estoque.
      Para isso devo buscar os dados em 3 tabelas do banco de dados sendo elas VendasProdutos, Composicao,  Materiais e Estoque

       
      Eis que surge meu problema, como posso ter vários produtos na venda e alguns produtos usam os mesmos materiais, a consulta está retornando com os materiais duplicados, quando o que eu gostaria era que somasse de acordo com cada material.
       
      A query que estou usando para teste no acesso é a seguinte:
      SELECT Composicao.IdMaterial, materiais.descricao, Sum(Estoque.Quantidade) AS Estoque, [VendasProdutos]![Quantidade]*[Composicao]![Quantidade] AS TotalUtilizado FROM (VendasProdutos LEFT JOIN (materiais RIGHT JOIN Composicao ON materiais.ID = Composicao.IdMaterial) ON VendasProdutos.IdProduto = Composicao.IdProduto) LEFT JOIN Estoque ON materiais.ID = Estoque.IdMaterial GROUP BY Composicao.IdMaterial, materiais.descricao, [VendasProdutos]![Quantidade]*[Composicao]![Quantidade], VendasProdutos.IdVenda HAVING (((VendasProdutos.IdVenda)=1));  
      A consulta está retornando os dados dessa forma:

       
      E eu gostaria de que agrupasse por ex:
       
      ID                Descricao                Estoque               TotalUtilizado
      1                 Capa Agenda             34                             10
      2                 Miolo Agenda            27                              5
       
      Alguem Sabe como posso fazer isso?
      Desulpem pelo post gigante, mas não sabia como explicar melhor.
    • Por Lucast
      Olá galera estou fazendo um select em duas tabelas porém preciso que o valor delas seja subtraido porém eu ja tentei e não consegui, deixarei o codigo abaixo das querys que preciso fazer a subtração
       
      SELECT COUNT(*) AS MES  
    • Por drapn
      Boa tarde pessoal
      Estou com um projeto em Vb.Net que consiste em importar dados de uma planilha de Excel para um Datagridview.
      O projeto esta funcionando tudo ok porem notei que quando vou movendo as barras laterais e inferiores o formulário apresenta grande lentidão para mover as colunas etc...
      Fiz o teste criando um projeto novo com somente 1 Form, 1 Datagrid e 1Botão e os códigos para fazer a importação e quando eu "populo" o datagridview com o conteudo ele apresenta esses legs.
       
      Alguem a ja passou por isso?
      Será que é configuração da máquina? (Não é uma máquina tão fraca)
      O Vb.NET é a versão 2015
       
       
      Os arquivos de Excel variam de 80 Linhas por 5 Colunas á 400 linhas e 5 colunas
       
      O código é esse:
       
      Sub ImportaEstoque()         Dim Local         Local = EndArquivo()         If String.IsNullOrWhiteSpace(Local) Then             MessageBox.Show("Nenhum arquivo foi selecionado.", "Informação.", MessageBoxButtons.OK, MessageBoxIcon.Information)             Return         End If         '------------------------------         Dim caminhoArquivoExcel As String = Local         Dim nomePlanilhaExcel As String = "ESTQ" & "$"         Dim conexaoOleDb As OleDbConnection = Nothing         Dim ds As DataSet         Dim cmd As OleDbDataAdapter         '------------------------------         Try             'conexaoOleDb = New OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source= " & Local & ";Extended Properties=Excel 8.0;")             conexaoOleDb = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & Local & ";Extended Properties='Excel 8.0;HDR=Yes'")             'cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]", conexaoOleDb)             cmd = New OleDbDataAdapter("Select * from [" & nomePlanilhaExcel & "]  Where UM Like '%" & "PC" & "%'", conexaoOleDb)             cmd.TableMappings.Add("Table", "tabelaExcel")             ds = New DataSet             cmd.Fill(ds)             dgvDados.DataSource = ds.Tables(0)         Catch ex As Exception             MessageBox.Show(ex.ToString, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error)         Finally             conexaoOleDb.Close()         End Try         sbQtdItens.Text = "Encontrados " & dgvDados.RowCount.ToString & " itens."     End Sub  
       
       
      Pessoal desde já muito obrigado pela força!
×

Informação importante

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