|
| SQL-sætning Fra : Morten |
Dato : 22-11-02 21:52 |
|
Hey!
Jeg har et enkelt spørgsmål:
Jeg vil gerne have sorteret faldende og samtidig skal tallet være
over 100, så hvor er fejlen i følgende sætning?
strSQL = "Select * From tabel Order By Tabel1 AND Where Tabel1 >
'100'"
Fejlen er:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing
operator) in query expression 'Tabel1 AND Where Tabel1 > '100''.
På forhånd tak.
- Morten.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jens Gyldenkærne Cla~ (22-11-2002)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 22-11-02 22:07 |
|
Morten skrev:
> Jeg vil gerne have sorteret faldende og samtidig skal tallet være
> over 100, så hvor er fejlen i følgende sætning?
>
> strSQL = "Select * From tabel Order By Tabel1 AND Where Tabel1 >
> '100'"
En normal selectsætning er bygget op på følgende måde:
SELECT <felter>
FROM <tabeller - incl. joinudtryk>
WHERE <kriterier>
ORDER BY <sorteringsfelter>
I dit tilfælde bliver det derfor:
SELECT *
FROM tabel
WHERE Tabel1 > 100
ORDER BY Tabel1
Et par kommentarer til din kode:
- Select * bør så vidt muligt undgås, dels fordi man altid kun bør
hente præcis de felter man skal bruge, hverken mere eller mindre,
og dels fordi man ved at skrive feltnavnene lettere kan se hvad det
er man får (man har jo ikke nødvendigvis databasen åbner når man
sidder og arbejder på en asp-side).
- I ovenstående eksempel er Tabel1 et feltnavn mens tabel er et
tabelnavn. Forhåbentlig er det bare pseudobetegnelser du har brugt.
Deskriptiv navngivning er guld værd.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.
| |
Philip (23-11-2002)
| Kommentar Fra : Philip |
Dato : 23-11-02 06:53 |
|
> Morten skrev:
>
> > Jeg vil gerne have sorteret faldende og samtidig skal tallet være
> > over 100, så hvor er fejlen i følgende sætning?
> >
> > strSQL = "Select * From tabel Order By Tabel1 AND Where Tabel1 >
> > '100'"
Jeg går ud fra, at linieskiftet mellem Tabel1 > og '100' bare er noget, der
er i dette indlæg og ikke i asp-dokumentet. Ellers prøv at fjerne det.
> - Select * bør så vidt muligt undgås,
Hvad skal man så skrive i stedet for "Select *" i dette:
strSQL = "Select * From tabel Order By Tabel1 AND Where Tabel1 > 100 order
by Tabel1"
| |
Jens Gyldenkærne Cla~ (23-11-2002)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 23-11-02 10:04 |
|
Philip skrev:
>> > strSQL = "Select * From tabel Order By Tabel1 AND Where
>> > Tabel1 > '100'"
>
> Jeg går ud fra, at linieskiftet mellem Tabel1 > og '100' bare
> er noget, der er i dette indlæg og ikke i asp-dokumentet.
> Ellers prøv at fjerne det.
Det vil ikke hjælpe. Elementerne i selectsætningen står i forkert
rækkefølge - og i øvrigt også med en ugyldig operator mellem to
dele (der skal ikke AND mellem WHERE og ORDER BY-delen).
>> - Select * bør så vidt muligt undgås,
> Hvad skal man så skrive i stedet for "Select *" i dette:
> strSQL = "Select * From tabel Order By Tabel1 AND Where Tabel1
> > 100 order by Tabel1"
Det er ikke til at vide hvilke felter Morten skal bruge på siden.
Men hvis han fx skal bruge felterne navn, adresse, postnr og bynavn
bliver sætningen:
SELECT navn, adresse, postnr, bynavn
FROM tabel
WHERE felt1 > 100
ORDER BY felt1
(det skal stå på én linje for at virke i asp).
Jeg har erstattet det lidt forvirrende feltnavn "Tabel1" med
"felt1". Se evt. min note om navngivning fra før.
--
Jens Gyldenkærne Clausen
MF (medlem af FIDUSO - www.fiduso.dk)
I ovenstående tekst benyttes nyt komma.
| |
Philip (23-11-2002)
| Kommentar Fra : Philip |
Dato : 23-11-02 12:40 |
|
> (der skal ikke AND mellem WHERE og ORDER BY-delen).
OK - lige det der AND havde jeg overset (bruger det aldrig selv på dén måde)
> SELECT navn, adresse, postnr, bynavn
> FROM tabel
> WHERE felt1 > 100
> ORDER BY felt1
>
> (det skal stå på én linje for at virke i asp).
Se dér lærte jeg lige noget nyt - altså at man kan spare på serverens
arbejde med databasen ved at skrive "navn, adresse, postnr, bynavn" i stedet
for "*"
Det skal jeg huske
| |
Jens Gyldenkærne Cla~ (23-11-2002)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 23-11-02 13:55 |
|
Philip skrev:
>> (der skal ikke AND mellem WHERE og ORDER BY-delen).
>
> OK - lige det der AND havde jeg overset (bruger det aldrig
> selv på dén måde)
Og selv hvis du fjernede AND - så der stod:
Select * From tabel Order By Tabel1 Where Tabel1 > '100'
- ville det stadig være en ugyldig sqlsætning. Rækkefølgen af de
forskellige delelementer (SELECT, FROM , WHERE, ORDER BY) er
vigtig.
--
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
| |
Morten (24-11-2002)
| Kommentar Fra : Morten |
Dato : 24-11-02 00:17 |
|
Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> Og selv hvis du fjernede AND - så der stod:
>
> Select * From tabel Order By Tabel1 Where Tabel1 > '100'
>
> - ville det stadig være en ugyldig sqlsætning. Rækkefølgen af
de
> forskellige delelementer (SELECT, FROM , WHERE, ORDER BY) er
> vigtig.
Så langt så godt. Nu får jeg fejlen "data type mismatch i min
SQL-sætning (og ja, jeg har checket at der står "tal" udfor den
kolonne jeg henter!)
strSQL = "Select * From tabel Where tabel1 > '100' Order By
tabel1 Desc"
Nogen gode forklaringer?
På forhånd tak.
- Morten.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Jimmy (24-11-2002)
| Kommentar Fra : Jimmy |
Dato : 24-11-02 00:47 |
|
"Morten" <ChilliBoy@chilliboy.dk> wrote in message
news:arp29g$hiq$1@sunsite.dk...
> Jens GyldenkærneClausen wrote in
> Så langt så godt. Nu får jeg fejlen "data type mismatch i min
> SQL-sætning (og ja, jeg har checket at der står "tal" udfor den
> kolonne jeg henter!)
>
> strSQL = "Select * From tabel Where tabel1 > '100' Order By
> tabel1 Desc"
Jamen hvad så med at hente et tal?
Dvs. uden ' omkring 100
Strenge er omkaplset af ' - Ikke tal.
Mvh
Jimmy
| |
Knud Berggreen (24-11-2002)
| Kommentar Fra : Knud Berggreen |
Dato : 24-11-02 11:34 |
|
On Sat, 23 Nov 2002 23:17:04 +0000 (UTC), Morten
<ChilliBoy@chilliboy.dk> wrote:
>strSQL = "Select * From tabel Where tabel1 > '100' Order By
>tabel1 Desc"
Prøv:
strSQL = "SELECT * FROM tabel WHERE tabel1 > '100' ORDER BY -tabel1"
(Bemærk minus foran tabel1 i stedet for Desc)
Jeg går ud fra at tabel1 er en kolonne i tabel?
/Knud
| |
Morten (25-11-2002)
| Kommentar Fra : Morten |
Dato : 25-11-02 19:52 |
|
Knud Berggreen wrote in dk.edb.internet.webdesign.serverside.asp:
> >strSQL = "Select * From tabel Where tabel1 > '100' Order By
> >tabel1 Desc"
>
> Prøv:
> strSQL = "SELECT * FROM tabel WHERE tabel1 > '100' ORDER BY -tabel1"
> (Bemærk minus foran tabel1 i stedet for Desc)
>
> Jeg går ud fra at tabel1 er en kolonne i tabel?
>
> /Knud
>
Det virkede, - tak for hjælpen - også tak til Jens som gav mig den
rigtige rækkefølge på WHERE osv. :) Tak!
- Morten.
--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Peter Lykkegaard (23-11-2002)
| Kommentar Fra : Peter Lykkegaard |
Dato : 23-11-02 15:23 |
|
Som svar på skriblerier forfattet af Jens Gyldenkærne Clausen
> - Select * bør så vidt muligt undgås, dels fordi man altid kun bør
> hente præcis de felter man skal bruge, hverken mere eller mindre,
Øhh, netop asterisk er jo guld værd når man arbejder med views og/eller
stored procedures
Der jo netop returnerer de ønskede felter
Ingen regler uden undtagelse
> og dels fordi man ved at skrive feltnavnene lettere kan se hvad det
> er man får (man har jo ikke nødvendigvis databasen åbner når man
> sidder og arbejder på en asp-side).
Nøhh, men man har vel tabeldefinitionen liggende i en mappe ved siden af?
>
> - I ovenstående eksempel er Tabel1 et feltnavn mens tabel er et
> tabelnavn. Forhåbentlig er det bare pseudobetegnelser du har brugt.
> Deskriptiv navngivning er guld værd.
Jeps, very
mvh/Peter Lykkegaard
| |
|
|