Olá HadesLgc,
Você não pode usar Top5 com *. Você deve especificar um campo para ele calcular. Mas atenção, Top 5 seleciona o 5 maiores valores do campo não os 5 últimos. Tente fazer o seguinte:
Select * From Movimento Where banco ='" & txtBanco & "'" & " and agencia ='" & txtAgencia & "'" & " and conta ='" & txtConta & "'" & " or banco ='" & txtBanco & "'" & " and agencia ='" & txtAgencia & "'" & " and conta ='" & txtConta & "'" & " and compensado ='" & "NÃO'" & " Data In (Select Top 5 Data From Movimento Where banco ='" & txtBanco & "'" & " and agencia ='" & txtAgencia & "'" & " and conta ='" & txtConta & "'" & " or banco ='" & txtBanco & "'" & " and agencia ='" & txtAgencia & "'" & " and conta ='" & txtConta & "'" & " and compensado ='" & "NÃO'" & " order by data desc")) order by data desc")
Parece estranho, não é, se você reparar eu praticamente dupliquei o seu código, mas a idéia é fazer uma consulta dentro de uma colsulta. Eu quero selecionar os registros em que a data esteja dentro do conjunto das 5 últimas datas da tabela. Como seu SQL possui muitas cláusulas de seleção, eu tenho que repetí-las para ter certeza de que irá usar os mesmo critérios. Como eu não conheço o seu banco de dados, isso me parece ser mais seguro.
um abraço,
Sandro.