/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Vise recordset i bestemt dato interval
Fra : Michael Tillgaard


Dato : 14-10-07 08:08

Hvordan viser man et recordset i et bestemt dato interval?
Jeg har en tabel "Tavle". Fra den skal der vises en "Tekst" jeg
har en "Startdao" og en "Slutdato" i tabellen. Formatet på dato
er fx. 14-10-2007.

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Finn Elmgaard (14-10-2007)
Kommentar
Fra : Finn Elmgaard


Dato : 14-10-07 09:14

"Michael Tillgaard" <post@bogkassen.dk> wrote in message
news:4711c032$0$90274$14726298@news.sunsite.dk...
> Hvordan viser man et recordset i et bestemt dato interval?
> Jeg har en tabel "Tavle". Fra den skal der vises en "Tekst" jeg
> har en "Startdao" og en "Slutdato" i tabellen. Formatet på dato
> er fx. 14-10-2007.
>

Dine oplysninger giver ikke mulighed for et helt præcist svar, men
princippet for løsningen vil være et SQL kald af typen:

strSQL="SELECT Tekst FROM Tavle WHERE Startdato > [minStartdato] AND
Slutdato < [MinSlutDato]"

Måske skal du ændre > (større end) til >= (Større end eller lig med)
afhængig af hvad du faktisk ønsker at få returneret. (og naturligvis det
samme med <).

Hvad du så skal indsætte som MinStartdato afhænger af opgaven og den
database du anvender og hvorledes datofeltet er defineret.
Formentlig har du din start- og slutdato som variabler (hvis de er
brugerindtastede, så husk at validér inden du anvender dem i en SQL). Så ser
det i princippet sådan ud:

strSQL="SELECT Tekst FROM Tavle WHERE Startdato >" & minStartdato & " AND
Slutdato<....... o.s.v.

Den simple løsning i en Access DB er svjh, hvis der er tale om et DateTime
felt:

strSQL="SELECT Tekst FROM Tavle WHERE Startdato >#" & minStartdato & "# AND
Slutdato< #...... o.s.v.
altså med # omkring datoen.

Men her skal du så som nævnt tage hensyn til feltdifinitionen og databasen.
Se f.eks. mere på http://www.asp-faq.dk/article/?id=98

Se om det hjælper dig igennem, ellers spørg igen i gruppen med nogle flere
oplysninger.

NB I stedet for > og < kan du også bruge BETWEEN i SQL-kaldet.

mvh
Finn




Michael Tillgaard (14-10-2007)
Kommentar
Fra : Michael Tillgaard


Dato : 14-10-07 14:50

Finn Elmgaard wrote in dk.edb.internet.webdesign.serverside.asp:
Klip
>
> Dine oplysninger giver ikke mulighed for et helt præcist svar, men
> princippet for løsningen vil være et SQL kald af typen:
>
> strSQL="SELECT Tekst FROM Tavle WHERE Startdato > [minStartdato] AND
> Slutdato < [MinSlutDato]"
>
> Måske skal du ændre > (større end) til >= (Større end eller lig med)
> afhængig af hvad du faktisk ønsker at få returneret. (og naturligvis det
> samme med <).
>
> Hvad du så skal indsætte som MinStartdato afhænger af opgaven og den
> database du anvender og hvorledes datofeltet er defineret.
> Formentlig har du din start- og slutdato som variabler (hvis de er
> brugerindtastede, så husk at validér inden du anvender dem i en SQL). Så ser
> det i princippet sådan ud:
>
> strSQL="SELECT Tekst FROM Tavle WHERE Startdato >" & minStartdato & " AND
> Slutdato<....... o.s.v.
>
> Den simple løsning i en Access DB er svjh, hvis der er tale om et DateTime
> felt:
>
> strSQL="SELECT Tekst FROM Tavle WHERE Startdato >#" & minStartdato & "# AND
> Slutdato< #...... o.s.v.
> altså med # omkring datoen.
>
> Men her skal du så som nævnt tage hensyn til feltdifinitionen og databasen.
> Se f.eks. mere på http://www.asp-faq.dk/article/?id=98
>
> Se om det hjælper dig igennem, ellers spørg igen i gruppen med nogle flere
> oplysninger.
>
> NB I stedet for > og < kan du også bruge BETWEEN i SQL-kaldet.
>
> mvh
> Finn
Tak for dit svar Finn

Jeg fandt i hovedtræk frem til følgende som ser ud til at fungere:

Dim strDate1
strDate1 = "FormatDateTime(Now, vbshortDate)"
If (FormatDateTime(Now, vbshortDate) <> "") Then
strDate1 = FormatDateTime(Now, vbshortDate)
End If

Dim strDate2
strDate2 = "FormatDateTime(Now, vbShortDate)"
If (FormatDateTime(Now, vbShortDate) <> "") Then
strDate2 = FormatDateTime(Now, vbShortDate)
End If

SELECT * FROM Tavle WHERE Startdato <=strDate1 AND Slutdato >strDate2

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jørn Andersen (15-10-2007)
Kommentar
Fra : Jørn Andersen


Dato : 15-10-07 08:22

On 14 Oct 2007 13:49:49 GMT, Michael Tillgaard <post@bogkassen.dk>
wrote:

>Finn Elmgaard wrote in dk.edb.internet.webdesign.serverside.asp:

>> Den simple løsning i en Access DB er svjh, hvis der er tale om et DateTime
>> felt:
>>
>> strSQL="SELECT Tekst FROM Tavle WHERE Startdato >#" & minStartdato & "# AND
>> Slutdato< #...... o.s.v.
>> altså med # omkring datoen.

Det er lidt noget "snavs", da det forudsætter et bestemt
(sprog-afhængigt) format.
Det er langt bedre at bruge dato-*værdien* i stedet for et bestemt
format:

.... WHERE Startdato > DateSerial(2007, 10, 15) o.s.v.

- DateSerial er en indbygget funktion i Access.

<snip>

>Jeg fandt i hovedtræk frem til følgende som ser ud til at fungere:
>
>Dim strDate1
>strDate1 = "FormatDateTime(Now, vbshortDate)"
>If (FormatDateTime(Now, vbshortDate) <> "") Then
>strDate1 = FormatDateTime(Now, vbshortDate)
>End If
>
>Dim strDate2
>strDate2 = "FormatDateTime(Now, vbShortDate)"
>If (FormatDateTime(Now, vbShortDate) <> "") Then
>strDate2 = FormatDateTime(Now, vbShortDate)
>End If

Samme kommentar som til Finn.
Desuden er FormatDateTime(Now) altid <> "" forskellig fra ""

>SELECT * FROM Tavle WHERE Startdato <=strDate1 AND Slutdato >strDate2

Når du bruger Now, så er den indbygget i Access:

.... WHERE Startdato < Now AND Slutdato > Now

- så slipper du helt for al omsætning.


Good luck!

--
Jørn Andersen,
Brønshøj

Søg
Reklame
Statistik
Spørgsmål : 177580
Tips : 31968
Nyheder : 719565
Indlæg : 6409080
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste