/ 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
hjælp til sql forespørgsel til database
Fra : ib petersen


Dato : 13-02-07 22:13

Endnu engang må jeg krybe til korset og håbe på hjælp fra jer
eksperter.

Jeg skal hente nogle informationer fra en database og har flg.
sql-sætning:
Dim strT1
strT1 = Request.Form("T1")
strSQL = "Select * FROM moeder WHERE T1 = " & strT1 SORT BY T1
Set rs = Conn.Execute(strSQL)
men får flg. fejlmelding :

Slut på sætning var ventet
strSQL = "Select * FROM Bestillinger WHERE T1 = " & strT1 SORT BY
T1
---------------------------------------------------------^

Regner med at det er en fejl i selve forespørgslen - men kan ikke
hitte rede på hvad det er.

Håber at I kan lede mig på sporet.

På forhånd tusin tak.
Ib



--
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-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 13-02-07 22:42

On 13 Feb 2007 21:12:41 GMT, ib petersen <ibber@comxnet.dk> wrote:


>Slut på sætning var ventet
>strSQL = "Select * FROM Bestillinger WHERE T1 = " & strT1 SORT BY
>T1

strSQL = "Select * FROM Bestillinger WHERE T1 = " & strT1 & " SORT BY
T1"
(på én linie)

Good luck!

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

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

Jens Gyldenkærne Cla~ (13-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 13-02-07 23:32

ib petersen skrev:

> Jeg skal hente nogle informationer fra en database

Hvilken? (Access, MySQL, MSSQL, ...)

> strSQL = "Select * FROM moeder WHERE T1 = " & strT1 SORT BY T1

1) Sortering i SQL foretages med ORDER BY - ikke SORT BY.

2) Du mangler asp-anførselstegn og & i slutningen (jf Jørns indlæg)

3) Hvis T1 / strT1 er en tekst, skal der anførselstegn om strT1

4) Når du udvælger én bestemt værdi af T1 har det ingen effekt at
sortere efter T1 (det svarer fx til at udvælge adresser med postnr
= 2200 og så sortere efter postnr).


   strSQL = "SELECT * FROM moeder WHERE T1 = '" & strT1 & "'"

Hvis du vil sortere, er det som følger:

   strSQL = "SELECT * FROM moeder ORDER BY T1"

Du kan også udvælge poster hvor T1 ligner strT1:

   strSQL = "SELECT * FROM moeder WHERE T1 LIKE '%" & _
       strT1 & "%' ORDER BY T1"
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

ib petersen (14-02-2007)
Kommentar
Fra : ib petersen


Dato : 14-02-07 09:38

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> ib petersen skrev:
>
> > Jeg skal hente nogle informationer fra en database
>
> > strSQL = "Select * FROM moeder WHERE T1 = " & strT1 SORT BY T1
>
> 1) Sortering i SQL foretages med ORDER BY - ikke SORT BY.
>
> 2) Du mangler asp-anførselstegn og & i slutningen (jf Jørns indlæg)

Endnu engang kan jeg kun bøje mig i støvet og ydmygt takke for
hjælpen til jer her på i nyhedsgruppen.
Dejligt at I har tid til at hjælpe en nybegynder - med de
vanskeligheder
man render ind i undervejs. Det er vist helt klart at jeg ikke har
styr på det med ( ' ) og ( & ) tegnene, hvornår det skal bruges og
hvordan.
Hvis I evt. kunne give mig et tip om hvor jeg kan finde svar på dette,
ville det være dejligt.
Endnu engang tak for hjælpen til jer.

Hilsen
ib


--
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 (14-02-2007)
Kommentar
Fra : Jørn Andersen


Dato : 14-02-07 21:58

On 14 Feb 2007 08:38:28 GMT, ib petersen <ibber@comxnet.dk> wrote:

>Jens GyldenkærneClausen wrote in
>dk.edb.internet.webdesign.serverside.asp:
>> ib petersen skrev:
>>
>> > Jeg skal hente nogle informationer fra en database
>>
>> > strSQL = "Select * FROM moeder WHERE T1 = " & strT1 SORT BY T1
>>
>> 1) Sortering i SQL foretages med ORDER BY - ikke SORT BY.
>>
>> 2) Du mangler asp-anførselstegn og & i slutningen (jf Jørns indlæg)
>
>Endnu engang kan jeg kun bøje mig i støvet og ydmygt takke for
>hjælpen til jer her på i nyhedsgruppen.
>Dejligt at I har tid til at hjælpe en nybegynder - med de
>vanskeligheder
>man render ind i undervejs.

