Ad Item Query Select su combobox/listbox

venerdì 06 giugno 2008 - 19.59

Maurizio_Roma Profilo | Newbie

Salve a tutti, sto facendo un'applicazione in VB.NET e ho un problemino quando provo ad aggiungere il risultato di una Select in una listbox o in una combobox, esegue tutto ma l'item aggiunto è: System.__ComObject.

Lo scritp che ho fatto per la selezione è questo

Cmd = New ADODB.Recordset
Selezione = "SELECT * FROM Materiali WHERE Tipo LIKE ('%" & TextBox1.Text & "%')"
Cmd.Open(Selezione, Connessione, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)
Cmd.MoveFirst()
Do While Cmd.EOF = False
ComboBox1.Items.Add(Cmd.Fields(1))
ComboBox1.Refresh()
Cmd.MoveNext()
Loop


Dov'è l'errore??

Lo stesso script in VB6 funziona perfettamente, dove sbaglio??

Grazie

alx_81 Profilo | Guru

>Salve a tutti,
Ciao!

>è: System.__ComObject.
>Dov'è l'errore??
Allora, avrei molto da dire in questa parte di codice. Cominciamo per gradi. Come puoi notare dall'errore non stai usando ADO.Net, ma ADODB, che è una libreria COM e non .NET.
E già questa è una worst practices, a meno che, per qualche motivo che per ora non vedo, tu non sia costretto ad utilizzarlo.
Ti consiglio di cominciare ad utilizzare ADO.Net e quindi le librerie sotto ai namespace System.Data e System.Data.OleDB (se usi sql server, System.Data.SQLClient).

Qui le reference dei namespace:

System.Data
http://msdn.microsoft.com/en-us/library/system.data.aspx

System.Data.SqlClient
http://msdn.microsoft.com/en-us/library/system.data.sqlclient.aspx

System.Data.Oledb
http://msdn.microsoft.com/en-us/library/system.data.oledb.aspx

Poi, non vedi la tua effettiva selezione, poichè non hai impostato le due proprietà DisplayMember (http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.displaymember.aspx) e ValueMember (http://msdn.microsoft.com/en-us/library/system.windows.forms.listcontrol.valuemember.aspx) che servono per suggerire alla combo che campi associare alla stringa che vuoi vedere ed al valore che deve corrispondere a quella stringa.

Ed infine, attenzione a concatenare il valore del parametro, rischi di incappare in attacchi di tipo SQL Injection (http://en.wikipedia.org/wiki/SQL_injection). Usa le query parametriche.

Ti allego un esempio fatto in ADO.Net per SQL Server (framework 1.1) con le due proprietà della combo valorizzate:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e questo sempre ADO.Net disconnesso per SQL Server, ma in 2.0:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

>Grazie
di nulla!
Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Maurizio_Roma Profilo | Newbie

Ho risolto utilizzando un dataadapeter e sono riuscito ad aggiungere gli item nella combobox.

Comunque grazie lo stesso.

Ciao

alx_81 Profilo | Guru

>Ho risolto utilizzando un dataadapeter e sono riuscito ad aggiungere
>gli item nella combobox.
Quindi hai usato ADO.Net, ed implicitamente il namespace System.Data.SqlClient o OleDB
--

Alessandro Alpi | SQL Server MVP

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org

Maurizio_Roma Profilo | Newbie

Scusa il ritardo ma ho avuto altri mille impiccia da risolvere.
Comunque si ho utilizzato System.Data.SqlClient e ho risolto il problema.

Ciao e grazie
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-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5