OleDbConnection myConn = new OleDbConnection ( "Provider=MSDataShape;Data Provider=SQLOLEDB;" + "Data Source=localhost;Integrated Security=SSPI;" + "Initial Catalog=northwind" ); OleDbCommand custCMD = new OleDbCommand ( "SHAPE {SELECT CustomerID, CompanyName FROM Customers} " + " APPEND ( {SELECT CustomerID, OrderID FROM Orders} AS CustomerOrders " + " RELATE CustomerID TO CustomerID ) ", myConn ); myConn.Open ( ); OleDbDataReader custReader = custCMD.ExecuteReader ( ); OleDbDataReader orderReader; while ( custReader.Read ( ) ) { Console.WriteLine ( "Orders for " + custReader.GetString ( 1 ) ); // custReader.GetString ( 1 ) = CompanyName orderReader = ( OleDbDataReader ) custReader.GetValue ( 2 ); // custReader.GetValue ( 2 ) = Orders chapter as DataReader while ( orderReader.Read ( ) ) { Console.WriteLine ( "\t" + orderReader.GetInt32 ( 1 ) ); // orderReader.GetInt32 ( 1 ) = OrderID } orderReader.Close ( ); } custReader.Close ( ); myConn.Close ( ); Dim myConn As OleDbConnection = New OleDbConnection ( "Provider=MSDataShape;Data Provider=SQLOLEDB;" & _ "Data Source=localhost;Integrated Security=SSPI;" & _ "Initial Catalog=northwind" ) Dim custCMD As OleDbCommand = New OleDbCommand ( "SHAPE {SELECT CustomerID, CompanyName FROM Customers} " & _ " APPEND ( {SELECT CustomerID, OrderID FROM Orders} AS CustomerOrders " & _ " RELATE CustomerID TO CustomerID ) ", myConn ) myConn.Open ( ) Dim custReader As OleDbDataReader = custCMD.ExecuteReader ( ) Dim orderReader As OleDbDataReader Do While custReader.Read ( ) Console.WriteLine ( "Orders for " & custReader.GetString ( 1 ) ) ' custReader.GetString ( 1 ) = CompanyName orderReader = custReader.GetValue ( 2 ) ' custReader.GetValue ( 2 ) = Orders chapter as DataReader Do While orderReader.Read ( ) Console.WriteLine ( vbTab & orderReader.GetInt32 ( 1 ) ) ' orderReader.GetInt32 ( 1 ) = OrderID Loop orderReader.Close ( ) Loop custReader.Close ( ) myConn.Close ( )