|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
[Visual Basic 2008] Combobox & database...
Ciao a tutti...
Sto cercando di creare un assemblatore virtuale di pc (tipo quello che c'è sul sito di gigapc, per intenderci..) in visual basic... Ora ho creato un form in cui l'utente può scegliere un processore tra quelli presenti sul database... E ho inserito un combobox in cui dovrebbe uscire la lista dei processori (anche dopo delle query sql..).. MA qui sorge il problema.... Come farlo?? Che codice devo mettere per aggiungere gli item??? Il mio codice ---> Codice:
Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged PictureBox1.ImageLocation = "C:\Documents and Settings\Ale\Documenti\ALE\PC\PROGRAMMAZIONE\pc assembler\PC ASSEMBLER\PC ASSEMBLER\images\intel.jpg" ComboBox1.Items.Add(Me.ProcessoriTableAdapter.querymarcaprocintel(Me.ComponentiDataSet.processori)) End Sub Radiobutton1 è un radiobutton con cui l'utente sceglie di vedere solo processori intel. querymarcaprocintel è una query che restituisce i nomi dei modelli di processori di marca intel... VI PREGO HELP ME ![]() grazie..
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Esattamente cosa dovrebbe restituire ( intendo, il tipo di dato... ) quella roba che dai in pasto al ComboBox1.Items.Add ? |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Una stringa... una combinazione di numeri e lettere....
ALTRE INFO: nome database: componenti nome tabella: processori query sql: SELECT modello FROM processori WHERE marca= N'intel' ------> questa sono sicurissimo ke funge
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Avesse restituito un array di stringhe l'avrei capito ( con la Combo caricavi l'array in un colpo solo... )
Se restituisce una stringa allora in quella Combo avrai sempre e solo un elemento. Non entro nel merito del tuo progetto, perchè non potendolo vedere sarebbe cmq inutile, ma non era (molto) più semplice via codice con un semplice DataReader ? |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Dec 2003
Messaggi: 4907
|
Se restituisce un array usa ComboBox1.Items.AddRange.
|
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Quote:
![]() ![]()
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
|
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Usando questo mi da errore "Impossibile convertirer il valore di tipo 'Integer' a 'Matrice in 1 dimensioni di Object'" <---- ???
EDIT: ho provato anche così: Quote:
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
Ultima modifica di ale09hh : 24-02-2009 alle 09:19. |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Per forza. Se avevi detto che ritorna una stringa, non puoi usare .AddRange
![]() Il concetto del DataReader ( esempio su DB Access ) è il seguente : Codice:
Dim CN As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & percorsoDB & nomeDB & ";Persist Security Info=False") Dim strSql As String = "SELECT * FROM Tabella WHERE condizioni..." Dim CMD As New OleDb.OleDbCommand(strSql, CN) CN.Open() Dim RDR As OleDb.OleDbDataReader = CMD.ExecuteReader() While (RDR.Read()) ComboBox1.Items.Add(RDR("nomeCampo")) End While RDR.Close() CN.Close() E il gioco è fatto. ![]() Chiaramente se hai N Combo, puoi parametrizzarla ( ne fai una Function che riceve in ingresso la SELECT e ti ritorna un DataReader... ). |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Grazie Marcogg... Ma non funziona... non riesce ad aprire il database... mi dice che non lo trova , ma ho controllato 100 volte il percorso ed è giusto...
Ora succede una cosa strana.. Con questo codice --> Codice:
ComboBox3.Items.Add(Me.ProcessoriTableAdapter1.Fill(Me.ComponentiDataSet1.processori)) la query che ho usato è Fill--> SELECT modello FROM processori... Ho inserito due modelli per cui nel combobox mi inserisce semplicemente "2"... ![]() ![]()
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#10 | ||
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
nomeDB deve essere il nome secco, senza percorso, ossia ad es.: "nomeDB.mdb". E vedrai che funziona ![]() Quote:
|
||
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Ma se il database è in formato .sdf (quello creato direttamente con visual basic) cambia qualcosa?
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
![]() Cmq, l'esempio per Access è molto simile anche nel caso del Db .sdf. Per la stringa di connessione ti rimando qui : http://www.connectionstrings.com/sql-server-2005-ce Per il resto prova prima con gli oggetti OleDb ( ho il sospetto che possa funzionare lo stesso ), poi con Sql ( SqlConnection, SqlCommand ecc... ) o SqlCe ... La struttura del codice e l'utilizzo del DataReader non cambiano in ogni caso. ![]() |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Mi sa che non funziona perchè mi dice "Formato di database [...]\componenti.sdf' non riconosciuto.".....
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Ho provato con questo codice:
Codice:
Dim conn As New SqlClient.SqlConnection("Data Source = componenti.sdf; Persist Security Info=False;") Dim sqlQ As String = "SELECT modello FROM processori" Dim command As New SqlClient.SqlCommand(sqlQ, conn) conn.Open() Dim reader As SqlClient.SqlDataReader = command.ExecuteReader() While (reader.Read()) ComboBox3.Items.Add(reader("modello")) End While reader.Close() conn.Close() Cmq grazie 6 gentilissimo a rispondermi ![]()
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#16 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Prova con gli oggetti dello SpaceName System.Data.SqlServerCe.
Se dovesse fallire anche lì, mi sa che il tuo DB ha qualche problema... |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Graziee funzionaaa!!!!
![]()
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
|
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Jan 2008
Messaggi: 430
|
Ho notato una cosa: se definisco sqlQ direttamente come una stringa (esempio "SELECT modello FROM processori" il codice funziona perfettamente...
Se però inserisco una variabie mi da errore "l'identificatore non può essere una stringa vuota" ![]() Codice:
sqlQ = "SELECT modello FROM processori WHERE frequenza >=" & textbox1.text & " AND frequenza <=" & textbox2.text & """" PS: le quattro virgolette alla fine vengono lette come una sola....
__________________
[ Raidmax Ninja | Intel Q6600@3.0 Ghz | Arctic Cooling Freezer 7 Pro | Asus P5K-E WiFi-AP | 6GB Corsair 800Mhz | XFX HD5770XT | 2xWestern Digital 320GB Raid0 | Pioneer DVR-215D | LG L222WS ]
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Il problema sono proprio quelle quattro doppie virgolette, alla fine.
& """" A che servono ? Eliminale. Ti ritrovi una doppia virgola alla fine della SELECT. Ovvio che non la interpreta correttamente. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:43.