Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    5

    [vb2010 winform] Selezionare dati da combobox popolata tramite database

    Salve..
    La mia domanda è semplice, la risposta immagino altrettanto, ma essendomi da poco applicato alla programmazione in VB (e avendo avuto bei risultati ), naturalmente mi ritrovo davanti ad un ostacolo di pura ignoranza.

    Faccio un esempio in modo da poter meglio formularvi la domanda:
    Ho un database a due colonne

    Colonna1 | Colonna2
    Nome1 | Dato1
    Nome2 | Dato2
    Nome3 | Dato3
    Nome4 | Dato4
    Nome5 | Dato5
    .... |

    Ho una combobox che è popolata da questo database e mi mostra solamente i valori della colonna1.
    Adesso, mettiamo il caso io abbia una formula in cui c'è inclusa la variabile che deve contenere il valore della colonna2 selezionato, come mannaggia si seleziona questo stesso dato quando io seleziono il corrispondente della colonna1? Esempio:
    Se seleziono dalla combobox il "Nome4", come faccio ad avere il corrispondente "Dato4" nella variabile che sarà nella formula?
    Ho pensato ad una select e un contatore, tipo qualcosa che appena seleziono il nome4 lui mi conta da 0 a 5 (e cioè la selezione) e poi farà altrettanto col dato4. Però in tutta franchezza, essendoci di mezzo anche linguaggio sql mischiato a vb, non ho idea di come fare :S

    Ho postato un post simile, ditemi se devo cancellarlo. E se ho sbagliato a farlo vi chiedo anticipatamente scusa e provvederò immediatamente a rimediare..

  2. #2
    Per poterti rispondere sarebbe utile vedere il codice che hai scritto per popolare la combobox.
    Chi non cerca trova.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    5
    Certamente!

    innanzitutto ho connesso al database dichiarando la variabile
    codice:
     
    Dim connessione As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Database.mdb")
    Dim selezione As New OleDbDataAdapter("SELECT * FROM Tabella ORDER BY Colonna1", connessione)
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Dim massimo As UInteger
            Dim i As Long
            selezione.Fill(DatabaseDataSet, "Tabella")
            massimo = DatabaseDataSet.Tables("Tabella").Rows.Count
            i = -1
            For i = 0 To massimo
                ComboBox1.Items.Add(DatabaseDataSet.Tables("Tabella").Rows(i).Item(0))
            Next
        End Sub
    Questo codice mi carica correttamente il contenuto della prima colonna, e me lo mette in ordine alfabetico (quindi utile per i futuri inserimenti). Ci vorrebbe un codice che mi permettesse di immagazinare (o visualizzare tramite textbox o label) il valore corrispondente della colonna 2 alla selezione di un elemento della colonna1.

    aspetto buone nuove e grazie sempre!

  4. #4
    Il metodo Items.Add della combobox accetta object, non solo stringhe. Se aggiungo un oggetto MyItem, come nell'esempio che segue, la combobox visualizzerà nell'elenco la rappresentazione stringa di tale oggetto, utilizzando il metodo predefinito ToString().
    codice:
    Dim item As New MyItem(1, "alfa")
    ComboBox1.Items.Add(item)
    La classe MyItem:
    codice:
    Public Class MyItem
        Public Property ID As Integer
        Public Property Text As String
    
        Public Sub New(id As Integer, text As String)
            Me.ID = id
            Me.Text = text
        End Sub
    
        Public Overrides Function ToString() As String
            Return Me.Text
        End Function
    End Class
    Poiché la collezione Items memorizza gli oggetti che ho passato tramite il metodo Add, per estrarre una qualsiasi proprietà di tale oggetto basterà scrivere:
    codice:
    If ComboBox1.SelectedItem IsNot Nothing Then
        Dim item As MyItem = CType(ComboBox1.SelectedItem, MyItem)
    
        Console.WriteLine(item.ID)
    End If
    Chi non cerca trova.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2012
    Messaggi
    5
    Grazie tas! Appena finisco di lavorare e trovo 5 minutini ci provo e ti faccio sapere!
    Ho capito la teoria di ciò che mi hai scritto, devo solo studiare ciò che hai scritto
    presto ti do notizie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.