Ho un problema che ricorre

semplice menu con sottomenu

<%
Dim idmenu
set Menu = Server.CreateObject("ADODB.Recordset")
sql = "select * from Menu "
Menu.ActiveConnection = cn
Menu.Open sql, cn
%>
<table width="100%" border="0" cellspacing="1" cellpadding="1">
<%
Do while not Menu.EOF
idmenu = Menu("IDMenu")
%>
<tr>
<td>&idm=<%=(idmenu)%>" class="contenuto"><%=Menu("voce")%>
<%
Dim idm
idm = request.QueryString("idm")
set Sottomenu = Server.CreateObject("ADODB.Recordset")
sql = "select * from Sottomenu where IDMenu =" & idm
Sottomenu.ActiveConnection = cn
Sottomenu.Open sql, cn
%>
<%if not Sottomenu.EOF then%>


<%Do while not Sottomenu.EOF%>
<%=Sottomenu("voce")%>

<%
Sottomenu.movenext
loop
Sottomenu.close()
Set Sottomenu = nothing
%>
<%end if%>
</td>
</tr>
<tr>
<td background="./images/linea_menu.gif">[img]./images/pixel.gif[/img]</td>
</tr>
<%
Menu.movenext
loop
%>
</table>
<%
Menu.close()
Set Menu = nothing
%>

così facendo quando trova 1 sottomenu lo stampa sotto tutte le voci....come posso farlo stampare solo sotto la voce giusta?