Textbox

di il
10 risposte

Textbox

So ke molti di voi si erano già preoccupati, perché apro delle discussioni con la media di una al giorno e ormai è pomeriggio inoltrato.
Io sto imparando (almeno questa era la mia intenzione iniziale) a programmare con un manuale (apogeo, standard medio per il programmatore medio), pieno di esempietti spiegazioni ecc.
Ora, nell'esempio sul libro c'era da prendere dei dati da una tabella e visualizzarli in una combobox. Io devo fare la stessa cosa, solo ke invece d una combo uso una textbox quindi sono andata u
n po a tentoni.

Ecco il codice:

Dim mySql2 As String
Dim myConn As SqlClient.SqlConnection
Dim myCmd As SqlClient.SqlCommand
Dim myStr As String
Dim myDr As SqlClient.SqlDataReader
Dim tab As String

mySql2 = "SELECT descrizione FROM tabmatclienti WHERE codmateriale = ' " & cmbCodice.Text & " '"
myCmd = New SqlClient.SqlCommand

Try
myStr = buildCS()
myConn = New SqlClient.SqlConnection
myConn.ConnectionString = myStr
myConn.Open()
myCmd.Connection = myConn
myCmd.CommandType = CommandType.Text
myCmd.CommandText = mySql2
myDr = myCmd.ExecuteReader
txtDescrizione.Text = myDr.Read.ToString

Catch ex As Exception
myConn.Close()
MessageBox.Show(ex.Message, "Caricamento descrizione materiale")
End Try


Se provo ad esegurlo, quello ke appare nella txt è "False".
So ke la connessione funziona e sono convinta che anche la query funzioni. Secondo me l'errore è nelle ultime righe prima del Catch.
Voi vedete l'errore? (sembra uno dei quiz della settimana enigmistica, "Caccia all'errore")

10 Risposte

  • Re: Textbox

    Come prima cosa se ti può consolare ti dico che pure io ho "imparato" il poco che so su di un libro.
    Per il tuo problema è semplice, tu usi il metodo Read() del dataReader che server per scorrere i dati restituiti avanti di una posizione, però il problema è che questo metodo restituisce true/false in base se vengono trovati record, quando ritorna false vuole dire che siamo alla fine, se richiamato la prima volta è subito false significa che non ne sono state trovate.
    Per esclusione, fino a quando ritorna true ci sono dati nel dataReader.
    Ex.:
    Do While(myDr.Read)
    ' cicla fino a quando ci sono record.
    Loop
    Ora veniamo al tuo problemino, spero di averti chiarito perché ti ritorna false. La sintassi corretta è:
    '...
    myDr.Read
    txtDescrizione.Text = myDr(0).ToString
    '...
    questo perché Vb.Net istanzia una collezione di n elementi quanti sono i campi all'interno dell'oggetto datareader.
    Se non sono stato molto chiaro oppure hai ancora problemi contattami pure senza problemi.
    Saluti
    Marko
  • Re: Textbox

    Il problema dei libri (almeno quelli ke ho trovato io) è ke mi scrivono 10 capitoli su classi, ereditarietà ecc e un capitolo sulle form (creala, trascina controlli...fine), così gli elementi spicci d cui ho bisogno sono spiegati alla cavolo. Anzi, se hai da consigliare un manuale buono, ben venga.
    Per quanto riguarda la tua spiegazione, ottima. Avevo letto nell'help che .read prendeva l'elenco dei dati restituiti dal DataReader, ma nn avevo pensato a mettere un indice (0)!!! Bello, bello!!!!!!!!
    Vado a provare.
  • Re: Textbox

    Beh, io ne ho acquistati di diversi di libri (sia di Visual Basic .Net che di Visual C# .Net) sia a livello base che avanzato. Io cmq. le prime volte mi sono affidato molto anche ai codici sorgenti trovati su internet e all'msdn.
    Se vuoi prova, a dare un occhio a quello di Francesco Balena intitolato Progammare Microsoft Visual Basic .Net.
    Fammi sapere se ci sei riuscito a fare quel lavoro con la textbox e la datareader.
    Saluti
    Marko
  • Re: Textbox

    Maaaaaaaaial!!!!!!!!!!! 75.00€? C sarà il cd d'oro dentro!!!!!
    Adesso sto scherzando perkè so benissimo ke i libri informatici li fanno pagare un mucchio, ma 150.000 delle vecchie lire per un libro..... Però se è il migliore, tanto d cappello.
    Cmq hai fatto bene a segnalarmi quell'autore, ho trovato un libro più economico ke è una parte di quello ke hai letto tu, precisamente la parte su windowsform. C sto facendo un pensiero.

    Tornando a noi, ho provato a fare un debug riga per riga (con l'f11) e ho scoperto ke se metto un punto di interruzione proprio sulla riga mySql2 = "SELECT...." e premo f11, il debugger va avanti. Questo vuol dire ke salta la riga, qndi è proprio la query ke nn funziona.

    Magari di vb nn so na mazza, ma di sql so! E la query è corretta, anke perkè è una select semplice. Ergo il problema sta nel fatto ke nn legge il dato dalla combo.....
    Ho provato sia con cmb.selecteditem, che con cmb.selectedtext ke con cmb.text. Niente!
  • Re: Textbox

    Dai un occhi alla riga dell'sql. Se è identica a quella che hai scritto qui nel forum:
    mySql2 = "SELECT descrizione FROM tabmatclienti WHERE codmateriale = ' " & cmbCodice.Text & " '"
    dopo il singolo apice hai lasciato uno spazio vuoto. Scusa se insisto, ma io credo invece che l'errore sia proprio nella query.
    mySql2 = "SELECT descrizione FROM tabmatclienti WHERE codmateriale = '" & cmbCodice.Text & "'"
  • Re: Textbox

    ...e comunque prova ad usare la SelectedItem.
    saluti
  • Re: Textbox

    <b>FUNZIONA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!</b>

    Tu hai cercato d smontare le mie sicurezze di una vita d studi dicendo che per te era proprio la query, invece............
    ERA LO SPAZIO TRA GLI APICI!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    Tolto lo spazio, funzionante al primo colpo!!!!!!!!!!!!!!
    Ora mi merito proprio una pausa paglia, e anke tu, dopo l'orkite ke devo averti fatto venire.

    Per voi cervelloni sarà una cavolata, ma nn hai idea d quanto sono felice!!!!!!!!!!!!!
  • Re: Textbox

    Beh, scusa se mi permetto ma l'errore era nella query, più precisamente nella condizione Where. Io non ho mai scritto che era errata la sintassi della query.
    Inoltre io non faccio parte dei cervelloni!!!
    Saluti
    Marko
  • Re: Textbox


    Comunque mille volte grazie. Se nn eri tu a farmelo notare, tra un mese ero ancora qui!!!!!!!!!
  • Re: Textbox

    Sono certo che ti saresti accorta (ti ho sempre dato del lui, ma dalla mail deduco che sei una ragazza)
    Saluti
Devi accedere o registrarti per scrivere nel forum
10 risposte