Toon posts:

[sql] items van bep periode weergeven (afgelopen 14 dagen)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hier geven mijn hersens het op:

Ik wil iets wat volgens mij heel simpel is maar ik heb er echt uren over gedacht en alles geprobeerd en nu waag ik mijzelf op het gebied van de ware programmeurs die me vast heel hard uitlachen en met een beetje pech ook uitschelden. so please be gentle :)

Ik heb vanwege gezeur met de dateformats in de MDB database gekozen om de nieuwsdata in te voeren in 3 aparte velden: ndag, nmaand en njaar. Nu wil ik dat je op een pagina de nieuwtjes van een bepaalde periode kunt zien. dus er is ook een formulier. standaard neemt hij de nieuwstjes van de afgelopen 2 weken.

wat er nu in de query staat =
selecteer alles uit de tabel egpnnieuws
waar (nieuwsJAAR tussen [het jaar van veertien dagen geleden] en [het huidige jaar])
EN (nieuwsMAAND tussen [de maand van veertien dagen geleden] en [de huidige maand])
EN (nieuwsDAG gelijk of kleiner dan [vertien dagen geleden] OF nieuwsDAG gelijk of groter dan [vandaag])

Bij die dagen gaat het dus mis, en ik kom er niet uit :S :(


query en variabelen

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<CFPARAM NAME="Adag" DEFAULT="0">

<CFIF Adag is not 0>
    <CFSET formAdag = "#FORM.Adag#-#FORM.Amaand#-#FORM.Ajaar#">
        <CFSET datumNu = #dateformat(formAdag,'dd-mm-yyyy')#>
    <CFSET formBdag = "#FORM.Bdag#-#FORM.Bmaand#-#FORM.Bjaar#">
        <CFSET dagToen = #dateformat(formBdag,'dd-mm-yyyy')#>
        
        
<CFELSE>
    <CFSET datumNu = #dateformat(now(),'dd-mm-yyyy')#>
    <CFSET dagToen = #dateformat(datumNu,'dd-mm-yyyy')# - 14>
</CFIF>

<CFQUERY DATASOURCE="egpn" NAME="berichten">
    SELECT * FROM egpnnieuws 
    WHERE (njaar BETWEEN #dateformat(dagToen,'yyyy')# AND #dateformat(datumNu,'yyyy')#)
    AND (nmaand BETWEEN #dateformat(dagToen,'m')# AND #dateformat(datumNu,'m')#) 
    AND (ndag <= #dateformat(datumNu,'d')# OR ndag >= #dateformat(dagToen,'d')#) 
    ORDER BY njaar desc, nmaand desc, ndag desc, idnr
</CFQUERY>



het formulier

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<FORM ACTION="printnieuws.cfm" METHOD="post">

Toon alle nieuwsberichten van: 

<SELECT NAME="Bdag">
            <CFOUTPUT>
            <CFLOOP INDEX="dagen" FROM="1" TO="31">
                <OPTION VALUE="#dagen#" <CFIF dagen is #dateformat(dagToen,'dd')# >SELECTED</CFIF>>#numberformat(dagen,00)# <CFSET dagen=#dagen#+1>
            </CFLOOP>
            </CFOUTPUT>
            </SELECT>
          <SELECT NAME="Bmaand">
            <OPTION VALUE="1" <CFIF #dateformat(dagToen,'mm')# is 1>SELECTED</CFIF>>Januari
            <OPTION VALUE="2" <CFIF #dateformat(dagToen,'mm')# is 2>SELECTED</CFIF>>Februari
            <OPTION VALUE="3" <CFIF #dateformat(dagToen,'mm')# is 3>SELECTED</CFIF>>Maart
            <OPTION VALUE="4" <CFIF #dateformat(dagToen,'mm')# is 4>SELECTED</CFIF>>April
            <OPTION VALUE="5" <CFIF #dateformat(dagToen,'mm')# is 5>SELECTED</CFIF>>Mei
            <OPTION VALUE="6" <CFIF #dateformat(dagToen,'mm')# is 6>SELECTED</CFIF>>Juni
            <OPTION VALUE="7" <CFIF #dateformat(dagToen,'mm')# is 7>SELECTED</CFIF>>Juli
            <OPTION VALUE="8" <CFIF #dateformat(dagToen,'mm')# is 8>SELECTED</CFIF>>Augustus
            <OPTION VALUE="9" <CFIF #dateformat(dagToen,'mm')# is 9>SELECTED</CFIF>>September
            <OPTION VALUE="10" <CFIF #dateformat(dagToen,'mm')# is 10>SELECTED</CFIF>>Oktober
            <OPTION VALUE="11" <CFIF #dateformat(dagToen,'mm')# is 11>SELECTED</CFIF>>November
            <OPTION VALUE="12" <CFIF #dateformat(dagToen,'mm')# is 12>SELECTED</CFIF>>December
          </SELECT>
          <SELECT NAME="Bjaar"><CFOUTPUT>
<CFLOOP INDEX="jaren" FROM="#jaarStart#" TO="#year(now())#">
            <OPTION VALUE="#jaren#" <CFIF #dateFormat(dagtoen,'yyyy')# is jaren>SELECTED</CFIF>>#jaren#
</CFLOOP></CFOUTPUT>
          </SELECT>
          
          

<BR><BR>
TOT EN MET: 
        
<SELECT NAME="Adag">
            <CFOUTPUT>
            <CFLOOP INDEX="dagen" FROM="1" TO="31">
                <OPTION VALUE="#dagen#" <CFIF dagen is #dateformat(datumNu,'dd')# >SELECTED</CFIF>>#numberformat(dagen,00)# <CFSET dagen=#dagen#+1>
            </CFLOOP>
            </CFOUTPUT>
</SELECT>
<SELECT NAME="Amaand">
            <OPTION VALUE="1" <CFIF #dateFormat(datumNu,'mm')# is 1>SELECTED</CFIF>>Januari
            <OPTION VALUE="2" <CFIF #dateFormat(datumNu,'mm')# is 2>SELECTED</CFIF>>Februari
            <OPTION VALUE="3" <CFIF #dateFormat(datumNu,'mm')# is 3>SELECTED</CFIF>>Maart
            <OPTION VALUE="4" <CFIF #dateFormat(datumNu,'mm')# is 4>SELECTED</CFIF>>April
            <OPTION VALUE="5" <CFIF #dateFormat(datumNu,'mm')# is 5>SELECTED</CFIF>>Mei
            <OPTION VALUE="6" <CFIF #dateFormat(datumNu,'mm')# is 6>SELECTED</CFIF>>Juni
            <OPTION VALUE="7" <CFIF #dateFormat(datumNu,'mm')# is 7>SELECTED</CFIF>>Juli
            <OPTION VALUE="8" <CFIF #dateFormat(datumNu,'mm')# is 8>SELECTED</CFIF>>Augustus
            <OPTION VALUE="9" <CFIF #dateFormat(datumNu,'mm')# is 9>SELECTED</CFIF>>September
            <OPTION VALUE="10" <CFIF #dateFormat(datumNu,'mm')# is 10>SELECTED</CFIF>>Oktober
            <OPTION VALUE="11" <CFIF #dateFormat(datumNu,'mm')# is 11>SELECTED</CFIF>>November
            <OPTION VALUE="12" <CFIF #dateFormat(datumNu,'mm')# is 12>SELECTED</CFIF>>December
</SELECT>
<SELECT NAME="Ajaar"><CFOUTPUT>
<CFLOOP INDEX="jaren" FROM="#jaarStart#" TO="#year(now())#">
            <OPTION VALUE="#jaren#" <CFIF #dateFormat(datumNu,'yyyy')# is jaren>SELECTED</CFIF>>#jaren#
</CFLOOP></CFOUTPUT>
</SELECT>


</TD><TD><INPUT TYPE="Submit" VALUE="weergeven" STYLE="cursor:hand;" >  
</FORM>

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 15:58

gorgi_19

Kruimeltjes zijn weer op :9

Een vraagje, misschien offtopic.

Als je de datum als 1 veld in de datum laat staan. Je gebruikt de dateadd-functie en telt hier 14 dagen bij op. Indien deze datum groter is dan vandaag, dan laat je hem zien, anders niet.

Dan heb je ook geen probleem met datumformaten ed.

(je moet dit natuurlijk wel allemaal door je db laten oplossen.. :P)

edit:

Als je een topic verkeerd plaatst, kan je in Schop een modje een move aanvragen. Deze keer heb ik het voor je gedaan
[rml][ WG] Dubbel[/rml]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

Topicstarter
ja maar de database is nou eenmaal in 3 velden ingedeeld: dag, maand en jaar en dat kan niet veranderd worden, dus het moet gewoon even met dat ene statement (waar ik niet uitkom :? )

  • whoami
  • Registratie: December 2000
  • Laatst online: 16:11
Heb je geen functie in de trant van:
code:
1
Datum = EncodeDate (jaar, maand, dag);

natuurlijk niet perse die naam ofzo, maar je begrijpt wel wat ik bedoel ;)

https://fgheysels.github.io/


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

even uit de losse pols:
SQL:
1
2
3
SELECT *
FROM egpnnieuws
WHERE DATEDIFF('d', DATESERIAL(njaar, nmaand, ndag), now()) BETWEEN 0 AND 14

Als het niet helemaal voldoet aan je wensen moet het vrij simpel zijn om aan te passen.

[ Voor 0% gewijzigd door Annie op 20-11-2002 23:49 . Reden: errr, foutje, afgelopen 14 dagen natuurlijk ]

Today's subliminal thought is:


Verwijderd

Topicstarter
ik ga aan het proberen, sowieso bedankt! :)

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:34
Verwijderd schreef op 20 November 2002 @ 19:46:
ja maar de database is nou eenmaal in 3 velden ingedeeld: dag, maand en jaar en dat kan niet veranderd worden, dus het moet gewoon even met dat ene statement (waar ik niet uitkom :? )
Je kunt toch gewoon een sql schrijven die de datum op de officiele manier in een nieuwe kolom zet?

Verwijderd

Topicstarter
Super

code:
1
2
3
SELECT *
FROM egpnnieuws
WHERE DATEDIFF('d', DATESERIAL(njaar, nmaand, ndag), now()) BETWEEN 0 AND 14


werkt perfect. pluk is thankful B)
Pagina: 1