VB.NET COM SQL SERVER

FROWSER 21/12/2011 16:49:47
#391792
Boa tarde,


Alguem por gentileza pode me dar comando como exemplo de uma Stored Procedure para deletar dados SQL e para Alterar Dados,
e se possivel me mostra como posso importar esse comando para uma Class, e assim eu colocar em um botão


Orbrigado.

No Aguardo.
PHOENIX209E 21/12/2011 17:07:53
#391793
Falaa!..
Entao siga este exemplo:

CREATE PROCEDURE SP_GRAVAR_CLIENTE(@COD_CLI INT,@NOME_CLI NVARCHAR(50),@PARAM INT,@RETORNO INT OUTPUT)
BEGIN

IF @PARAM = 1
BEGIN
DELETE FROM TABELA WHERE COD_CLI = @COD_CLI
IF @@ROWCOUNT > 0
BEGIN
SET @RETORNO = 1
END
END
ELSE
BEGIN
UPDATE TABELA SET NOME_CLI = @NOME_CLI WHERE COD_CLI = @COD_CLI
IF @@ROWCOUNT > 0
BEGIN
SET @RETORNO = 1
END
END

O SQL vai executar este script e retornar se houve sucesso ou falha,caso haja falha ele vai retornar 0 senao 1...
pra executar essa função direto no SQL digite

EXEC SP_GRAVA_CLIENTE(1,[ô]EDUARDO[ô],1,0)

Passei o codigo do cliente 1 nome EDUARDO parametro 1 ou seja um DELETE e o 0 como referencia que ele ira retornar..
PHOENIX209E 21/12/2011 17:18:37
#391796
Agora passando como parametro para o VB.NET...
dentro de uma classe voce coloca isso:

Public Class Cliente

Public Function FUNC_DELETAR_CLIENTE(ByVal pCod As String, ByValByVal pNome as String) As boolean
[ô]Nome da minha procedure SP_GRAVA_CLIENTE
Dim Adapt = New SqlDataAdapter([Ô]SP_GRAVAR_CLIENTE[Ô], oConexao)
[ô]Tipo de comando,no me caso um procedimento armazenado
Adapt.SelectCommand.CommandType = CommandType.StoredProcedure
[ô]Os parametros devem ser passados exatamente como esta no banco de dados
Adapt.SelectCommand.Parameters.Add(New SqlParameter([Ô]@COD_CLI[Ô], SqlDbType.Int)) [ô]valor como INT numerico
Adapt.SelectCommand.Parameters([Ô]@COD_CLI[Ô]).Value = pCod

Adapt.SelectCommand.Parameters.Add(New SqlParameter([Ô]@NOME_CLI[Ô], SqlDbType.nVarChar)) [ô]valor como nvarchar literal
Adapt.SelectCommand.Parameters([Ô]@NOME_CLI[Ô]).Value = pNome

Adapt.SelectCommand.Parameters.Add(New SqlParameter([Ô]@PARAM[Ô], SqlDbType.Int))
Adapt.SelectCommand.Parameters([Ô]@PARAM[Ô]).Value = 1 [ô]parametro 1 para DELETAR
Dim vRet as integer
Using DS = New DataSet()
Adapt.SelectCommand.Parameters.Add(New SqlParameter([Ô]@RETORNO[Ô], SqlDbType.Int))
Adapt.SelectCommand.Parameters([Ô]@RETORNO[Ô]).Value = 0 [ô]passando o valor de referencia 0
Adapt.SelectCommand.Parameters([Ô]@RETORNO[Ô]).Direction = ParameterDirection.Output [ô]saida
Adapt.Fill(DS, [Ô]SP_GRAVAR_CLIENTE[Ô])
vRet = Adapt.SelectCommand.Parameters(3).Value.ToString [ô]Posição do parametro
End Using
If (vRet > 0) Then
FUNC_DELETA_CLIENTE = True
Else
FUNC_DELETA_CLIENTE = False
End If
End Function

End Class

Dentro de um FORM com um COMANDO e dois textbox[ô]s coloque isso no evento Click do button

Exemplo:

Sub CMD_DELETAR_CLIENTE()
Dim cli as new Cliente
[ô]quando nao existe um retorno booleano na condição,nao precisa colocar true basta colocar isso
if(cli.FUNC_DELETAR_CLIENTE(me.txt_cod.text,me.txt_nome.text)) then
[ô]se verdadeiro
Msgbox([Ô]Cliente deletado com sucesso!![Ô])
Else
[ô]se falso
Msgbox([Ô]O cliente nao foi deletado[Ô])
End If
End Sub

Pra voce usar pra alterar,basta usar o mesmo codigo da classe cliente na função deletar só passar o parametro diferente de 1 ;)

PHOENIX209E 21/12/2011 17:20:48
#391798
Testa os codigos,fiz de cabeça as vezes pode estar faltando alguma coisa...
Falow
FROWSER 23/12/2011 00:22:31
#391896
Ae deu erro nos comando SQL =\ da SP
PHOENIX209E 23/12/2011 10:31:28
#391900
Qual erro esta dando?!
FROWSER 26/12/2011 01:07:04
#391947
Não está reconhecendo como codigo certo ! no VB
PHOENIX209E 28/12/2011 09:04:20
#392033
Ta,mas no SQL funcionou a procedure que vc fez?
Que erro o VB net exibe quando voce tenta compilar o codigo?!
FILMAN 28/12/2011 17:33:32
#392063
Tenta Assim

        public sub AlterarDados(ByVal Cod as Integer, ByVal Nome as String, ByVal Endereco as String, ByVal Numero as Integer)
Dim SQL as String

SQL = [Ô]UPDATE SuaTabela SET Nome=@nome, endereco=@endereco, Numero=@Numero[Ô]
SQL = SQL & [Ô] WHERE id=@id[Ô]

Dim comando as SqlCommand = new SqlCommand(SQL, SuaConexao)

comando.Parameters.Add(new SqlParameter([Ô]@id[Ô], Cod))
comando.Parameters.Add(new SqlParameter([Ô]@Nome[Ô], Nome))
comando.Parameters.Add(new SqlParameter([Ô]@Endereco[Ô], Endereco))
comando.Parameters.Add(new SqlParameter([Ô]@Numero[Ô], Numero))

comando.ExecuteNonQuery()

End Sub


public sub Excluir(ByVal Cod as Integer)

Dim comando as SqlCommand = new SqlCommand([Ô]DELETE FROM SuaTabela WHERE id=@Cod[Ô], SuaConexao)

comando.Parameters.Add(new SqlParameter([Ô]@Cod[Ô], Cod))

comando.ExecuteNonQuery()

End Sub


Para chamar os Procedimentos faça assim No Botão

private sub btnAlterar_Click(ByVal sender as object, ByVal e as EventArgs)
Dim Cod as Integer = Convert.ToInt32(txtCódigo.Text)
Dim Nome as String = txtNome.Text
Dim Endereco as String = txtEndereco.Text
Dim Numero as Integer = Convert.ToInt32(txtNumero.Text)

AlteraDados Cod, Nome, Endereco, Numero
End Sub

private sub btnDeletar_Click(ByVal sender as object, ByVal e as EventArgs)
Dim Cod as Integer = Convert.ToInt32(txtCódigo.Text)

Excluir Cod
End Sub


Só para lembrar esse código eu adaptei para VB.NET, pois o meu aqui é em C# e é para página de INTERNET eu não sei se
a sua aplicação é WINDOWS APPLICATION ou WEB.


Espero ter ajudado
Tópico encerrado , respostas não são mais permitidas