Il problema è che stavo utilizzando un dataread diverso, o almeno credo

Ho risolto creando una nuova conn essione al database, però adesos ho 2 connesisoni aperte al database, non è che mi piaccia molto....

codice:
                oleCmd = new SqlCommand(query, conn);

                reader = oleCmd.ExecuteReader();

                using (SqlConnection conn2 = new SqlConnection(MainForm.Database()))
                {
                    conn2.Open(); 
                    while (reader.Read())
                    {
                        if (System.Convert.ToInt32(reader[0]) > 0)
                        {
                            //Prendiamo la quantità venduta, per sottrarla a quella che abbiamo in magazzino
                            string queryVendita = "SELECT sum(prodotti_venduti.quantita) AS venduti FROM prodotti_venduti WHERE codice = '" + reader[2].ToString() + "' AND prodotti_venduti.conta='1' GROUP BY prodotti_venduti.codice";

                            SqlCommand oleCmdQuant = new SqlCommand(queryVendita, conn2);

                            long venduti = System.Convert.ToInt64(oleCmdQuant.ExecuteScalar());

                            DataRow dr = ds.Tables["Merce"].NewRow();
                            dr["Codice"] = reader["artCod"].ToString();
                            dr["BarCodice"] = reader["artBar"].ToString();
                            dr["Descrizione"] = reader["artDesc"].ToString();
                            dr["Quantita"] = (System.Convert.ToInt64(reader[0]) - venduti).ToString();
                            if ((System.Convert.ToInt64(reader[0]) - venduti) > 0)
                                ds.Tables["Merce"].Rows.Add(dr);
                        }
                    }
                    conn2.Close();
                }
                conn.Close();
Questo è il codice che sto utilizzando adesso...