Non riesco a capire perchè queso codice genera una errore. Qualcuno sa dirmi se è un errore di sintassi?

I campi li ottengo in questo modo:

localita=TRIM(Request("localita")) (nel DB localita è numerico)
dal=TRIM(Request("dal"))
al=TRIM(Request("al"))

...e la query maledetta è questa

if localita <> "TUTTE" then
if dal <> "" and al <> "" then
sql = sql + " where localita = " & cint(localita) & " and data between #" & Dal & "# and #" & Al & "#"
end if
if dal = "" and al = "" then
sql = sql + " where localita = " & cint(localita)
end if
if dal <> "" and al = "" then
sql = sql + " where localita = " & cint(localita) & " and data > #" & Dal & "#"
end if
end if

L'errore è il seguente

Tipi di dati non corrispondenti nell'espressione criterio.


Grazie...