DataGridView rimane vuoto (ma il recordset è popolato).

giovedì 18 marzo 2010 - 11.18

cociredef Profilo | Newbie

Ciao.
sono nuovissimo in questo sito. Da qualche tempo programmo in Vb6 e ho deciso di passare a VB2008 Express.

In un semplicissimo form ho inserito un datagridview e un button.
Il Button mi collega via ADO ad un DB di Access.
Il collegamento funziona perchè il recordcount del recordset di access lo visualizzo su una textbox.

Il problema è che il datagridview rimane vuoto.
Non capisco dove sbaglio. Ecco il codice

Imports System.Windows.Forms
Imports System.Drawing
Imports System.Data


Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim SQLstr As String
Dim RS_GRID As New ADODB.Recordset
Dim Db_Conn As New ADODB.Connection
Dim StrConn_Access As String

StrConn_Access = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PROVA_DataGridView\GRID.mdb; Jet OLEDB:Database"

Db_Conn.Open(StrConn_Access)

SQLstr = "SELECT T_Auto.Auto, T_Auto.Colore, T_Prop.Proprieta FROM T_Auto INNER JOIN T_Prop ON T_Auto.Auto=T_Prop.Auto "
RS_GRID.Open(SQLstr, Db_Conn, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockBatchOptimistic)

DataGridView1.DataSource = RS_GRID.DataSource
TextBox1.Text = "REC = " & RS_GRID.RecordCount

End Sub
End Class


Puoi darmi un aiuto ? Dove sbaglio ?

GRAZIE.

Gho5t Profilo | Junior Member

dopo:
DataGridView1.DataSource = RS_GRID.DataSource

prova a mettere il databind della griglia... altrimenti è strano quello che ti succede... se i record chi sono non capisco il perché non te li fa visualizzare...
DataGridView1.DataBind()

cociredef Profilo | Newbie

Scrivendo come suggerito, ottengo il seguente errore:

Errore 1 'DataBind' non è un membro di 'System.Windows.Forms.DataGridView'.

Come mai ?

Gho5t Profilo | Junior Member

scusa ma avevo letto male che oggetto del Framework era...
prova a cambiare questa riga di codice:
DataGridView1.DataSource = RS_GRID.DataSource

togliendo il .DataSource da RS_GRID
DataGridView1.DataSource = RS_GRID

dovrebbe andare bene teoricamente... se non ti funziona dimmelo che faccio un paio di prove pratiche che ora non ho il Visual Studio sotto mano...

cociredef Profilo | Newbie

Grazie ancora per x la risposta, ma purtroppo il datagridview rimane ancora vuoto.

Leggendo in giro mi pare che debba utilizzare ADO.NET e non più ADO, ma non conosco molto l'argomento.

ciao.

dompa72 Profilo | Senior Member

Prova così
Nell'evento click del Pulsante(button1) inserisci ME.PopolaGriglia

Dim dt_GRID as New DataTable 'questo da inserire a livello di windows form (classe)

Private sub PopolaGriglia()
dt_GRID.Clear()

Dim SQLstr As String
StrConn_Access = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\PROVA_DataGridView\GRID.mdb; Jet OLEDB:Database"
Dim Db_Conn As New SLQClient.OleDbConnection(StrConn_Access)
Db_Conn.Open
Dim StrConn_Access As String = "SELECT T_Auto.Auto, T_Auto.Colore, T_Prop.Proprieta FROM T_Auto INNER JOIN T_Prop ON T_Auto.Auto=T_Prop.Auto "

Dim DA_Grid as New SQLClient.OleDdDataAdapter(StrConn,Db_Conn)

DA_Grid.Fill(dt_GRID)

Db_Conn.Close

DataGridView1.DataSource = dt_GRID

'***** TextBox1.Text = "REC = " & RS_GRID.RecordCount
TextBox1.Text = "REC = " & dt_GRID.Rows.Count 'qui in teoria puoi inserire anche il count delle righe della DataGridView
End Sub

'Naturalmente in questo caso la datagrid non è collegata al file MDB ma al datatable
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5