Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1

    [vb.net]problema query database

    scusa jonny mi ero proprio dimenticato di specificare il linguaggio.
    Non commetterò altri errori.
    cmq uso visual basic net
    Scusami a volte la testa mi abbandona. anche marzia l'altra volta mi ha ricordato la stessa cosa. Sorry!
    raga ho un problema!
    ho dei bottoni di opzione che sono contenuti in dei group box. l'utente seleziona le caratteristiche del suo coktail e in fine clicca su un pulsante posizionato alla fine del form con la funzione di cercare il cocktail in base agli elementi selezionati.Cosi mi fa una query e mi ricerca nel campo ingredienti le parole selezionate e poi mi chiude in automatico la connessione al mio mdb
    il problema è che con il codice che ho associato io al bottone cerca non va! e non mi trova nulla.
    Io vorrei che in base agli ingredienti selezionati mi appaia il nome del cocktail nell'apposito textBox posizionato sopra al bottone cerca il codice è questo
    questo riportato sotto è solo per due opzioni ma ce ne sono altre.
    forse il problema è che mi deve ricercare più elementi. li ho provati anche ad inserire in un vettore ma niente.
    chi di voi sa aiutarmi?
    Dove Sbaglio.
    Grazie mille in anticipo

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OL EDB.4.0;" & "Data Source=C:\Documents and Settings\Mirco Web Master\Documenti\lo.mdb")
    m_rsAlcolici.Open("Alcolici", m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
    If RadioButton3.Checked = True And RadioButton5.Checked = True Then
    Dim sql As String
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]"
    NomeCok.Text = ""
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
    m_rsAlcolici.Close()
    m_cnConnessioneADO.Close()
    End If
    m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OL EDB.4.0;" & "Data Source=C:\Documents and Settings\Mirco Web Master\Documenti\lo.mdb")
    m_rsAlcolici.Open("Alcolici", m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
    If RadioButton4.Checked = True And RadioButton6.Checked = True Then
    Dim sql As String
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]"
    NomeCok.Text = ""
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
    m_rsAlcolici.Close()
    m_cnConnessioneADO.Close()
    End If
    End Sub

  2. #2
    E' troppo difficile per te!Lascia perdere!
    Non ci puoi riuscire!

  3. #3
    luca grazie ma io ho bisogno di un aiutio non di un incoragiamento.
    raga lasciatelo perdere è un mio amico.

  4. #4
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Intanto potresti inserire il codice tra i tag CODE in modo
    da renderlo leggibile.

    Poi dovresti controllare le stringhe SQL,
    codice:
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]"
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]"
    
    'la sintassi SQL, se il campo Ingredienti è di tipo carattere
    ' dovrebbe essere :
     
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['tequila';'secco']"
    In ultimo dovresti ottimizzare la composizione della
    WHERE, non utilizzando le IF sulle combinazioni, ma
    un qualcosa di più performante.

    Ciao,
    Ciao, Brainjar

  5. #5
    ok grazie. ma cosa intendi per più performante. io non sono tanto bravo!
    brainjar grazie per l'aiuto.
    io ho provato a sostituire
    con
    codice:
     sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
    ma non va. o meglio funziona solo mi trova quando seleziono
    codice:
     sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['tequila';'secco']"
    mi trova la Capiroscka e invece dovrebbe trovarmi il "Sobrero"
    invece quando seleziono
    codice:
     sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
    mi trova in modo corretto la capiroska.
    adesso in db ho solo 2 elementi cioè
    la capiroscka con ingredienti
    rum,ghiaccio,dolce
    e il sobrero
    con ingredienti
    tequila,ghiaccio,secco
    quindi se spunto sulla mia form rum e dolce e premo sul cerca nel textBox mi visualizza il nome della capiroska, ma se spunto
    tequila e secco non mi esce sobrero ma sempre capiroska!
    sai dirmi dove sbaglio.
    mi faresti un grandissimo favore.
    grazie

  6. #6
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per più performante intendo dire la modalità di composizione
    della query. Ma credo che a questo punto sia secondario.
    Fai le sostituzioni che ti suggerisco di seguito. Poi guarda
    bene il tuo codice.
    Benchè tu componga una query SQL, non la esegui mai, ma
    apri sempre solo la tabella Alcolici senza mai filtrarla,
    per cui ti ritrovi sempre il primo record.


    codice:
    ' Sostituisci 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['tequila';'secco']"
    ' Con 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti IN ('tequila','secco')"
    
    ' E 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
    
    ' Con 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti IN  ('rum','dolce'])
    Poi :
    1) Apri la connessione una sola volta
    2) Apri il recordset dentro le if e con la SQL

    Ti riporto le correzioni.

    Ancora una cosa : fai la close del recordset prima di
    conservarti i valori del record da qualche parte.
    Prima ti trovava il primo record solo per sbaglio. Ora
    dovrebbe trovarlo per calcolo. Gestisci il record prima
    di chiudere il recordset.



    codice:
            m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Documents and Settings\Mirco Web Master\Documenti\lo.mdb")
            If RadioButton3.Checked = True And RadioButton5.Checked = True Then
                Dim sql As String
                sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]"
                NomeCok.Text = ""
                NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
                m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
                ' A questo punto hai il record  
                ' ma lo chiudi subito  
                m_rsAlcolici.Close()
                m_cnConnessioneADO.Close()
            End If
            If RadioButton4.Checked = True And RadioButton6.Checked = True Then
                Dim sql As String
                sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]"
                NomeCok.Text = ""
                NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
                m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
                ' A questo punto hai il record  
                ' ma lo chiudi subito  
                m_rsAlcolici.Close()
                m_cnConnessioneADO.Close()
            End If
    Così com'è adesso dovrebbe andare, ma si può ancora
    migliorare il codice. Per prima cosa ti consiglio di
    farlo girare. Poi, se funziona, ti dedichi all'ottimizzazione

    Ciao,
    Ciao, Brainjar

  7. #7
    Brainjar ti ringrazio di cuore per tutta la disponibilità che mi stai dando.
    Il problema c'è sempre ho provato in mille modi solo non riesco a far funzionare il mio programma.
    Si collega al database ma mi visualizza sempre il primo record anche quando le opzioni che il cliente seleziona cambiano e quindi dovrebbe visualizzare un nome diverso.
    codice:
    If RadioButton3.Checked = True And RadioButton5.Checked = True Then 
    Dim sql As String 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]" 
    NomeCok.Text = "" 
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
    con questo procedimento mi visualizza nella mia casella di testo con nome"NomeCok" la Capiroska che è Corretto ma che è anche il mio primo record in db.
    però quando metto
    codice:
    If RadioButton4.Checked = True And RadioButton6.Checked = True Then 
    Dim sql As String 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]" 
    NomeCok.Text = "" 
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
    Mi visualizza sempre la "Capiroska" invece dovrebbe visualizzarmi il "sobrero" .
    io avevo pensato che il problema poteva essere
    codice:
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
    infatti volevo provare così
    codice:
    NomeCok.Text = m_rsAlcolici.Fields("Nome").Value=sql
    ma non va cmq.
    forse dovrei usare la classe
    codice:
    Command
    per eseguire la query
    ma non so se è giusto o no. non sono molto bravo ma secondo me il problema è sulla query perchè mi visualizza sempre il primo record della tabella Alcolici e non va avanti.
    Ti prego Aiutami.

  8. #8
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Hai provato con le sostituzioni che ti avevo suggerito ?

    codice:
    ' Sostituisci 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['tequila';'secco']"
    ' Con 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti IN ('tequila','secco')"
    
    ' E 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti = ['rum';'dolce']"
    
    ' Con 
    sql = "SELECT * FROM Alcolici WHERE Ingredienti IN  ('rum','dolce')"

    Ciao,
    Ciao, Brainjar

  9. #9
    si ho provato ma non va ?
    non riesco a spiegarmi il perchè?
    Ho sostituito come mi hai detto ma continua a mostrarmi sempre il primo record. non so il perchè.

  10. #10
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Scusa, ma ti ho detto cosa dovevi fare, ma il codice conteneva un errore.

    codice:
            m_cnConnessioneADO.Open("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\Documents and Settings\Mirco Web Master\Documenti\lo.mdb")
            If RadioButton3.Checked = True And RadioButton5.Checked = True Then
                Dim sql As String
                sql = "SELECT * FROM Alcolici WHERE Ingredienti = [rum;dolce]"
                NomeCok.Text = ""
                m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
                ' A questo punto hai il record  
                ' ma (prima) lo chiudevi subito  
                ' Questa istruzione, poi, la facevi sempre prima 
                ' della Open 
                NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
                m_rsAlcolici.Close()
                m_cnConnessioneADO.Close()
            End If
            If RadioButton4.Checked = True And RadioButton6.Checked = True Then
                Dim sql As String
                sql = "SELECT * FROM Alcolici WHERE Ingredienti = [tequila;secco]"
                NomeCok.Text = ""
                m_rsAlcolici.Open(sql, m_cnConnessioneADO, ADODB.CursorTypeEnum.adOpenDynamic, ADODB.LockTypeEnum.adLockOptimistic)
                ' A questo punto hai il record  
                ' ma (prima) lo chiudevi subito  
                ' Questa istruzione, poi, la facevi sempre prima 
                ' della Open 
                NomeCok.Text = m_rsAlcolici.Fields("Nome").Value
                m_rsAlcolici.Close()
                m_cnConnessioneADO.Close()
            End If

    Prova adesso.
    Ciao,
    Ciao, Brainjar

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.