Avatar billede Slettet bruger
29. marts 2006 - 10:51 Der er 20 kommentarer og
3 løsninger

Hvad fejler min Sql sætning

HVAD fejler denne sætning?!?

strSoegesql = "SELECT * FROM huse WHERE aktiv='ja' ORDER BY pakke DESC";

Fejlmeddelsen siger
System.Data.OleDb.OleDbException: Der er en syntaksfejl i ORDER BY-delsætningen.

JEG fatter minus!!
Avatar billede Slettet bruger
29. marts 2006 - 10:54 #1
Sådan ser den ud når jeg udskriver den:'

SELECT * FROM huse WHERE aktiv='ja' ORDER BY pakke DESC AND omraade LIKE 'Aalborg'

(Det er en del af en søgefunktion)
Avatar billede casualty Nybegynder
29. marts 2006 - 10:55 #2
Order by skal være sidst

SELECT * FROM huse WHERE aktiv='ja' AND omraade LIKE 'Aalborg' ORDER BY pakke DESC
Avatar billede casualty Nybegynder
29. marts 2006 - 10:55 #3
Svar
Avatar billede softspot Forsker
29. marts 2006 - 11:05 #4
Du har vel noget dynamisk sammensætning af SQL-sætningen i din kode og der har du nok ikke taget højde for at den sidste "AND omraade LIKE 'Aalborg'" skal ind i sætnignen inden ORDER BY...

Så jeg tror du skal have kigget på sekvensen af dine kodesætninger... :)
Avatar billede Slettet bruger
30. marts 2006 - 08:19 #5
Begge guidede mig på rette vej! Smid begge et svar ~:]
Avatar billede casualty Nybegynder
30. marts 2006 - 08:50 #6
svar
Avatar billede Slettet bruger
30. marts 2006 - 09:21 #7
Lige ét spørgsmål til inden tråden lukkes! Nu har jeg prøver at skriven en fuld sætning ud, men den sortér ikke efter "pakke"?!? - og ja! der er en kolonne i db som hedder "pakke" ~;]

SELECT * FROM huse WHERE aktiv='ja' AND omraade LIKE 'Aalborg' AND storrelse='70' AND sovepladser='1' AND soverum='2' AND husdyr='ja' AND swimmingpool='ja' AND tv='ja' AND korestolsegnet='ja' ORDER BY pakke DESC
Avatar billede softspot Forsker
30. marts 2006 - 09:50 #8
Hvad ligger der i feltet pakke?

..og et svar herfra :)
Avatar billede Slettet bruger
30. marts 2006 - 09:53 #9
"alm" og "plus"
Avatar billede softspot Forsker
30. marts 2006 - 09:59 #10
ja, det er da noget spøjst hvis den ikke kan finde ud af at sortere det!

Hvordan ser dit output og din kode ud? Der må være noget andet galt.
Avatar billede Slettet bruger
30. marts 2006 - 10:01 #11
strSoegesql = "SELECT * FROM huse WHERE aktiv='ja'";
       
        if (!(strOmraade == "")) {
            strSoegesql = strSoegesql + " AND omraade LIKE '" + strOmraade + "'";
        }
       
        if (intStorrelse > 0) {
            strSoegesql = strSoegesql + " AND storrelse='" + strStorrelse + "'";
        }
           
        if (intSovepladser > 0) {
            strSoegesql = strSoegesql + " AND sovepladser='" + strSovepladser + "'";
        }
       
        if (intSoverum > 0) {
            strSoegesql = strSoegesql + " AND soverum='" + strSoverum + "'";
        }
       
        if (cbHusdyr.Checked) {
            strSoegesql = strSoegesql + " AND husdyr='ja' ";
        }
       
        if (cbPool.Checked) {
            strSoegesql = strSoegesql + " AND swimmingpool='ja' ";
        }
       
        if (cbTV.Checked) {
            strSoegesql = strSoegesql + " AND tv='ja' ";
        }
       
        if (cbKoerestol.Checked) {
            strSoegesql = strSoegesql + " AND korestolsegnet='ja' ";
        }
       
        strSoegesql = strSoegesql + " ORDER BY id DESC";
Avatar billede Slettet bruger
30. marts 2006 - 10:02 #12
Det er selvfølgelig

strSoegesql = strSoegesql + " ORDER BY pakke DESC";

Duh!!
Avatar billede softspot Forsker
30. marts 2006 - 10:07 #13
;-)

Er du i øvrigt opmærksom på += operatoren i C#, dvs. i stedet for

  strSoegesql = strSoegesql + "";

kan du skrive

  strSoegesql += "";

det giver samme resultat.
Avatar billede Slettet bruger
30. marts 2006 - 10:12 #14
Hm! Søgefunktionen virker ok, men det er ligesom den undgår alle pluspakkerne, og det er dem jeg vil havde den til at finde først ~;]
Avatar billede imago-dei Nybegynder
30. marts 2006 - 10:16 #15
Giver queryen de rigtige resultater hvis du undlader at sortere?

Hvorfor har du iøvrigt både f.eks. intSovepladser og strSovepladser? Det er jo unødvendigt med strSovepladser, da du sagtens kan konkatenere en string med en int.
Avatar billede softspot Forsker
30. marts 2006 - 10:16 #16
Har du undersøgt om der overhovedet er nogen pluspakker der lever op til de kriterier som i øvrigt findes i din SQL-sætning?
Avatar billede Slettet bruger
30. marts 2006 - 10:19 #17
Her er en anden Sql-sætning fra samme site som virker efter hensigten...

"Select * FROM huse WHERE aktiv = 'ja' ORDER BY pakke DESC;";
Avatar billede softspot Forsker
30. marts 2006 - 10:22 #18
Ja, men så er det jo nok fordi de andre kriterier udelukker alle pluspakkerne... :)
Avatar billede Slettet bruger
30. marts 2006 - 14:07 #19
Har gransket lidt i sagen! Søger jeg på alt andet end "Område" finder den pluspakkerne først som den skal. Søges der under "Område" udelukkes pluspakkerne helt?!?...
Avatar billede softspot Forsker
30. marts 2006 - 14:12 #20
Når du så kigger på data for det område du søger i, findes der så nogle pluspakker der falder i den kategori?

Du er opmærksom på at LIKE skal bruge % (eller * alt efter hvilken database du bruger) for at lede efter et mønster, ikk? Ellers leder den bare efter den streng du angiver efter LIKE-nøgleordet, f.eks. Aalborg som i et af dine tidligere indlæg.

Prøv f.eks.

        if (!(strOmraade == "")) {
            strSoegesql = strSoegesql + " AND omraade LIKE '%" + strOmraade + "%'";
        }
Avatar billede Slettet bruger
30. marts 2006 - 14:16 #21
Lige nøjagtigt! SÅ virker skidtet ~;]
Avatar billede softspot Forsker
30. marts 2006 - 14:23 #22
Tak for point :)
Avatar billede casualty Nybegynder
30. marts 2006 - 15:42 #23
Tak herfra også...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester