I'm using the standard ADO stuff on the ADO tab (TADOQuery, etc.). I can't use your first suggestion because it blows up immediately without letting me do any code. For example, nothing but an error would be displayed here in a web action:

[pascal]myquery.Open;
try
Response.Content := 'Buh?'; // doesn't get here!
...[/pascal]

The executing-of-sql-statement is blowing up things . I'm not sure why, though, since it behaves correctly under Oracle. Maybe it's the connection string, though I doubt it. It works fine if records exist so it's not a SQL problem - I think that SQL Server is having "different" ideas about where the end-of-file marker should be, and/or doesn't deal with recordcounts in an expected fashion, and/or is being dumb.

I can work around it though, so I'll just do that - it only means a little more care when I write my loops over the records...