120 messaggi dal 28 luglio 2010
Buongiorno a tutti, ho un problema con il seguente codice:

    static System.Configuration.ConnectionStringSettings conn = ConfigurationManager.ConnectionStrings["MyDataBase"];
    public SqlCeConnection cn = new SqlCeConnection(conn.ConnectionString);

    public string dataChoice = DateTime.Now.ToShortDateString();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Page.IsPostBack == false)
        {
            DateTime dataCh = DateTime.Parse(dataChoice);
            //sql_ordine = "SELECT * FROM [ORDINI] ORDER BY ID DESC ";
            sql_ordine = "SELECT * FROM [ORDINI] WHERE (DATA_RICHIESTA>='" + dataCh + "') ORDER BY Id DESC ";

            populateGridViewOrdini();
            PanelCarrello.Visible = false;
            populateDropdate();
        }
    }

    public void populateGridViewOrdini()
    {
        //sql = "SELECT * FROM [PRODOTTI] WHERE ((Categoria='" + "ACQUE BIBITE" + "') AND (Attivo='" + true + "')) ORDER BY OrderID ";
        DataTable table = new DataTable();
        using (SqlCeCommand cmd = new SqlCeCommand(sql_ordine, cn))
        {
            if (cmd.Connection.State != ConnectionState.Open)
            {
                cmd.Connection.Open();
            }

            // get the adapter object and attach the command object to it 
            using (SqlCeDataAdapter ad = new SqlCeDataAdapter(cmd))
            {
                // fire Fill method to fetch the data and fill into DataTable                    
                ad.Fill(table);
            }
            cmd.Connection.Close();
        }
        // specify the data source for the GridView 
        GridViewOrdini.DataSource = table;
        // bind the data now  
        GridViewOrdini.DataBind();
    }


Mi ritorna (da debug in ad.Fill(table) );

Si è verificata l'eccezione System.Data.SqlServerCe.SqlCeException
HResult=0x80004005
Messaggio=Tipo di dati non valido per l'operazione booleana. [ Data type (if known) = datetime,Data type (if known) = nvarchar ]
Origine=SQL Server Compact ADO.NET Data Provider


La colonna DATA_RICHIESTA è del tipo datetime.
In poche parole non esegue il confronto delle date nella query.
Il confronto funziona con tutte le colonne del database ad esclusione delle colonne datetime.

Qualcuno ha una soluzione?

Grazie a tutti!

Giorgio
Modificato da orsattigiorgio il 25 giugno 2020 13:29 -
98 messaggi dal 13 febbraio 2016
Ciao Giorgio,
è bene sempre utilizzare i parametri, nel tuo caso di tipo SqlCeParameter.
Aggiungilo nel tuo using

 using (SqlCeCommand cmd = new SqlCeCommand(sql_ordine, cn))
        {
            cmd.Parameters.Add("@par", dataCh);    
            .....

        }


Ovviamente devi aggiornare anche la tua select con l'uso del parametro.
Ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.