/ 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
værdier i strSQL
Fra : Laurits Thomsen


Dato : 12-10-05 11:43

Hej
Jeg er meget ny udi asp og script. Jeg har en database som jeg
ønsker at lave nogle asp sider til der viser forskellige
sammensætninger af data. Jeg har lavet en formular hvor brugeren
vælger et interval (start dato og slut dato) indenfor hvilket
records fra datasættet skal vises.

Jeg skal derfor bruge en request.form("dato1") og
request.form("dato2") i min sql's Where-del. Det kan jeg ikke, da
" i "dato1" gør, at den tror der er end of statement.

Jeg har derfor prøvet dette:
Dim rsvikar
Dim strSQL
Dim DNS
Dim Dat1
Dim Dat2

Dat1=Request.Form("Dato1")
Dat2=Request.Form("Dato2")

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("/vikardatabasen.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "SELECT Faktura.løbenr, Faktura.Fakturanummer,
Faktura.[Dato start], Faktura.[Tid start], Faktura.[Dato slut],
Faktura.[Tid Slut], Faktura.[Vikar type], Faktura.[Vikar
burareau], Vikarbureauer.Vikarbureau, Faktura.[Vikar ID],
Faktura.Vagtpris, Faktura.Tillæg, Faktura.Tillægspris,
Faktura.Afdeling, Faktura.afstemt FROM Vikarbureauer RIGHT JOIN
Faktura ON Vikarbureauer.Bureaunr = Faktura.[Vikar burareau]
WHERE (((Faktura.[Dato start])>= Dat1 ) AND ((Faktura.[Dato
slut])<= Dat2 )); "
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rsvikar = Conn.Execute(strSQL)


Det lader dog heller ikke til at være en løsning. Hvad gør man I
sådanne tilfælde?

Mvh
Laurits Thomsen

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

 
 
Søren Haagerup (12-10-2005)
Kommentar
Fra : Søren Haagerup


Dato : 12-10-05 13:12

Prøv dette:

strSQL = "SELECT Faktura.løbenr, Faktura.Fakturanummer,
Faktura.[Dato start], Faktura.[Tid start], Faktura.[Dato slut],
Faktura.[Tid Slut], Faktura.[Vikar type], Faktura.[Vikar
burareau], Vikarbureauer.Vikarbureau, Faktura.[Vikar ID],
Faktura.Vagtpris, Faktura.Tillæg, Faktura.Tillægspris,
Faktura.Afdeling, Faktura.afstemt FROM Vikarbureauer RIGHT JOIN
Faktura ON Vikarbureauer.Bureaunr = Faktura.[Vikar burareau]
WHERE (((Faktura.[Dato start])>= #" & Dat1 & "# ) AND ((Faktura.[Dato
slut])<= #" & Dat2 & "# )); "

Anførselstegn fordi Dat1 og Dat2 ikke er defineret i databasen, men
derimod i ASP-siden. #-tegn fordi du har med datoer at gøre.


Mvh
Søren

Laurits Thomsen (12-10-2005)
Kommentar
Fra : Laurits Thomsen


Dato : 12-10-05 15:51

Søren Haagerup wrote in dk.edb.internet.webdesign.serverside.asp:
> Prøv dette: ...
WHERE (((Faktura.[Dato start])>= #" & Dat1 & "# ) AND ((Faktura.[Dato
> slut])<= #" & Dat2 & "# )); "

Kanon - det var lige det der skulle til. Jeg forstår dog ikke helt
hvorfor #" ikke medfører en "expecting end of statement" fejl.

--
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 (13-10-2005)
Kommentar
Fra : Jørn Andersen


Dato : 13-10-05 05:22

On 12 Oct 2005 14:51:15 GMT, Laurits Thomsen
<laurits_vibjerg@hotmail.com> wrote:

>Søren Haagerup wrote in dk.edb.internet.webdesign.serverside.asp:
>> Prøv dette: ...
> WHERE (((Faktura.[Dato start])>= #" & Dat1 & "# ) AND ((Faktura.[Dato
>> slut])<= #" & Dat2 & "# )); "
>
>Kanon - det var lige det der skulle til. Jeg forstår dog ikke helt
>hvorfor #" ikke medfører en "expecting end of statement" fejl.

Fordi de findes *inde i* tekststrengen.
Din Sql-streng bliver opbyget af større og mindre bidder:
Først en tekststreng: "SELECT ... start])>= #"
Så en variabel: Dat1
Endnu en tekstreng: "# ) .... <= #"
Og endnu en variabel: Dat2
Og den sidste tekststreng: "# )); "

Tekststrengene er "kapslet ind" i anførselstegn - i modsætning til
dine variable. Og det hele bliver klistret sammen med &-tegn.

En anden ting:
Metoden med # til datoer er ikke altid for sikker, hvis fx din ASP
bruger engelsk/amerikansk sprog og din database dansk - eller omvendt.
Så kan du risikere, at der bliver byttet om på dag- og
måneds-angivelsen.
Det er et ofte stillet spørgsmål her i gruppen, så en forklaring og en
mere skudsikker løsning (til MS Access) findes på gruppens FAQ:
<url: http://asp-faq.dk/article/?id=98>

Good luck,
Jørn

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

Laurits Thomsen (13-10-2005)
Kommentar
Fra : Laurits Thomsen


Dato : 13-10-05 09:01

Mange tak for jeres meget udførlige svar. Det er lige netop den type svar
man kan lære noget af!

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

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

Månedens bedste
Årets bedste
Sidste års bedste