Try cn.Open() Dim cmd As New OleDbCommand("SELECT * FROM STOCKS ORDER BY STOCKGROUP,STOCKCODE", cn) Dim dr As OleDbDataReader = cmd.ExecuteReader() Dim mStockGroup as string, mStockCode as string, mStockName as string If dr.HasRows Then Do While dr.Read mStockGroup = dr("StockGroup") Do While dr.Read and dr("StockGroup") = mStockGroup ' I am not sure for this part ! mStockCode = dr("StockCode") mStockName = dr("StockName") messagebox.show(mStockCode & " " & mStockName) Loop Loop End if dr.Close() Catch ex As OleDb.OleDbException MessageBox.show(ex.Message) Catch ex As Exception MessageBox.show(ex.Message) Finally cn.Close() End Try