Usuário com melhor resposta
Criar uma View no Access pelo vb.net

Pergunta
-
Olá!
Estou precisando criar um view em um banco de dados .mdb. Só que preciso que o sistema o crie automatico.
No vb6 eu fazia assim .CreateQueryDef "NomeDaConsulta", "Select Codigo, Nome From Clientes Where Codigo < 1000"
Mas no Ado.net eu não faço idéia de com faze-lo.
Respostas
-
Olá, eu acho que dá pra fazer sim; não seria uma View, mas um tipo de consulta como se faz diretamente no Access.
Eu não testei aqui, mas veja o código abaixo. Acredito que é isso:
Code Snippet' Criado por SharpDevelop.
' Usuário: Administrador
' Data: 27/9/2007
' Hora: 17:02
'
' Para alterar este modelo use Ferramentas | Opções | Codificação | Editar Cabeçalhos Padrão.
'
Imports System.Data
Imports System.Data.OleDb
Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()
ProcedimentosArmazenadosProdutos()'
' TODO : Add constructor code after InitializeComponents
'
End Sub
Sub ProcedimentosArmazenadosProdutos()
Dim strSQL As String' spListaProdutos - retorna todos os registros da tabela produtos
strSQL = "CREATE PROC spListaProdutos3(codigoID Long) AS SELECT * FROM Cadastro WHERE ID = codigoID;"
criaProcedimentoArmazeando(strSQL)
'CREATE PROC spAutalizaProdutos(codigoProduto LONG, nomeProduto VARCHAR(40)) AS UPDATE Products SET ProductName = " & _
' "nomeProduto WHERE ProductID = codigoProduto;"
End Sub
Sub criaProcedimentoArmazeando(ByVal strSQL As String)
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand
Dim da As OleDbDataAdapter' Verifique se a localização do banco de dados é mesma no seu ambiente
Dim sConStr As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Tmp\cliMercado.mdb"con = New OleDbConnection(sConStr)
cmd.Connection = con
cmd.CommandText = strSQLTry
con.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
End Class
Todas as Respostas
-
Ricardo,
Dim conn As SqlConnection
Dim comando As SqlCommand
conn.ConnectionString = My.Settings.TuaConnectionString
comando.Connection = conn
comando.CommandType = CommandType.Text
Dim StringSQL As String = "CREATE VIEW NomeDaConsulta AS SELECT Codigo, Nome From Clientes Where Codigo < 1000"
comando.CommandText = StringSQL
comando.ExecuteNonQuery()
Mas... o exemplo é uma instrução SQL, não a vais conseguir fazer numa bd Access :
“...O mecanismo de banco de dados do Microsoft Access não oferece suporte ao uso de CREATE VIEW ...”
Abraços
-
-
Olá, eu acho que dá pra fazer sim; não seria uma View, mas um tipo de consulta como se faz diretamente no Access.
Eu não testei aqui, mas veja o código abaixo. Acredito que é isso:
Code Snippet' Criado por SharpDevelop.
' Usuário: Administrador
' Data: 27/9/2007
' Hora: 17:02
'
' Para alterar este modelo use Ferramentas | Opções | Codificação | Editar Cabeçalhos Padrão.
'
Imports System.Data
Imports System.Data.OleDb
Public Partial Class MainForm
Public Sub New()
' The Me.InitializeComponent call is required for Windows Forms designer support.
Me.InitializeComponent()
ProcedimentosArmazenadosProdutos()'
' TODO : Add constructor code after InitializeComponents
'
End Sub
Sub ProcedimentosArmazenadosProdutos()
Dim strSQL As String' spListaProdutos - retorna todos os registros da tabela produtos
strSQL = "CREATE PROC spListaProdutos3(codigoID Long) AS SELECT * FROM Cadastro WHERE ID = codigoID;"
criaProcedimentoArmazeando(strSQL)
'CREATE PROC spAutalizaProdutos(codigoProduto LONG, nomeProduto VARCHAR(40)) AS UPDATE Products SET ProductName = " & _
' "nomeProduto WHERE ProductID = codigoProduto;"
End Sub
Sub criaProcedimentoArmazeando(ByVal strSQL As String)
Dim con As OleDbConnection
Dim cmd As OleDbCommand = New OleDbCommand
Dim da As OleDbDataAdapter' Verifique se a localização do banco de dados é mesma no seu ambiente
Dim sConStr As String = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Tmp\cliMercado.mdb"con = New OleDbConnection(sConStr)
cmd.Connection = con
cmd.CommandText = strSQLTry
con.Open()
cmd.ExecuteNonQuery()
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Sub
End Class -
-
-