Avatar billede frank74 Nybegynder
24. juni 2010 - 14:13 Der er 6 kommentarer og
1 løsning

Hjælp til SQL sætning

Nogen der hurtigt lige kan se hvad der er galt med denne sætning?
-----------------------------------------------------------------
Set YYYY = Request.Form("YYYY")

strSQL = "Select * From Kalender Where Arkiv = 'Nej' AND Aar = YYYY Order By " & sort & ""
Avatar billede michael_stim Ekspert
24. juni 2010 - 14:31 #1
strSQL = "Select * From Kalender Where Arkiv = 'Nej' AND Aar = 'YYYY' Order By " & sort & ""
Avatar billede michael_stim Ekspert
24. juni 2010 - 15:04 #2
Så gør det til en vane at skrive SQL syntax med stort og andet med småt. Så slipper du for evt. problemer med store og små bogstaver og det er lettere at tyde koden ;o)

strSQL = "SELECT * FROM kalender WHERE arkiv = 'Nej' AND aar = 'YYYY' ORDER BY " & sort & ""

Det kræver jo at tabelnavne osv også er skrevet med små bogstaver ;o)
Avatar billede softspot Forsker
24. juni 2010 - 17:21 #3
Umiddelbart vil jeg tro du mener dette:

strSQL = "SELECT * FROM Kalender WHERE Arkiv = 'Nej' AND Aar = " & YYYY & " ORDER BY " & sort

da YYYY er en VBScript-variabel, som skal flettes ind i SQL-sætningen. Overvej i øvrigt beskyttelse mod SQL-injections med brug af parameteriserede forespørgsler (se f.eks. min artikel her på Eksperten vedr. dette emne: http://www.eksperten.dk/guide/1250)

michael >> Er tabelnavne case sensitive i MS SQL Server? Det synes jeg ikke jeg har oplevet... jeg ved ikke hvordan det forholder sig med MySQL. Bort set fra det er jeg da enig i, at man skal finde en kodestil/-standard (herunder navngivning af variable i kode, samt tabel- og feltnavne i databaser) og så holde sig til den hele vejen igennem sit system... :-)
Avatar billede frank74 Nybegynder
25. juni 2010 - 08:10 #4
michael_stim -> Det virker umiddelbart ikke. Men det er en god ide med det med store og små bogstaver. Det gør det også mere overskueligt. ;-)

softspot -> Det virker som det skal. Men det gør min "sort" bare ikke mere... Når jeg prøver at sortere min liste får jeg følgende fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Arkiv = 'Nej' AND Aar ='.
Avatar billede softspot Forsker
25. juni 2010 - 12:12 #5
Prøv lige at benytte disse 3 linjer i stedet for dine egne:

sort = "ASC"
YYYY = Request("YYYY") & ""
strSQL = "SELECT * FROM Kalender WHERE Arkiv = 'Nej' AND Aar = " & YYYY & " ORDER BY " & sort

Prøv så at kalde din side direkte fra adressebaren i din browser og se om det fungerer. Du kan nu både specificere YYYY i url som parameter (GET-metoden), f.eks. http://www.ditdomæne.dk/side.asp?YYYY=2010, eller i en formular der sendes med POST-metoden.

Der er flere potentielle problemer med dine 2 linjer kode. Først er det ikke Set der skal benyttes når man tildeler en basistype, så som string, til en variabel. Der skal enten benyttes Let eller ingenting foran variabelnavnet da let er standard/implicit for variabeltildeling i VBScript (den sidste er mest gængs).

Dernæst henter du værdien fra en formvariabel, hvilket betyder at data skal sendes til siden med POST-metoden og altså ikke kan være en del af url'en. Ved at benytte request("YYYY") søges der både i querystring- og form-collections (og servervariables) på request-objektet for at finde værdien. Dette er ikke en metode jeg anbefaler, da den kræver flere resurser af serveren, men indtil du er helt afklaret med hvor data skal hentes, kan du jo bruge den som en slags fejlfindingsmetode for at få skudt dig ind på, hvor fejlen kan være opstået.
Avatar billede frank74 Nybegynder
30. juni 2010 - 10:27 #6
Jeg har droppet den funktion med at man kan sortere. Den blev alligevel aldrig brugt. ;-)

Ellers tak for hjælpen. Smider du lige et svar?
Avatar billede softspot Forsker
30. juni 2010 - 11:37 #7
:-)
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
Kurser inden for grundlæggende programmering

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