it's because you are using the ID from the recordset as the key column value
that recordset will always be at record 1 when the download is executed.
you don't include a lot of detail on how the page is set up, but i'm assuming you have a repeat region on the page? in the repeat region you have a form that sends the download file name using a hidden form element? if that is correct, you need another hidden form element that passes the ID and use that hidden form element as the key column value