Dunque ho un campo Data nel Database ....poi ho 2 date (fisse), data1 e data2 ...vorrei pescare solo i record che sono < di data1 e > di data2 ...come si fa la select :rollo:
il Database è access, le date sono gg/mm/anno
Dunque ho un campo Data nel Database ....poi ho 2 date (fisse), data1 e data2 ...vorrei pescare solo i record che sono < di data1 e > di data2 ...come si fa la select :rollo:
il Database è access, le date sono gg/mm/anno
UNA COSA TIPO:
select * from Report WHERE start <= #" & data1 & "# and end>= #" & data2 & "#" ...la provo ma non è giusta![]()
SELECT * FROM report WHERE Datevalue(start) <= Datevalue('" & data1 & "') AND Datevalue(end)>= Datevalue('" & data2 & "')"
<%
Dim Mese, inizio, fine
Mese = request.querystring("mese")
set Mesi = Server.CreateObject("ADODB.Recordset")
sql = "select * from Mesi where identifica_mese =" &Mesi
Mesi.ActiveConnection = cn
Mesi.Open sql, cn
inizio = Mesi("inizio")
fine = Mesi("fine")
Mesi.close()
Set Mesi = nothing
%>
<%
set Report = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM report WHERE Datevalue(start) <= Datevalue('" & inizio & "') AND Datevalue(end)>= Datevalue('" & fine & "')"
Report.ActiveConnection = cn
Report.Open sql, cn
%>
Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 2.
![]()
![]()
![]()
cosa c...o manca o meglio...zzo sbaglio?
Nella tabella Mesi ho "INIZIO" e "FINE" che in un campo (data in cifre di access) DICONO QUANDO IL MESE INIZIA E QUANDO FINISCE,
Nella tabella report ho il campo "DATA" di quando il report viene inserito, (sempre data in cifre) ...VORREI PESCARE TUTTI I RECORD CHE sono contenuti nel mese selezionato
questo funziona se tu mi assicuri che START e END sono campi tipo DATE (quindi data)...codice:<% Dim Mese, inizio, fine Mese = request.querystring("mese") set Mesi = Server.CreateObject("ADODB.Recordset") sql = "select * from Mesi where identifica_mese =" &Mesi Mesi.ActiveConnection = cn Mesi.Open sql, cn inizio = CStr(Mesi("inizio")) fine = CStr(Mesi("fine")) Mesi.close() Set Mesi = nothing %> <% set Report = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM report WHERE start <= Datevalue('" & inizio & "') AND end >= Datevalue('" & fine & "')" Report.ActiveConnection = cn Report.Open sql, cn %>
se ancora ci sono dei problemi...
metti prima di REPORT.OPEN queste due linee
response.write SQL
response.end
e vediamo cosa esce di output
eh eh eh...![]()
mi sa che hai ragione
mannaggina a voi che non date mai linea dell'errore...
![]()
Io start e end non li ho come campi del db ma ho
Tabella Mesi:
inizio (campo data)
fine (campo data)
Tabella Report
Data (campo data)
VORREI FARE UN CONFRONTO ovvero dire da dove inizia il mese e dove finisce con i campi "inizio" e "fine" per poi pescare nella tabella Report solo i record dove il campo "data" rientra tra l'inizio e la fine.
ora la pagina è:
<%
Dim M, inizio, fine, mese
M = request.querystring("mese")
set Mesi = Server.CreateObject("ADODB.Recordset")
sql = "select * from Mesi where identifica_mese =" &M
Mesi.ActiveConnection = cn
Mesi.Open sql, cn
inizio = CStr(Mesi("inizio"))
fine = CStr(Mesi("fine"))
Mesi.close()
Set Mesi = nothing
%>
<%
set Report = Server.CreateObject("ADODB.Recordset")
sql = "SELECT * FROM Report WHERE Data <= Datevalue('" & inizio & "') Data end >= Datevalue('" & fine & "')"
Report.ActiveConnection = cn
Report.Open sql, cn
%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50%" align="center" class="rosso">Elenco Report:</td>
<td width="50%" align="center" class="rosso">Elenco Spese:</td>
</tr>
<%do while not Report.EOF%>
<tr>
<td width="50%"><%=Report("Titolo")%></td>
<td width="50%">g</td>
</tr>
<%
Report.movenext
loop
Report.close()
Set Report = nothing
%>
</table>
e l'errore è :......
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query 'Data <= Datevalue('01/12/2005') Data end >= Datevalue('31/12/2005')'.
oddio...
se ci mettessi un minimo di attenzione
nella query non hai messo AND