none
Confrontare Campo Numerico DB con valore Textbox RRS feed

  • Domanda

  • Salve raga, un piccolo problema. Vi posto il codice:

    OleDbCommand cmd1 = new OleDbCommand("UPDATE PREVENTIVI SET TRASM_TERMICA =@trasm_termica, TRASM_VETRO = @trasm_vetro, ACUSTICA_INF = @acustica_inf WHERE CODPREV ='" + numprev.Text +"' AND " +
                    "LARGHEZZA ='" + Int32.Parse (larghezzael.Text) + "' AND ALTEZZA ='" + Int32.Parse(altezzael.Text) +"' AND NUMANTE ='" + anteel.Text + "' AND APERTURA = '" + aperturael.Text + "' ; ", connection);

    L errore che mi viene riportato è questo: System.Data.OleDb.OleDbException: 'Tipi di dati non corrispondenti nell'espressione criterio.'

    L errore secondo me è il confronto in larghezza ed altezza. Sul DB i campi larghezza ed altezza sono "Numero " con "Precisione Doppia"

    venerdì 7 giugno 2019 13:13

Risposte

  • SELECT Count(IDVat) AS Nr FROM TBVat WHERE IDVat = @IDVat
    

    Per questo SQL

    OleDbCommand cmdIn = new OleDbCommand();
    cmdIn.Connection = cnIn;
    cmdIn.CommandText = "SELECT..."; //La query scritta prima
    cmd.Parameters.AddWithValue("@IDVat", idVat);
    OleDbDataReader inReader = cmdIn.ExecuteReader();

    Questo c# (ovviamente cnIn è una OleDbConnection opportunamente instanziata e aperta prima

    idVat è una variabile locale contenente il valore del parametro per la query.


    Sabrina C. - http://www.dotnetwork.it

    lunedì 17 giugno 2019 16:40

Tutte le risposte

  • Ad occhio se fai

     + Int32.Parse(altezzael.Text) +

    hai trasformato un testo in un numero che poi metti in una stringa se gli Apici (') che inserisci non mi ingannano pertanto è chiaro che se Altezza si aspetta un intero e lo compari con '12345' che è una stringa il sistema ti faccia una pernacchia, quindi togli gli apici e riprova.

    Come consiglio spassionato, puoi usare i parametri anche con OleDb e questo di solito aiuta molto a non farsi del male con le conversioni.

    saluti


    Sabrina C. - http://www.dotnetwork.it

    venerdì 7 giugno 2019 16:27
  • Perfetto Cris.. con parametri oledb che intendi?
    lunedì 17 giugno 2019 10:44
  • SELECT Count(IDVat) AS Nr FROM TBVat WHERE IDVat = @IDVat
    

    Per questo SQL

    OleDbCommand cmdIn = new OleDbCommand();
    cmdIn.Connection = cnIn;
    cmdIn.CommandText = "SELECT..."; //La query scritta prima
    cmd.Parameters.AddWithValue("@IDVat", idVat);
    OleDbDataReader inReader = cmdIn.ExecuteReader();

    Questo c# (ovviamente cnIn è una OleDbConnection opportunamente instanziata e aperta prima

    idVat è una variabile locale contenente il valore del parametro per la query.


    Sabrina C. - http://www.dotnetwork.it

    lunedì 17 giugno 2019 16:40