try { string istrSql = ""; istrSql += "SELECT * "; istrSql += "FROM (Prodotti INNER JOIN Fornitori ON Prodotti.IDFornitore = Fornitori.IDFornitore) INNER JOIN Categorie ON Prodotti.IDCategoria = Categorie.IDCategoria"; OleDbConnection oc = new OleDbConnection(datiConnessione); oc.Open(); //apre la connessione OleDbCommand comando = new OleDbCommand(istrSql, oc); OleDbDataReader dr = comando.ExecuteReader(); //esegue la query dataGridView1.ColumnCount = dr.FieldCount; for (int i = 0; i < dr.FieldCount; i++) { dataGridView1.Columns[i].Name = dr.GetName(i); } while (dr.Read()) { listBox1.Items.Add(dr[0].ToString()); listBox2.Items.Add(dr["NomeProdotto"].ToString()); // marca listBox3.Items.Add(dr[2].ToString()); listBox4.Items.Add(dr["Sospeso"].ToString()); int a0 = int.Parse(dr["IDProdotto"].ToString()); string a1 = dr[1].ToString(); // NomeProdotto int a2 = int.Parse(dr["Prodotti.IDFornitore"].ToString()); a2 = dr.GetInt32(2); int a3 = int.Parse(dr[3].ToString()); // IDCategoria string a4 = dr.GetString(4); decimal a5 = decimal.Parse(dr["PrezzoUnitario"].ToString()); a5 = dr.GetDecimal(5); dataGridView1.Rows.Add(a0, a1, a2, a3, a4, a5); } dr.Close(); //chiude il datareader dr = null; oc.Close(); //chiude la connection oc = null; } catch (Exception Ex) { label1.Text = ("Errore: " + Ex.Message); }