>Det er vist helt klart at jeg ikke har
>styr på det med ( ' ) og ( & ) tegnene, hvornår det skal bruges og
>hvordan.
>Hvis I evt. kunne give mig et tip om hvor jeg kan finde svar på dette,
>ville det være dejligt.

Hej Ib,

Du skal starte med at skelne mellem strenge og så variable, der
udtrykker strenge.
Man bruger oftest variable til ting, der kan variere, eller værdier,
der skal genbruges.

Variable er *uden* anførselstegn
Tekststrenge er *med* anførselstegn.

Man limer så tekststrenge (og variable) sammen med &-tegnet.

strDyr = "hest"
intAntalBen = 4
strSaetning = "En " & strHest & " har " & intAntalBen & " ben."
Resultatet bliver:
En hest har 4 ben.

Sætningen består af 5 dele:
"En "
strHest
" har "
intAntalBen
" ben."

- altså 3 tekststrenge (med " " om) og to variable (uden " "). De er
så "limet sammen" med &-tegn.


So far so good - det er nogenlunde lige ud ad landevejen.
Men det var en af de ting, der gik galt i dit eksempel, så det er et
vigtigt fundament at have styr på.


Problemet bliver større, når der så skal være anførselstegn inde i en
streng.

Vi kan fx *ikke* skrive:
strStreng = "Manden bliver kaldt "Basse""
- fordi det andet "-tegn afslutter strengen (og man får en
syntaks-fejl).

Her er reglen, at anførselstegn i strenge dubleres:
strStreng = "Manden bliver kaldt ""Basse"""
- hvor det første og sidste "-tegn er dem, der afgrænser strengen,
mens de to "" omkring Basse er dublerede "-tegn inde i strengen.

Udskriver man sætningen, får man:
Manden bliver kaldt "Basse"

I en SQL-streng kan der være brug for lige netop dette.
Hvis vi f.eks skal finde de poster, hvor navnet er Jensen, så er der
tale om et tekst-felt. Og ved tekst-felter skal der bruges anf.-tegn
om værdierne i en SQL-streng - men det går ikke med:

strSQL = "... WHERE navn = "Jensen""
- fordi det andet "-tegn afslutter strengen

Her kan man så dublere for at løse problemet:
strSQL = "... WHERE navn = ""Jensen"""

- men da SQL er ligeglad med, om der bruges enkelt- eller
dobbelt-anf.tegn (' eller ") om værdier, så er det oftest mere
overskueligt at bruge:

strSQL = "... WHERE navn = 'Jensen'"

Her bliver strengen *ikke* afsluttet af anf.tegnene omkring navnet. Så
begge de to herunder kan bruges:
strSQL = "... WHERE navn = ""Jensen"""
strSQL = "... WHERE navn = 'Jensen'"


Skal man så have variable ind, bliver det:
strNavn = "Jensen"
og:
strSQL = "... WHERE navn = """ & strNavn & """"
eller:
strSQL = "... WHERE navn = '" & strNavn & "'"

Her er det tydeligt, at det er mere overskueligt med ' i stedet for "
i SQL-strengen.

Og for lige at gå tilbage til det basale, så består den enderste
streng af 3 dele:
"... WHERE navn = '" (- en streng)
strNavn (- en variabel som udtrykker en streng)
"'" (- en streng)
- som limes sammen med &-tegn.


For lige at opsummere reglerne:
a) Variable er *uden* anførselstegn
Tekststrenge er *med* anførselstegn.
b) Man limer tekststrenge (og variable) sammen med &-tegnet.
c) Anførselstegn i strenge dubleres.
d) SQL er ligeglad med, om der bruges enkelt- eller dobbelt-anf.tegn
(' eller "), så man kan bruge ' i stedet for dublerede
dobbeltanførselstegn ("").


Håber det hjalp en smule. Ellers spørg videre.

>Endnu engang tak for hjælpen til jer.

Velbekomme!


Mvh. Jørn

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

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

Jens Gyldenkærne Cla~ (14-02-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 14-02-07 22:35

Jørn Andersen skrev et lang og grundigt indlæg om anførselstegn:

> d) SQL er ligeglad med, om der bruges enkelt- eller
> dobbelt-anf.tegn (' eller "), så man kan bruge ' i stedet for
> dublerede dobbeltanførselstegn ("").

Nej - det gælder ikke generelt. SQL-92 (den standard der fastlægger
de grundlæggende egenskaber i alle anvendte sql-varianter) at
tekststrenge angives med apostrof/enkelt anførselstegn ('tekst') -
*ikke* normale dobbelte anførselstegn ("tekst").

Access kan både arbejde med " og ' som anførselstegn, men det
gælder ikke generelt for databaser, og det er ikke korrekt ifølge
standarden.

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

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


Dato : 15-02-07 00:06

On Wed, 14 Feb 2007 22:35:08 +0100, "Jens Gyldenkærne Clausen"
<jens@gyros.invalid> wrote:

>Jørn Andersen skrev et lang og grundigt indlæg om anførselstegn:
>
>> d) SQL er ligeglad med, om der bruges enkelt- eller
>> dobbelt-anf.tegn (' eller "), så man kan bruge ' i stedet for
>> dublerede dobbeltanførselstegn ("").
>
>Nej - det gælder ikke generelt. SQL-92 (den standard der fastlægger
>de grundlæggende egenskaber i alle anvendte sql-varianter) at
>tekststrenge angives med apostrof/enkelt anførselstegn ('tekst') -
>*ikke* normale dobbelte anførselstegn ("tekst").

Tak for korrektionen!

Mvh. Jørn

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

Danske tropper hjem fra Irak, nu!
Skriv under: www.kirkmand-initiativet.dk

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408186
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste