Jump to content
Luisveiga18

Duvida - VB2010 e Access 2010

Recommended Posts

Luisveiga18

Estou com um pequeno problema. Tentei usuar os codigos que estao aqui no Portugal a Programar - http://wiki.portugal-a-programar.pt/dev_net:vb.net:access

Mas infelizmente não estou a conseguir faze-los funcionar, pois os dados nem estão a aparecer na datagrid

Imports System.Data.OleDb
Public Class Form3
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB" & Application.StartupPath & "BD.accdb")
 Dim query As String = "SELECT * FROM Tabela_Teste"
 Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
 Dim MyData As New DataSet
 DataAdapter.Fill(MyData, "Tabela_Teste")
 Me.DataGridView1.DataSource = MyData.Tables("Tabela_Teste") ' Neste caso utilizei uma datagridview para visualizar os dados
End Sub

Não sei se será pk a minha versão do access é 2010 ou então se fiz algo de errado.

Share this post


Link to post
Share on other sites
apocsantos

Bom dia,

A primeira coisa que me "salta à vista" é o facto de estares a usar um provider para MS Access 2003 e não para MS Access 2010 (accdb), quando a base de dados é um ficheiro de Access 2010.

Imports System.Data.OleDb
Public Class Form3
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB" & Application.StartupPath & "BD.accdb") 'estavas a usar o provider para access 2003
        Dim query As String = "SELECT * FROM Tabela_Teste"
        Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
        Dim MyData As New DataSet
        DataAdapter.Fill(MyData, "Tabela_Teste")
        Me.DataGridView1.DataSource = MyData.Tables("Tabela_Teste") ' Neste caso utilizei uma datagridview para visualizar os dados
End Sub

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Luisveiga18

Agora esta tudo a funcionar mas estou com outro problema. Quando adiciono um dado a datagrid não "atualiza", so quando fecho e abro o programa de novo é que podemos ver os dados introduzidos anteriormente. O adicionar que eu estou a usar é este:

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB.accdb")
 Dim query As String = "INSERT INTO Tabela_Teste([Nome], [Numero]) VALUES (@Nome, @Numero)"
 Dim command As New OleDbCommand(query, ConnectionString)
 command.Parameters.Add("@Nome", OleDbType.VarChar).Value = TextBox2.Text
 command.Parameters.Add("@Numero", OleDbType.VarChar).Value = TextBox3.Text
 ConnectionString.Open()
 Dim x As Integer = command.ExecuteNonQuery()
 If x < 1 Then
	 MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 Else
	 MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
 End If
 ConnectionString.Close()
 command = Nothing
End Sub

Share this post


Link to post
Share on other sites
apocsantos

Bom dia,

Em teoria podes utilizar o metodo Refresh() da DataGirdView. No código que apresentas, apenas tens uma ligação à base de dados e uma instrução de insert, não tens a DatagridView. Assim não faço a mais pequena ideia de como a estás a preencher, se estás a usar Datatables, se estás a usar um ciclo para preencher a DatagridView, se outra forma.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites
Luisveiga18

Não tinha colocado o código completo.

Imports System.Data.OleDb
Public Class Form3
Private Sub Form3_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB.accdb")
 Dim query As String = "SELECT * FROM Tabela_Teste"
 Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
 Dim MyData As New DataSet
 DataAdapter.Fill(MyData, "Tabela_Teste")
 Me.DataGridView1.DataSource = MyData.Tables("Tabela_Teste")
End Sub
Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB.accdb")
 Dim query As String = "INSERT INTO Tabela_Teste([Nome], [Numero]) VALUES (@Nome, @Numero)"
 Dim command As New OleDbCommand(query, ConnectionString)
 command.Parameters.Add("@Nome", OleDbType.VarChar).Value = TextBox2.Text
 command.Parameters.Add("@Numero", OleDbType.VarChar).Value = TextBox3.Text
 ConnectionString.Open()
 Dim x As Integer = command.ExecuteNonQuery()
 If x < 1 Then
	 MessageBox.Show("Erro ao inserir", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
 Else
	 MessageBox.Show("Registo inserido com sucesso!", My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Information)
 End If
 ConnectionString.Close()
 command = Nothing
End Sub

Share this post


Link to post
Share on other sites
apocsantos

Bom dia,

O que te acontece é que só é feito o refresh quando fazes o load do form. O Refresh() não funciona porque o que tens carregado na datatable corresponde ao resultado do select feito quando carregas o form.


Public Sub actualiza()
	 Dim ConnectionString As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Users\Luís Sebastião\Desktop\PAP 2012-2013\RestauGestãoDB.accdb")
	 Dim query As String = "SELECT * FROM Tabela_Teste"
	 Dim DataAdapter As New OleDbDataAdapter(query, ConnectionString)
	 Dim MyData As New DataSet
	 MyData.clear()
	 DataAdapter.Fill(MyData, "Tabela_Teste")
	 'limpa a DataGridView1
	 DataGridView1.Rows.Clear()
	 'preenche novamente a DataGridView1
	 DataGridView1.DataSource= MyData.Tables("Tabela_Teste")
End Sub

Basta chamares esta sub no fim da insersão dos dados, para te actualizar a datagridview.

Cordiais cumprimentos,

Apocsantos


"A paciência é uma das coisas que se aprendeu na era do 48k" O respeito é como a escrita de código, uma vez perdido, dificilmente se retoma o habito"

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.