Oppure

Loading
27/01/10 2:47
__BlackworM__
Come da titolo mi succede una cosa molto strana, anzitutto vi posto il codice :

        cn.Open()
        Dim command As New OleDbCommand("select 'prezzo' from antipasti where nome='" & lb.SelectedItem.ToString & "'", cn)
        Dim reader As OleDbDataReader
        reader = command.ExecuteReader

        While reader.Read
            lb.Items.Add(reader("prezzo").ToString & vbCrLf)
        End While

        cn.Close()

il codice si collega ad un database access va a fare una query e seleziona dalla tabella antipasti e DOVREBBE prendere il prezzo del prodotto selezionato, quando sostituisco il lb (che sta per listbox) con il nome del prodotto va tutto bene ma se il codice resta così non mi estrae il prezzo di niente e quindi stringa vuota, come posso fare in modo che dato un nome dalla listbox mi va a fare una query di selezione prezzo in base al nome selezionato ?
aaa
27/01/10 8:49
Il Totem
Non capisco cosa significhi "se resta così". Vuoi dire che funziona solo la prima volta e le successive no?
aaa
27/01/10 9:55
Non è che abbia capito tanto il senso del tuo post ma nella SELECT il nome del campo non va tra apici. Deve essere

SELECT prezzo FROM antipasti WHERE ...
27/01/10 14:11
__BlackworM__
Postato originariamente da nessuno:

Non è che abbia capito tanto il senso del tuo post ma nella SELECT il nome del campo non va tra apici. Deve essere

SELECT prezzo FROM antipasti WHERE ...


allora mi spiego meglio, se invece di listbox.selectedItem.tostring scrivo direttamente il nome del record ad esempio where nome='nome' da cercare va bene se invece scrivo where nome= selecteditem.tostring mi restituisce un insieme vuoto nella listbox è tutto fatto bene la query è corretta perchè testata in access direttamente insomma è un fatto molto strano...

altri dettagli :
io ho una tabella con campi id,nome,prezzo e voglio estrarre il prezzo che abbia come nome l'elemento scelto dall'utente e quindi se nella listbox ho un elemento chiamato pasta cliccando mi deve stampare con msgbox il prezzo...
aaa
27/01/10 19:02
A parte il fatto che ti ho gia' detto (gli apici nel nome del campo), controlla che il dato contenuto nella listbox sia maiuscolo/minuscolo cosi' come è nel database e che non contenga spazi aggiuntivi.
27/01/10 21:32
balto
Prova questo:

        cn.Open() 
        Dim command As New OleDbCommand("Select 'prezzo' from antipasti where nome=@NOME", cn) 
        command.Parameters.Add("@NOME", OleDbType.VarChar).Value = lb.SelectedItem.ToString
        Dim reader As OleDbDataReader 
        reader = command.ExecuteReader 

        While reader.Read 
            lb.Items.Add(reader("prezzo").ToString & vbCrLf) 
        End While 

        cn.Close() 
Ultima modifica effettuata da balto 27/01/10 21:44
aaa
27/01/10 22:32
__BlackworM__
Postato originariamente da balto:

Prova questo:

        cn.Open() 
        Dim command As New OleDbCommand("Select 'prezzo' from antipasti where nome=@NOME", cn) 
        command.Parameters.Add("@NOME", OleDbType.VarChar).Value = lb.SelectedItem.ToString
        Dim reader As OleDbDataReader 
        reader = command.ExecuteReader 

        While reader.Read 
            lb.Items.Add(reader("prezzo").ToString & vbCrLf) 
        End While 

        cn.Close() 


Niente da fare ancora non và, adesso posto il codice completo :


    Private Sub lb_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lb.SelectedIndexChanged

   Dim stringaconn As String = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=sagra.mdb"
    Dim cn As New OleDbConnection(stringaconn)

        cn.Open()
        Dim command As New OleDbCommand("select prezzo from antipasti where nome=@NOME", cn)
        command.Parameters.Add("@NOME", OleDbType.VarChar).Value = lb.SelectedItem.ToString
        Dim reader As OleDbDataReader
        reader = command.ExecuteReader

        While reader.Read
            lb.Items.Add(reader("prezzo").ToString & vbCrLf)
        End While

        cn.Close()

    End Sub



ok adesso se sostituisco questo :
select prezzo from antipasti where nome=@NOME
con questo
select prezzo from antipasti where nome='cocktail di gamberi'

mi aggiunge alla listbox il valore che voglio e cioè il prezzo del cocktail di gamberi se invece metto listbox.selectedItem.ToString niente da fare mi da un insieme vuoto facendo stampare a video il valore reader.Read()
mi stampa false come se non ritornasse ne ìssun valore e quindi non è true...

come fare...:hail:
eppure tutto mi sembra corretto...
aaa
27/01/10 22:36
__BlackworM__
Postato originariamente da nessuno:

A parte il fatto che ti ho gia' detto (gli apici nel nome del campo), controlla che il dato contenuto nella listbox sia maiuscolo/minuscolo cosi' come è nel database e che non contenga spazi aggiuntivi.

non ci sono errori anche perchè la listbox la riempio con lo stesso database e lo stesso sistema e quindi per questo è strano anzi posto anche il codice con cui riempio la listbox al load del form

        cn.Open()
        Dim command As New OleDbCommand("select * from antipasti", cn)
        Dim reader As OleDbDataReader
        reader = command.ExecuteReader

        While reader.Read
            lb.Items.Add(reader("nome").ToString & vbCrLf)
        End While

        cn.Close()


come notate è lo stesso codice a differenza che non metto una clausola where con un (listbox.selected.items).to.string
aaa