VISUAL BASIC, COMBOBOX E ACCESS.
Caros, copiei o código abaixo na internet, mas não cosigo fazer rodar. Já adaptei o código para minha necessidade,mas acho que alguma coisa eu não fiz a mudança correta. O que tá errado será ? Podem me ajudar ?
[ô]Meu arquivo access : gobras
[ô]Minha tabela access : comodos
[ô]meu único campo da tabela : Campo1
[ô]Meu combobox deve carregar uma coluna só e não deve estar aberto para edição, apenas para consulta.
Try
Dim connString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\gobras.mdb;[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connString)
[ô] Select Statement que irá mostrar todos os vendedores activos,
[ô] excepto o vendedor que será definido no parâmetro
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
[ô] Define o DataAdapter e os parâmetros. O DataAdapter guarda a ligação, não
[ô] sendo necessário abrir com o comando connection.Open()
Dim da As New OleDbDataAdapter(SQL, connection)
da.SelectCommand.Parameters.Add([Ô]comodos[Ô], OleDbType.VarChar).Value = [Ô]Jorge Paulino[Ô]
[ô] Preenche o Dataset com os valores da base de dados
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox1
.DisplayMember = [Ô]comodos[Ô]
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
[ô] Definições para autocomplete
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
[ô] Insere um novo item geral na posição 0
[ô] com uma descrição geral a indicar o tipo de lista
Dim dr As DataRow
dr = ds.Tables(0).NewRow
dr.Item([Ô]Campo1[Ô]) = 0
[ô]dr.Item([Ô]comodo[Ô]) = [Ô]Lista cômodos[Ô]
ds.Tables(0).Rows.InsertAt(dr, 0)
[ô] Selecciona o item inserido
Me.ComboBox1.SelectedIndex = 0
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Agradeço;
[ô]Meu arquivo access : gobras
[ô]Minha tabela access : comodos
[ô]meu único campo da tabela : Campo1
[ô]Meu combobox deve carregar uma coluna só e não deve estar aberto para edição, apenas para consulta.
Try
Dim connString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\gobras.mdb;[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connString)
[ô] Select Statement que irá mostrar todos os vendedores activos,
[ô] excepto o vendedor que será definido no parâmetro
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
[ô] Define o DataAdapter e os parâmetros. O DataAdapter guarda a ligação, não
[ô] sendo necessário abrir com o comando connection.Open()
Dim da As New OleDbDataAdapter(SQL, connection)
da.SelectCommand.Parameters.Add([Ô]comodos[Ô], OleDbType.VarChar).Value = [Ô]Jorge Paulino[Ô]
[ô] Preenche o Dataset com os valores da base de dados
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox1
.DisplayMember = [Ô]comodos[Ô]
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
[ô] Definições para autocomplete
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
[ô] Insere um novo item geral na posição 0
[ô] com uma descrição geral a indicar o tipo de lista
Dim dr As DataRow
dr = ds.Tables(0).NewRow
dr.Item([Ô]Campo1[Ô]) = 0
[ô]dr.Item([Ô]comodo[Ô]) = [Ô]Lista cômodos[Ô]
ds.Tables(0).Rows.InsertAt(dr, 0)
[ô] Selecciona o item inserido
Me.ComboBox1.SelectedIndex = 0
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Agradeço;
Vc tem que informar o erro que ocorre, e na linha em que ocorre.
Baseado no seu com teste eliminando alguns itens.
Try
Dim connString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco.MDB[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connString)
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
Dim da As New OleDbDataAdapter(SQL, connection)
[ô] da.SelectCommand.Parameters.Add([Ô]comodos[Ô], OleDbType.VarChar).Value = [Ô]Jorge Paulino[Ô]
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox2
[ô].DisplayMember = [Ô]comodos[Ô]
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
[ô].Definições para autocomplete
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
Dim dr As DataRow
dr = ds.Tables(0).NewRow
[ô]dr.Item([Ô]Campo1[Ô]) = 0
[ô]dr.Item([Ô]comodo[Ô]) = [Ô]Lista cômodos[Ô]
ds.Tables(0).Rows.InsertAt(dr, 0)
[ô] Selecciona o item inserido
[ô]Me.ComboBox2.SelectedIndex = 0
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Try
Dim connString As String = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & My.Application.Info.DirectoryPath & [Ô]\Banco.MDB[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connString)
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
Dim da As New OleDbDataAdapter(SQL, connection)
[ô] da.SelectCommand.Parameters.Add([Ô]comodos[Ô], OleDbType.VarChar).Value = [Ô]Jorge Paulino[Ô]
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox2
[ô].DisplayMember = [Ô]comodos[Ô]
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
[ô].Definições para autocomplete
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
Dim dr As DataRow
dr = ds.Tables(0).NewRow
[ô]dr.Item([Ô]Campo1[Ô]) = 0
[ô]dr.Item([Ô]comodo[Ô]) = [Ô]Lista cômodos[Ô]
ds.Tables(0).Rows.InsertAt(dr, 0)
[ô] Selecciona o item inserido
[ô]Me.ComboBox2.SelectedIndex = 0
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Omar agradeço; tá dando um erro para mim : Na linha *******Dim dr As DataRow****** indica que variable dr hides a variable in an enclosing block.
No mesmo form já uso algo :
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Dim ds As DataSet
Dim da As OleDbDataAdapter
Dim Con As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.MDB[Ô])
Dim cmd As New OleDbCommand
Dim reader As OleDbDataReader
Sub paradois()
Dim connS As String
connS = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;[Ô]
Dim conect As New OleDb.OleDbConnection
conect.ConnectionString = connS
conect.Open()
Dim selcom As New OleDb.OleDbCommand
selcom.CommandText = [Ô]SELECT max(num) FROM [numorc];[Ô]
selcom.Connection = conect
Dim dr As OleDb.OleDbDataReader
dr = selcom.ExecuteReader()
While dr.Read()
Label4.Text = dr.Item(0)
End While
conect.Close()
daqui para baixo é o código que vocÊ sugeriu, e que uso dentro da sub paradois
Try
connS = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connS)
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
Dim da As New OleDbDataAdapter(SQL, connection)
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox1
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
Dim dr As DataRow
dr = ds.Tables(0).NewRow
ds.Tables(0).Rows.InsertAt(dr, 0)
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
end sub
No mesmo form já uso algo :
Imports System.Data
Imports System.Data.OleDb
Public Class Form2
Dim ds As DataSet
Dim da As OleDbDataAdapter
Dim Con As New OleDbConnection([Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.MDB[Ô])
Dim cmd As New OleDbCommand
Dim reader As OleDbDataReader
Sub paradois()
Dim connS As String
connS = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;[Ô]
Dim conect As New OleDb.OleDbConnection
conect.ConnectionString = connS
conect.Open()
Dim selcom As New OleDb.OleDbCommand
selcom.CommandText = [Ô]SELECT max(num) FROM [numorc];[Ô]
selcom.Connection = conect
Dim dr As OleDb.OleDbDataReader
dr = selcom.ExecuteReader()
While dr.Read()
Label4.Text = dr.Item(0)
End While
conect.Close()
daqui para baixo é o código que vocÊ sugeriu, e que uso dentro da sub paradois
Try
connS = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\gobras.mdb;[Ô]
[ô] Inicia uma ligação à base de dados
Using connection As New OleDbConnection(connS)
Dim SQL As String = [Ô]SELECT Campo1 FROM comodos[Ô]
Dim da As New OleDbDataAdapter(SQL, connection)
Dim ds As New DataSet
da.Fill(ds)
[ô] Preenche a combobox
With Me.ComboBox1
.ValueMember = [Ô]Campo1[Ô]
.DataSource = ds.Tables(0).DefaultView
.DropDownStyle = ComboBoxStyle.DropDown
.AutoCompleteMode = AutoCompleteMode.Suggest
.AutoCompleteSource = AutoCompleteSource.ListItems
End With
Dim dr As DataRow
dr = ds.Tables(0).NewRow
ds.Tables(0).Rows.InsertAt(dr, 0)
End Using
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
end sub
Caro Omar fui fazer outra coisa e para que rodasse eu escondi as linhas abaixo
Dim dr As DataRow
dr = ds.Tables(0).NewRow
ds.Tables(0).Rows.InsertAt(dr, 0)
Isso fez com quê acontecesse o que eu precisava.
Caso você entenda que isso possa me dar algum problema future me oriente por favor, mas de forma efetiva meu problema atual foi resolvido.
Agradeço;
Dim dr As DataRow
dr = ds.Tables(0).NewRow
ds.Tables(0).Rows.InsertAt(dr, 0)
Isso fez com quê acontecesse o que eu precisava.
Caso você entenda que isso possa me dar algum problema future me oriente por favor, mas de forma efetiva meu problema atual foi resolvido.
Agradeço;
Tópico encerrado , respostas não são mais permitidas