Ir para conteúdo

POWERED BY:

Arquivado

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

gil2007

Visual Basic 6 e SQL Server 2000

Recommended Posts

Olá galera do fórum!!

 

Estou treinando VB e SQL. Tenho um database chamado Teste, com uma única tabela chamada Alunos, com os campos AlunoID(int,4), Nome (varchar,40) e Bairro (varchar,30). Estou passando strings sql para serem executadas via objeto Command mas nos métodos de incluir, excluir e alterar aparece o erro "Operação OLEDB de várias etapas gerou erros.Verifique cada valor de status OLEDB . Nada foi executado." E o método PesquisarDescricao diz que "BOF e EOF são veradeiros", mas a tabela está populada. Apenas a rotina de PesquisarCodigo funciona perfeitamente. Abaixo segue o código da camada de dados, se precisar da camada de aplicação e de negócios, eu coloco também.

 

Alguém pode me dizer o que pode estar errado no meu código? Agradeço desde já a atenção, boa tarde e bom fim de semana à todos.

 

 

Option Explicit

Private cnConexao As New ADODB.Connection

Private rsAlunos As New ADODB.Recordset

Private cmCommand As New ADODB.Command

Private Const sConectioString As String = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Teste;Data Source=GIL"

Private Const sAcessarTabela As String = "Select * From Alunos"

 

Public Function ConectarBanco() As Boolean

cnConexao.Open sConectioString

cmCommand.ActiveConnection = cnConexao

cmCommand.CommandType = adCmdText

End Function

 

Public Function DesconectarBanco() As Boolean

cnConexao.Close

End Function

 

Public Function Incluir(ByVal oNegocios As clsNegocios) As Boolean

Dim sSql As String

sSql = "Insert into Alunos(Nome,Bairro) values (?,?)"

cmCommand.CommandText = sSql

cmCommand.Parameters.Append cmCommand.CreateParameter("Nome", adVarChar, adParamInput, 40, oNegocios.Nome)

cmCommand.Parameters.Append cmCommand.CreateParameter("Bairro", adVarChar, adParamInput, 30, oNegocios.Bairro)

cmCommand.Execute

MsgBox "Inclusão realizada com sucesso!!"

End Function

 

Public Function Excluir(ByVal dAlunoID As Double) As Boolean

Dim sSql As String

sSql = "Delete From Alunos Where AlunoID=?"

cmCommand.CommandText = sSql

cmCommand.Parameters.Append cmCommand.CreateParameter("AlunoID", adDouble, adParamInput, 40, dAlunoID)

cmCommand.Execute

MsgBox "Exclusão realizada com sucesso!!"

End Function

 

Public Function Alterar(ByVal oNegocios As clsNegocios, dAlunoID As Double) As Boolean

Dim sSql As String

sSql = "Update Alunos Set Nome=?,Bairro=? where AlunoID=?"

cmCommand.CommandText = sSql

cmCommand.Parameters.Append cmCommand.CreateParameter("AlunoID", adDouble, adParamInput, 4, dAlunoID)

cmCommand.Parameters.Append cmCommand.CreateParameter("Nome", adVarChar, adParamInput, 40, oNegocios.Nome)

cmCommand.Parameters.Append cmCommand.CreateParameter("Bairro", adVarChar, adParamInput, 30, oNegocios.Bairro)

cmCommand.Execute

MsgBox "Alteração realizada com sucesso!!"

End Function

 

Public Function PesquisarCodigo(ByVal dAlunoID As Double) As ADODB.Recordset

Dim sSql As String

sSql = "Select * From Alunos Where AlunoID=?"

cmCommand.CommandText = sSql

cmCommand.Parameters.Append cmCommand.CreateParameter("AlunoID", adDouble, adParamInput, 4, dAlunoID)

Set PesquisarCodigo = cmCommand.Execute

End Function

 

Public Function PesquisarDescricao(ByVal sNome As String) As ADODB.Recordset

Dim sSql As String

sSql = "Select * From Alunos Where Nome Like '?%'"

cmCommand.CommandText = sSql

cmCommand.Parameters.Append cmCommand.CreateParameter("Nome", adVarChar, adParamInput, 40, sNome)

Set PesquisarDescricao = cmCommand.Execute

End Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Gil2007.

 

Seguinte, há algumas coisas que utilizou na sua conexão que não posso dizer que estão erradas pois nunca vi ninguém as fazer.

 

Mas tem uma forma mais simples de fazer o que precisa que vai te economizar muito código, também via ADO.

 

Vamos lá:

 

Option Explicit

Private cnConexao As New ADODB.Connection

Private rsAlunos As New ADODB.Recordset

 

Public Function ConectarBanco() As Boolean

set cnConexao = new ADODB.connection

cnConexao.connectionstring = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial Catalog=Teste;Data Source=GIL"

cnConexao.open

set rsAlunos = new ADODB.recordset

rsAlunos.open "select * from alunos",cn,3,3

 

End Function

 

Public Function DesconectarBanco() As Boolean

cnConexao.Close

set cnconexao = nothing

End Function

 

Public Function Incluir(ByVal oNegocios As clsNegocios) As Boolean

 

rsAlunos.addnew

rsAlunos("Nome") = ?

rsAlunos("Bairro") = ?

 

rsAlunos.update

 

MsgBox "Inclusão realizada com sucesso!!"

 

End Function

 

Public Function Excluir(ByVal dAlunoID As Double) As Boolean

 

rsAlunos.Find "alunoID = " & ?, start:=1

 

rsAlunos.delete

 

MsgBox "Exclusão realizada com sucesso!!"

End Function

 

Public Function Alterar(ByVal oNegocios As clsNegocios, dAlunoID As Double) As Boolean

 

rsAlunos.Find "alunoID = " & ?, start:=1

 

rsAlunos("Nome") = ?

rsAlunos("Bairro") = ?

 

rsAlunos.update

 

MsgBox "Alteração realizada com sucesso!!"

End Function

 

Public Function PesquisarCodigo(ByVal dAlunoID As Double) As ADODB.Recordset

 

rsAlunos.Find "alunoID = " & ?, start:=1

 

End Function

 

e assim por diante...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa testei esse código e realmente é muito mais rápido pois economiza tempo e dedos rsrs...

Valeu mesmo Claudio Neto, pela dica, grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa testei esse código e realmente é muito mais rápido pois economiza tempo e dedos rsrs...

Valeu mesmo Claudio Neto, pela dica, grande abraço

 

HUAhuauh, "Economiza dedos" é ótimo...

 

Que bom que funcionou.

 

Precisando estamos ai...

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.