Newsgroup: it.comp.lang.visual-basic
Titolo: [.NET] SelectCommand di un dataadapter

Esempio preso dalla guida in linea:
Dim myDataAdapter As New OleDb.OleDbDataAdapter()
myDataAdapter.SelectCommand.CommandText = "SELECT * FROM Categories ORDER BY
CategoryID"
myDataAdapter.SelectCommand.Connection.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND_RW.MDB"
Sulla seconda riga mi genera questa eccezione:
Eccezione non gestita di tipo "System.NullReferenceException" in
WindowsApplication1.exe
Informazioni aggiuntive: Riferimento a un oggetto non impostato su
un'istanza di oggetto.
Se invece creo esplicitamente l'oggetto Command in questo modo:
da.SelectCommand = New OleDb.OleDbCommand()
da.SelectCommand.CommandText = "SELECT * FROM Categories ORDER BY
CategoryID"
funziona correttamente.
Perchč?
Grazie e ciao.
Skysurfer

La proprietà SelectCommand di un DataAdapter accetta come parametro un
oggetto OledbCommand istanziato......
ecco perchè prima devi crearlo con il New OledbCommand.
Forse puoi provare una sintassi più ottimizzata così:
Dim myDataAdapter As New OleDb.OleDbDataAdapter()
myDataAdapter.SelectCommand = New OledbCommand("SELECT * FROM Categories
ORDER BY CategoryID")
adesso non ho sottomano .NET, non so dirti i costruttori della classe
OledbCommand, dacci un'occhiata......
good coding!!!
--
Damiani Liborio Igor
ig...@igordamiani.it
 - 
dam...@italiainfiera.it
 - 
idam...@hotmail.com
http://www.igordamiani.it
ICQ : 11847262

 good coding!!!
Quindi significa che l'esempio sulla guida è sabgliato?!?
Grazie
Skysurfer

cosě a occhio e croce direi di......boh!!!!
:-)))
sai, magari č un estratto di codice, oppure per qualche motivo č scritto
cosě.
Non č che dice esplicitamente di NON scrivere cosě? Magari per far capire
gli oggetti.......
adesso, non posso leggere, ma su quale libro/sito hai visto quell'esempio?
sul Balena?


Per il DataAdapter i parametri da passare sono:
'Dim myDataAdapter As New OleDb.OleDbDataAdapter("selectCommandText as
String","selectConnectionString as String")
'Infatti se scrivo:
 Dim myDataAdapter As New OleDb.OleDbDataAdapter("SELECT * FROM Categories
ORDER BY  CategoryID",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Northwind.mdb")
'Il codice funziona. In disconnesso è 
ADO.NET
 che gestisce il pooling delle
connessioni.
-----------------------------------
'Se scrivo:
 myDataAdapter.SelectCommand.Connection.ConnectionString
'L'utilizzo dell'oggetto Connection , implica , vedi guida , la costruzione
di una istanza.
------------------------------------
'Ho notato un'altra singolarità , sempre dalla guida:
Proprietà OleDbDataAdapter.SelectCommand
'Spiegazione:
Ottiene o imposta un'istruzione SQL o una stored procedure per selezionare
record nell'origine dati.
Public Property SelectCommand As OleDbCommand
Valore proprietà:
Oggetto OleDbCommand utilizzato durante l'applicazione del metodo Fill per
selezionare record da un'origine dati e collocarli nell'oggetto DataSet.
'Quindi l'utilizzo della proprietà:
 OleDbDataAdapter.SelectCommand
'implica : OleDbCommand
Per utilizzare : OleDbCommand
'deve essere istanziato
giuseppeD

 sul Balena?
L'ho visto proprio premendo F1 su OleDbDataAdapter!
Balena usa sempre i costruttori per specificare il SelectCommand del
DataAdapter ma stavo facendo delle prove con un po' di codice mio ed ho
scoperto questo problema.
Ti riporto la pagina dell'Help di Visual Studio che appare premendo F1:
---
Ottiene o imposta un'istruzione SQL o una stored procedure per selezionare
record nell'origine dati.
[Visual Basic]
Public Property SelectCommand As OleDbCommand
[...]
Valore proprietà
Oggetto OleDbCommand utilizzato durante l'applicazione del metodo Fill per
selezionare record da un'origine dati e collocarli nell'oggetto DataSet.
Osservazioni
Quando la proprietà SelectCommand viene assegnata a un oggetto OleDbCommand
precedentemente creato, l'oggetto OleDbCommand non verrà duplicato. La
proprietà SelectCommand conserva un riferimento all'oggetto OleDbCommand
creato in precedenza.
Se la proprietà SelectCommand non restituisce alcuna riga, non verrà
aggiunta alcuna tabella all'oggetto DataSet e non saranno generate
eccezioni.
Esempio
[Visual Basic, C#] Nell'esempio che segue viene creata una classe
OleDbDataAdapter e ne vengono impostate alcune proprietà.
[Visual Basic]
Public Sub CreateOleDbDataAdapter()
    Dim myDataAdapter As New OleDbDataAdapter()
    myDataAdapter.SelectCommand.CommandText = _
       "SELECT * FROM Categories ORDER BY CategoryID"
    myDataAdapter.SelectCommand.Connection.ConnectionString = _
       "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=NWIND_RW.MDB"
End Sub
---
Ciao
Skysurfer