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

    INSERT valuta

    ragazzi mi da errore quando provo ad inserire un valore numerico in un campo di un DB sql di tipo money.
    Ho provato a vedere sulla guida ma non sono riuscito a capire come impostare la query.
    Viposto il codice della query:
    codice:
    mySQL = "INSERT INTO tab_bordi(codice, testo, prezzo)" & _
                    "VALUES('V01.05','aaaa','21')"
    sapete dirmi come devo fare?
    E soprattutto dove posso trovare dei riferimenti per sapere come comportarmi per ogni tipo di dati.
    Grazie

  2. #2
    Utente di HTML.it L'avatar di yyzyyz
    Registrato dal
    Oct 2001
    Messaggi
    1,653
    la striga sembra giusta, scusa codice e un campo testo ?
    ke errore ti restituisce ? 6 sempre troppo generico :rollo:

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    zetaweb, non dimenticare: occorre specificare sempre il linguaggio di programmazione utilizzato.

    Immagino si tratti di VB.NET...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    cacchio scusate...
    sì è VB.NET.
    Adesso vi posto tutto il codice

    codice:
    'qui importo lo spazio dei nomi.Oltre a scrivere faccio anche la lettura in seguito
    Imports System.Data.SqlClient
    Imports System.Data.SqlClient.SqlDataReader
    
    Private Sub Scrivi()
    
            myConn.Open()
    
            mySQL = "INSERT INTO tab_bordi(codice, testo, prezzo)" & _
                    "VALUES('V01.05','aaaa','21')"
            Mycmd = New SqlClient.SqlCommand(mySQL)
            Mycmd.Connection = myConn
            'questo è il numero di record inseriti
            numero = Mycmd.ExecuteNonQuery() 
    
            lbl_numero.Text = "Numero di record presenti nel DB: " & numero
    
            myConn.Close()
    
        End Sub
    L'errore me lo segna a questa riga, e mi segna questo:

    An unhandle exception of type 'system.data.sqlclient.sqlexeception' occured in system.data.dll

    Additional information system error

    Ho provato a fare l'insert senza il campo prezzo e funziona regolarmente.
    Come faccio a correggere?
    Grazie per l'aiuto e scusate la dimenticanza!

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Apparentemente, sembra che tu non abbia lasciato uno spazio nelle stringhe che definiscono la query SQL, unite dalla sequenza di caratteri che "spezza" il ritorno a capo.

    Per quanto riguarda la gestione di valori parametrici con apici e altri caratteri separatori, guarda anche questa discussione: può esserti d'aiuto.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    mmm... non pensa sia questo alka...
    Ho messo untry catch per capire che errore è, e infatti mi dice che il problema è nel campo money:

    "La conversione implicita del tipo di dati da varchar a money, nome_tabella, "colonna_prezzo" non è consentita.
    Eseguire la query tramite la funzione .CONVERT"

    Ho cercato sulla guida di visual basic ma non sono riuscito a trovare quello che miserve.
    Immagino di dover convertire il valore numerico in un formato tale che possa inserirlo nella tabella come valore money.
    Come faccio?

  7. #7
    Originariamente inviato da zetaweb
    mmm... non pensa sia questo alka...
    Io credo sia proprio quello e cioe' che per evitare problemi con i tipi di dati e' molto meglio imparare ad usare i parametri piuttosto che incollare i valori nella stringa che contiene la query sql.
    Se usi un parametro hai la possibilita' di specificare il tipo (nel caso specifico money) evitando cosi i problemi derivanti da cast convert e altro che possono essere condizionati da versioni e impostazioni dei sistemi utilizzati. Alka ti ha consigliato di vedere un post precedente dove c'e' anche un esempio di codice.
    Tra i tanti esempi che puoi trovare in giro per approfondire l'argomento
    http://freeasp.html.it/articoli/view...p?id=241&pag=2
    Saluti a tutti
    Riccardo

  8. #8
    grazie mille riccardone, come sempre riesci a risolvere i miei problemi!!!

    Quando dicevo che non credevo fosse quello il problema mi riferivo alla possibilità che ci fosse un errore di spazi di interruzione di riga nella query. Lungi da me l'idea di dubitare dei grandissimi suggerimenti di alka!!

    Ho capito perfettamente quello che mi hai suggerito grazie al link che mi hai fornito, e così ho risolto utilizzando i parametri. Ancora non li conoscevo, e ovviamente sono utilissimi!!
    Ecco il codice che ho scritto usando i parametri:

    codice:
    Private Sub Scrivi()
    
            Try
    
                myConn.Open()
    
                Mycmd = New SqlClient.SqlCommand
    
                Mycmd.Parameters.Add("@codice", SqlDbType.NVarChar).Value = "V01.05"
                Mycmd.Parameters.Add("@testo", SqlDbType.NVarChar).Value = "prova testo"
                Mycmd.Parameters.Add("@prezzo", SqlDbType.Money).Value = "16,45"
    
                mySQL = "INSERT INTO tab_bordi(codice, testo, prezzo)" & _
                        "VALUES(@codice, @testo, @prezzo )"
                Mycmd.CommandText = mySQL
    
            Mycmd.Connection = myConn
            'questo è il numero di record inseriti
            numero = Mycmd.ExecuteNonQuery()
    
            lbl_numero.Text = "Numero di record presenti nel DB: " & numero
    
                myConn.Close()
    
            Catch ex As Exception
                MessageBox.Show(ex.Message & " " & ex.StackTrace)
                myConn.Close()
            End Try
        End Sub
    Così funziona, ma non so se è corretto come modo di inserimento in DB... voi che dite?

  9. #9
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Originariamente inviato da zetaweb
    Così funziona, ma non so se è corretto come modo di inserimento in DB... voi che dite?
    Sinteticissimo...ma apparentemente corretto.

    P.S.: sei sicuro che non manchi uno spazio nella stringa SQL? o forse magari è un problema di "copia e incolla"... comunque, se dici che funziona tutto, meglio così.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  10. #10
    Originariamente inviato da zetaweb
    ...non so se è corretto come modo di inserimento in DB... voi che dite?
    io la metterei giù + o - cosi
    codice:
    Private Function Scrivi(ByVal _codice As String, ByVal _testo As String, ByVal _prezzo As Decimal) As Integer
            Dim myConn As SqlConnection
            Try
                myConn = New SqlConnection("connectionstring")
                Dim myCmd As SqlCommand = myConn.CreateCommand
                myCmd.CommandText = "INSERT INTO tab_bordi(codice, testo, prezzo) " & _
                        "VALUES(@codice, @testo, @prezzo )"
                myCmd.Parameters.Add("@codice", SqlDbType.NVarChar).Value = _codice
                myCmd.Parameters.Add("@testo", SqlDbType.NVarChar).Value = _testo
                myCmd.Parameters.Add("@prezzo", SqlDbType.Money).Value = _prezzo
                myConn.Open()
                Return myCmd.ExecuteNonQuery()
            Finally
                myConn.Close()
            End Try
        End Function
    Saluti a tutti
    Riccardo

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.