Problemi con l'inserimento di una data in una query

di il
11 risposte

Problemi con l'inserimento di una data in una query

Come da oggetto non riesco ad inserire una data in una query parametrizata..

sSQL = "Insert into Periodi (Periodo, IdPeriodo, Scadenza, Inizio)values ('" + att.ElementAt(0) + "','" + att.ElementAt(1) + "'," + CDate(att.ElementAt(2)) + "," + CDate(att.ElementAt(3)) + ");"
è corretta, ma la data che mi inserisce nel database è 1900-01-01 e non quella che io gli passo.. come mai???

11 Risposte

  • Re: Problemi con l'inserimento di una data in una query

    Ciao Alessio

    Per inserire una data nel database devi fare la conversione della data stessa, che si esegue in questo modo
    sSQL = "Insert into Periodi (Periodo, IdPeriodo, Scadenza, Inizio)values ('"att.ElementAt(0) + "','" + att.ElementAt(1) + "'," + CDate(att.ElementAt(2)) + ",convert(datetime,'" + CDate(att.ElementAt(3)).year + "-" + CDate(att.ElementAt(3)).Month + "-" + CDate(att.ElementAt(3)).Day + "',102));"
  • Re: Problemi con l'inserimento di una data in una query

    Avevo già provato una cosa simile, ma nulla.. L'ho provato come dici tu, ma niente.. Non capisco come mai una cosa così banale deve dare problemi..
  • Re: Problemi con l'inserimento di una data in una query

    alessio340 ha scritto:


    avevo già provato una cosa simile, ma nulla.. L'ho provato come dici tu, ma niente.. Non capisco come mai una cosa così banale deve dare problemi..
    Hai provato ad andare in debug e controllare la stringa se contiene la data esatta?
  • Re: Problemi con l'inserimento di una data in una query

    Si, nella stringa ce la data corretta..
  • Re: Problemi con l'inserimento di una data in una query

    Prova in questo modo
    
    SqlParameter
       data;
    
    sSQL = "Insert into Periodi (Periodo, IdPeriodo, Scadenza, Inizio)values ('"att.ElementAt(0) + "','" + att.ElementAt(1) + "'," + CDate(att.ElementAt(2)) + "@data);"
    data = new SqlParameter("@data", sqldbtype.datetime);
    data.value=att.ElementAt(3)) ;
    comando.parameter=data;
    
    la data in sql è sempre stata carognetta da gestire pultroppo

  • Re: Problemi con l'inserimento di una data in una query

    Mi da un eccezione per il casting..
  • Re: Problemi con l'inserimento di una data in una query

    alessio340 ha scritto:


    mi da un eccezione per il casting..
    Postami il codice così vedo quale potrebbe essere il problema
  • Re: Problemi con l'inserimento di una data in una query

    Mi visualizza questa eccezione:
    eccezione di tipo System.AritmentException in System.data.sqlserverce.dll
  • Re: Problemi con l'inserimento di una data in una query

    Il campo nel db di che tipo è? postami il codice che utilizzi per creare la stringa sql, con relativi parametri
  • Re: Problemi con l'inserimento di una data in una query

    Ecco una parte di codice:
    'in questo frammento di codice creo per es. una sola tabella periodi
    
    Dim SQL as String
    Dim strDb as String
    Dim strConnection As String
    Dim engine As System.Data.SqlServerCe.SqlCeEngine
    Dim conn As System.Data.SqlServerCe.SqlCeConnection
    Dim comando As System.Data.SqlServerCe.SqlCeCommand
    
    strDb = PathRoot + "\DB" + TextBox1.Text + "\db.sdf"
    strConnection = "Data Source=" + strDb
    ...
    SQL = "CREATE TABLE Periodi (Periodo nvarchar(20), IdPeriodo nvarchar(5), Scadenza datetime, Inizio datetime, primary key(IdPeriodo));"
    ...
    'Creo il database se non esiste il file in cui ce il percorso del database da aprire
    If (System.IO.File.Exists(strDb) = False) Then
                engine = New System.Data.SqlServerCe.SqlCeEngine(strConnection)
                engine.CreateDatabase()
                conn = New System.Data.SqlServerCe.SqlCeConnection("Data source=" + strDb)
                conn.Open()
                comando = New System.Data.SqlServerCe.SqlCeCommand(SQL, conn)
                comando.ExecuteNonQuery()
                conn.Close()
    Else
        'errore db già presente da segnalare
        MsgBox("ERRORE: database già esistente")
    End If
    
    sSQL as String
    data11 = New System.Data.SqlServerCe.SqlCeParameter("@data11", Data.SqlDbType.DateTime)
    data22 = New System.Data.SqlServerCe.SqlCeParameter("@data22", Data.SqlDbType.DateTime)
    data11.Value = att.ElementAt(2)
    data22.Value = att.ElementAt(3)
    ...
    sSQL = "Insert into Periodi (Periodo, IdPeriodo, Scadenza, Inizio)values ('" + att.ElementAt(0) + "','" + att.ElementAt(1) + "',@data1,@data2);"
    comando = New System.Data.SqlServerCe.SqlCeCommand(sSQL, conn)
    comando.Parameters.Add(data11)
    comando.Parameters.Add(data22)
    comando.ExecuteNonQuery()
    ...
    Ti ringrazio per la tua disponibilità..
  • Re: Problemi con l'inserimento di una data in una query

    
    'in questo frammento di codice creo per es. una sola tabella periodi
    
    Dim SQL as String
    Dim strDb as String
    Dim strConnection As String
    Dim engine As System.Data.SqlServerCe.SqlCeEngine
    Dim conn As System.Data.SqlServerCe.SqlCeConnection
    Dim comando As System.Data.SqlServerCe.SqlCeCommand
    
    strDb = PathRoot + "\DB" + TextBox1.Text + "\db.sdf"
    strConnection = "Data Source=" + strDb
    ...
    SQL = "CREATE TABLE Periodi (Periodo nvarchar(20), IdPeriodo nvarchar(5), Scadenza datetime, Inizio datetime, primary key(IdPeriodo));"
    ...
    'Creo il database se non esiste il file in cui ce il percorso del database da aprire
    If (System.IO.File.Exists(strDb) = False) Then
                engine = New System.Data.SqlServerCe.SqlCeEngine(strConnection)
                engine.CreateDatabase()
                conn = New System.Data.SqlServerCe.SqlCeConnection("Data source=" + strDb)
                conn.Open()
                comando = New System.Data.SqlServerCe.SqlCeCommand(SQL, conn)
                comando.ExecuteNonQuery()
                conn.Close()
    Else
        'errore db già presente da segnalare
        MsgBox("ERRORE: database già esistente")
    End If
    
    sSQL as String
    data11 = New System.Data.SqlServerCe.SqlCeParameter("@data11", Data.SqlDbType.DateTime) --> Occhio al nome della variabile
    data22 = New System.Data.SqlServerCe.SqlCeParameter("@data22", Data.SqlDbType.DateTime) --> Occhio al nome della variabile
    data11.Value = att.ElementAt(2)
    data22.Value = att.ElementAt(3)
    ...
    sSQL = "Insert into Periodi (Periodo, IdPeriodo, Scadenza, Inizio)values ('" + att.ElementAt(0) + "','" + att.ElementAt(1) + "',@data1,@data2);"
    comando = New System.Data.SqlServerCe.SqlCeCommand(sSQL, conn)
    comando.Parameters.Add(data11)
    comando.Parameters.Add(data22)
    comando.ExecuteNonQuery()
    ...
    
    occhio ai nomi delle variabili
Devi accedere o registrarti per scrivere nel forum
11 risposte