Just nu i M3-nätverket
Gå till innehåll

Hämta ÅR!


johan_gr

Rekommendera Poster

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

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

<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

 

Länk till kommentar
Dela på andra webbplatser

<%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

 

Länk till kommentar
Dela på andra webbplatser

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

 

 

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

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..??

 

 

Länk till kommentar
Dela på andra webbplatser

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.

 

Länk till kommentar
Dela på andra webbplatser

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??

 

Länk till kommentar
Dela på andra webbplatser

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.

 

 

Länk till kommentar
Dela på andra webbplatser

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

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...