Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Tipi di dati non corrispondenti nell'espressione criterio

    Non riesco a capire dove sbaglio! :-)

    I parametri credo siano passati correttamente...

    int rowsAffected = 0;
    dbConnection.Open();
    try {
    rowsAffected = dbCommand.ExecuteNonQuery(); « QUI c'è ERRORE
    }
    finally {
    dbConnection.Close();
    }
    return rowsAffected;
    }

    Errore : Tipi di dati non corrispondenti nell'espressione criterio
    ------------------------------------------------------------------
    Di seguito il codice indagato
    ------------------------------------------------------------------
    int InsAnnuncio(int iDGrp, int iDStGrp, System.DateTime dataIni, System.DateTime dataFin, string titolo, string testo, string eMail, string tel, string prezzo) {
    string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=K:\\WebGrp\\Web60" +
    "\\Locale\\Colombo\\appannunci\\smannunci.mdb" ;
    System.Data.IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString );

    string queryString = @"INSERT INTO [Annunci] ([IDGrp], [IDStGrp], [DataIni], [DataFin], [Titolo], [Testo], [EMail], [Tel], [Prezzo], [Attivo] ) VALUES (@IDGrp, @IDStGrp, @DataIni, @DataFin, @Titolo, @Testo, @EMail, @Tel, @Prezzo, false)";
    System.Data.IDbCommand dbCommand = new System.Data.OleDb.OleDbCommand();
    dbCommand.CommandText = queryString;
    dbCommand.Connection = dbConnection;

    System.Data.IDataParameter dbParam_iDGrp = new System.Data.OleDb.OleDbParameter();
    dbParam_iDGrp.ParameterName = "@IDGrp";
    dbParam_iDGrp.Value = iDGrp;
    dbParam_iDGrp.DbType = System.Data.DbType.Int32;
    dbCommand.Parameters.Add(dbParam_iDGrp);
    System.Data.IDataParameter dbParam_iDStGrp = new System.Data.OleDb.OleDbParameter();
    dbParam_iDStGrp.ParameterName = "@IDStGrp";
    dbParam_iDStGrp.Value = iDStGrp;
    dbParam_iDStGrp.DbType = System.Data.DbType.Int32;
    dbCommand.Parameters.Add(dbParam_iDStGrp);
    System.Data.IDataParameter dbParam_dataIni = new System.Data.OleDb.OleDbParameter();
    dbParam_dataIni.ParameterName = "@DataIni";
    dbParam_dataIni.Value = dataIni;
    dbParam_dataIni.DbType = System.Data.DbType.DateTime;
    dbCommand.Parameters.Add(dbParam_dataIni);
    System.Data.IDataParameter dbParam_dataFin = new System.Data.OleDb.OleDbParameter();
    dbParam_dataFin.ParameterName = "@DataFin";
    dbParam_dataFin.Value = dataFin;
    dbParam_dataFin.DbType = System.Data.DbType.DateTime;
    dbCommand.Parameters.Add(dbParam_dataFin);
    System.Data.IDataParameter dbParam_titolo = new System.Data.OleDb.OleDbParameter();
    dbParam_titolo.ParameterName = "@Titolo";
    dbParam_titolo.Value = titolo;
    dbParam_titolo.DbType = System.Data.DbType.String;
    dbCommand.Parameters.Add(dbParam_titolo);
    System.Data.IDataParameter dbParam_testo = new System.Data.OleDb.OleDbParameter();
    dbParam_testo.ParameterName = "@Testo";
    dbParam_testo.Value = testo;
    dbParam_testo.DbType = System.Data.DbType.String;
    dbCommand.Parameters.Add(dbParam_testo);
    System.Data.IDataParameter dbParam_eMail = new System.Data.OleDb.OleDbParameter();
    dbParam_eMail.ParameterName = "@EMail";
    dbParam_eMail.Value = eMail;
    dbParam_eMail.DbType = System.Data.DbType.String;
    dbCommand.Parameters.Add(dbParam_eMail);
    System.Data.IDataParameter dbParam_tel = new System.Data.OleDb.OleDbParameter();
    dbParam_tel.ParameterName = "@Tel";
    dbParam_tel.Value = tel;
    dbParam_tel.DbType = System.Data.DbType.String;
    dbCommand.Parameters.Add(dbParam_tel);
    System.Data.IDataParameter dbParam_prezzo = new System.Data.OleDb.OleDbParameter();
    dbParam_prezzo.ParameterName = "@Prezzo";
    dbParam_prezzo.Value = prezzo;
    dbParam_prezzo.DbType = System.Data.DbType.String;
    dbCommand.Parameters.Add(dbParam_prezzo);

    int rowsAffected = 0;
    dbConnection.Open();
    try {
    rowsAffected = dbCommand.ExecuteNonQuery();
    }
    finally {
    dbConnection.Close();
    }

    return rowsAffected;
    }



    void btn_ins_Click(object sender, EventArgs e) {

    InsAnnuncio(Convert.ToInt32 ddl_Rub.SelectedItem.Value),Convert.ToInt32(ddl_St Rub.SelectedItem.Value),System.DateTime.Now,System .DateTime.Now,tb_titolo.Text,tb_annuncio.Text,tb_e mail.Text,tb_telefono.Text,tb_prezzo.Text);

    }

    ---------------------------------------------------------------------
    Aiuto!

    ciao e grazie

  2. #2

    Re: Tipi di dati non corrispondenti nell'espressione criterio

    Originariamente inviato da ciucciuzzo
    Non riesco a capire dove sbaglio! :-)
    dovresti istanziare gli oggetti usando la classe/tipo specifica del dataprovider utilizzato es.
    codice:
    System.Data.OleDb.OleDbCommand dbCommand = new System.Data.OleDb.OleDbCommand(); 
    System.Data.OleDb.OleDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);
    i parametri per l'oledb dataprovider sono contrassegnati dal segno ? . Dopo aver assegnato il giusto commandtext ad un command, puoi direttamente aggiungere nella sua collection di parameters i singoli parametri senza dover istanziare e valorizzare oggetti separati (con un certo risparmio di righe di codice e quindi anche di possibilita' di errore). Ogni dataprovider (oledb compreso) possiede il suo tipo di dati specifico da utilizzare quando si impostano i parametri.
    Es.
    codice:
    dbCommand.Parameters.Add("Titolo", System.Data.OleDb.OleDbType.VarChar).Value = "";
    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.