Just nu i M3-nätverket
Jump to content

Hämta ÅR!


johan_gr

Recommended Posts

Hur ska man formulera en sql sats där man ska enbart hämta olika årtal...

har en tabell som har ett fält som heter fltdatum...

ex 2002-12-03

2003-05-12

2002-06-30

2002-05-25

då vill jag enbart få fram 2002 och 2003...går det?

För att sedan kunna välja i en rullningslist vilket år man vill ha ex statistik för...

I detta fall ska 2002 och 2003 visas i en rullningslist!

 

/Johan

Link to comment
Share on other sites

Generellt borde man kunna göra så att man hämtar de fyra första siffrorna från vänster.

 

[inlägget ändrat 2002-12-18 14:15:12 av lillen_009]

Link to comment
Share on other sites

<tr>

<td>

Välj år! <br>

<select name=WhichAlter>

<%'sql="select fltDatum1 from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%sql="select distinct extract(year from fltdatum) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%set rs = db.Execute(sql)%>

<%do until rs.eof%>

<option value="<%=rs("fltDatum1")%>"><%=rs("fltDatum1")%></option>

<%rs.MoveNext%>

<%loop%>

 

</select>

</td>

</tr>

 

så ser min sqlsats ut....den som är komenterad fungerar men då listas alla datum...ink månad och dag...

den som inte är komenterad testade jag..men får detta..Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52-nt]Unknown column 'fltdatum' in 'field list'

hmm??

/Johan

 

Link to comment
Share on other sites

<%sql="select distinct extract(year from fltdatum) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

 

Den reagerar på fltdatum. Ska det inte vara fltdatum1 eller finns båda. Den verkar ju inte hitta dett namn

 

Link to comment
Share on other sites

Detta fel får jag då:

Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80004005)

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52-nt]Unknown column 'fltdatum' in 'field list'

 

ändrar jag till:

<%sql="select distinct extract(year from fltdatum1) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

 

får jag fel:

<td>

Välj år! <br>

<select name=WhichAlter>

<%sql="select distinct extract(year from fltdatum1) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%'sql="select fltDatum1 from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%'sql="select distinct extract(year from fltdatum) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%set rs = db.Execute(sql)%>

<%do until rs.eof%>

<option value="<%=rs("fltDatum1")%>"><%=rs("fltDatum1")%></option>

<%rs.MoveNext%>

<%loop%>

 

</select>

</td>

 

på raden <option value.....

Feltyp:

ADODB.Recordset (0x800A0CC1)

Objektet kunde inte hittas i mängden med det begärda namnet eller numret.

 

Grejen är ju att mitt fält heter fltDatum1:

 

/Johan

 

 

Link to comment
Share on other sites

I SQL*Plus brukar jag formulera mig så här i frågor mot Oracle:

select to_char(fltdatum1,'YYYY') from tblKurser where...

 

Vet inte om det funkar i MySQL men det kanske kan vara värt ett försök?

 

mvh Lars

 

Link to comment
Share on other sites

Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52-nt]You have an error in your SQL syntax near '(fltdatum1,'YYYY') from tblKurser where fltFondId=24 ORDER BY fltDatum1' at line 1

 

<%sql="select to_char(fltdatum1,'YYYY') from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

 

Kanske inte funkar mot mysql..??

 

 

Link to comment
Share on other sites

value="<%=rs(0)%>"><%=rs(0)%></option>

 

Eftersom du har ett uttryck i select-listan så har det inget namn. 0 anger första fältet i recordsetet.

 

Link to comment
Share on other sites

Feltyp:

Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)

[MySQL][ODBC 3.51 Driver][mysqld-3.23.52-nt]You have an error in your SQL syntax near '(fltdatum1,'YYYY') from tblKurser where fltFondId=24 ORDER BY fltDatum1' at line 1

 

med denna kod!

 

<td>

Välj år! <br>

<select name=WhichAlter>

<%sql="select to_char(fltdatum1,'YYYY') from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%'sql="select distinct extract(year from fltdatum1) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%'sql="select fltDatum1 from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%'sql="select distinct extract(year from fltdatum) from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"%>

<%set rs = db.Execute(sql)%>

<%do until rs.eof%>

<option value="<%=rs(0)%>"><%=rs(0)%></option>

<%rs.MoveNext%>

<%loop%>

 

</select>

</td>

 

gör jag fel??

 

Link to comment
Share on other sites

Hmmm... tyvärr är jag ingen webbkille och är allergisk mot alla <% som förstör koden. Men här har du ett par tips;

 

Ser att du kör MySQL, följande fungerar mot MsSQL, kan vara värt att testa.

This example returns the number of the year from the date 03/12/1998.

SELECT "Year Number" = YEAR('03/12/1998')
GO

Here is the result set:

Year Number 
------------ 
1998

Remarks
The DAY, MONTH, and YEAR functions are synonyms for DATEPART(dd, date), DATEPART(mm, date), and DATEPART(yy, date), respectively.

 

Du kan alltså testa med både Year(date) och Datepart(yy, date)

 

En annan liten tanke bara!

Om det nu är en statestiktabell du ska titta i, tänk på att din kod inte är så effektiv. Du vill bara ladda en combobox för att välja årtal. Koden måste titta på varje rad i hela tabellen för att se om det finns något nytt årtal att lägga till. Du kanske kan hålla rätt på vilka årtal du har någon annanstans?

 

/Mn

Slartibartfast: Is that your robot? Marvin: No. I’m mine.

 

 

Link to comment
Share on other sites

ZanY är inne på rätt spår. Följande fungerar:

sql = "select distinct year(fltdatum1) as artal from tblKurser where fltFondId="&FondId&" ORDER BY fltDatum1"

 

 

//Clas

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...