TQuery.Open doesn't use prepared statement

I have Delphi 2.0 Developer and I wrote application using local interbase server - works just fine. I tested  it with MS SQL 6.0 using sqlsrv32 ODBC driver - does not work. I found out that the problem was:

Execute once (for example Form OnCreate event):
  Query1.Prepare;

Execute many times:
procedure RetrieveSomething(id :longint)
  begin
    Query1.Close;
    Query1.ParamByName('param_name').AsInteger = id;
    Query1.Open;
  end;

Query1.Close - closes cursor on SQL Server but does not frees statement - OK
Query1.Open - Create new statement - does not use opened one - WHY?

after 20 calls of RetrieveSomething() proc I have 20 opened statements on my SQL Server,
after 28 calls my application crashes.
If I do not prepare SQL it works fine because Delphi destroys statement every time you close query.
I created very simple example and tested it with MS SQL 6.0 and Sybase 10 (ODBC driver) - the same result.
In Delphi help you  can find:

  Generally, an application should call Prepare once--for example, in the OnCreate  
event of the form--then set parameters using the Params property, and finally  
call Open or ExecSQL to execute the query. Each time the query is to be  
executed with different parameter values, an application must call Close, set the  
parameter values, and then execute the query with Open or ExecSQL.

VERY GOOD IDEA BUT DOES NOT WORK WHY?

Can anybody explain  why it does not work ?

Thank you very much

Alex Roytman
royt...@smart.net
Baltimore, MD