Avatar billede janomel Nybegynder
19. juli 2005 - 09:48 Der er 23 kommentarer og
2 løsninger

Hvordan kan jeg løse denne fejl. Der er ikke angivet nogen osv

Hej

Dette er sådan set udspringer fra en tideliger tråd, men løb ind i nye problemmer, som jeg ik kan komme videre med.

Får denne fejl:
Der er ikke angivet nogen kommandotekst for kommandoobjektet.
left.asp, line 5

Hvor Linje 5 er:
Set RS = Conn.Execute(strSQL)

Koden er:
<%
' SQL forespørgsel
Dim sprog
Set RS = Conn.Execute(strSQL)
if Request.QueryString("language") = "dk" Then
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
elseif Request.QueryString("language") = "uk" Then
  strSQL = "Select ID,menu_uk AS sprog,link from menu"
else
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
end if

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>

Jeg ved hvirklig ik hvad der er galt, eller hvad det er jeg mangler.

PÅ forhånd tak
Jan
Avatar billede medions Nybegynder
19. juli 2005 - 09:54 #1
Hvorfor gør du ikke blot sådan her?

If Request.QueryString("language") <> "" Then
    strSQL = "Select [ID],menu_" & Request.QueryString("language") & " AS sprog,[link] from menu"
Else
    strSQL = "Select [ID],menu_dk AS sprog,[link] from menu"
End If

//>Rune
Avatar billede janomel Nybegynder
19. juli 2005 - 09:58 #2
Mener du at koden i sin helhed skal se sådan ud:

<%
If Request.QueryString("language") <> "" Then
    strSQL = "Select [ID],menu_" & Request.QueryString("language") & " AS sprog,[link] from menu"
Else
    strSQL = "Select [ID],menu_dk AS sprog,[link] from menu"
End If

Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>
Avatar billede busschou Praktikant
19. juli 2005 - 10:02 #3
Fejlen skyldes vel logisk nok at du har denne her
Set RS = Conn.Execute(strSQL)
oven over din definition af strSQL
sæt den nedenunder
Avatar billede janomel Nybegynder
19. juli 2005 - 10:02 #4
medions: Dit forslag ser godt ud, men ændre ik på den fejl meddelse jeg får, hmmm underligt
Avatar billede busschou Praktikant
19. juli 2005 - 10:02 #5
altså
<%
' SQL forespørgsel
Dim sprog

if Request.QueryString("language") = "dk" Then
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
elseif Request.QueryString("language") = "uk" Then
  strSQL = "Select ID,menu_uk AS sprog,link from menu"
else
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
end if

Set RS = Conn.Execute(strSQL)

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>
Avatar billede busschou Praktikant
19. juli 2005 - 10:02 #6
fordi du prøver at execute din strSQL før du har defineret den vil jeg tro
---
<%
' SQL forespørgsel
Dim sprog

if Request.QueryString("language") = "dk" Then
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
elseif Request.QueryString("language") = "uk" Then
  strSQL = "Select ID,menu_uk AS sprog,link from menu"
else
  strSQL = "Select ID,menu_dk AS sprog,link from menu"
end if

Set RS = Conn.Execute(strSQL)

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>
Avatar billede busschou Praktikant
19. juli 2005 - 10:03 #7
og så var der ged i min computerforbindelse, så undskyld den kom to gange :o/
Avatar billede janomel Nybegynder
19. juli 2005 - 10:10 #8
busschou: Jeg takker utrolig mange gange. Det er herligt at nogle gider at kigge på ens kode:
Medions og tak for det fine forslag om samskrivning af kode. Men desværre er jeg ik så god at jeg bare kan have det samskrevet i enkler linjer, da jeg mister overblikket over selve koden, men tak
Avatar billede busschou Praktikant
19. juli 2005 - 10:14 #9
Det var så lidt da og tak for point :o)
--
Der er i øvrigt mange måder at lave det på, medions metode ville jeg ikke selv bruge som den står da den åbner op for sql injection som kan skade din database
Avatar billede janomel Nybegynder
19. juli 2005 - 10:33 #10
Ok, takker for advarelsen. Men hvis nu jeg skal have flere sprog, hvordan ville det så evt kunne lade sig gøre?
Avatar billede medions Nybegynder
19. juli 2005 - 10:38 #11
busschou> Det er korrekt, men jeg ville jo måske så evt. ligge det i en session som var lidt mere enklere, eller lave et check for og se om den matcher sammen med de land som er mulige i database eller ligendende... - som du selv siger, der er mange måder :)

//>Rune
Avatar billede busschou Praktikant
19. juli 2005 - 10:38 #12
jeg ville foreslå du lavede en select, så behøves du heller ikke bekymre dig om sql injection den vej igennem, og det ser også mere overskueligt ud
---
sprog = request.querystring("language")
Select Case sprog
  Case "dk"  strSql = "Select ID,menu_dk AS sprog,link from menu"
  Case "uk"  strSql = "Select ID,menu_uk AS sprog,link from menu"
  Case "no"  strSql = "Select ID,menu_no AS sprog,link from menu"
  Case "se"  strSql = "Select ID,menu_se AS sprog,link from menu"
  Case Else  strSql = "Select ID,menu_dk AS sprog,link from menu"
End Select
Avatar billede janomel Nybegynder
19. juli 2005 - 10:40 #13
Min Løsning:<%
' SQL forespørgsel
Dim sprog
if Request.QueryString("language") = "dk" Then
  strSQL = "Select ID,menu_dk AS sprog,link from menu"

   
elseif Request.QueryString("language") = "de" Then
  strSQL = "Select ID,menu_de AS sprog,link from menu" 
 
elseif Request.QueryString("language") = "uk" Then
  strSQL = "Select ID,menu_uk AS sprog,link from menu"
 
else
  strSQL = "Select ID,menu_dk AS sprog,link from menu" 
end if

' Set RS skal komme efter SQL forespørgsel for at lukke tro jeg nok
Set RS = Conn.Execute(strSQL)

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>

Forslag modtagels meget gerne
Avatar billede busschou Praktikant
19. juli 2005 - 10:44 #14
janomel >> jeg vil foreslå mit forslaf 10:38:17 , ja det er måske ikke så kompakt, men overskueligt. Og Select er bedre en IF statements når der er mange Else !
medions nævner noget om at tjekke med om sproget findes i databasen først, hvordan ved jeg ikke lige, men det synes jeg er upraktisk. Det er jo dobbelttjek hvor det ikke er nødvendig, blot for at gøre sin kode mere kompakt
Men det må vel være en smags sag
Avatar billede janomel Nybegynder
19. juli 2005 - 10:49 #15
Kan god se at case er meget nemmer.

For god ordensskyld kode:
<%
sprog = request.querystring("language")
Select Case sprog
  Case "dk"  strSql = "Select ID,menu_dk AS sprog,link from menu"
  Case "uk"  strSql = "Select ID,menu_uk AS sprog,link from menu"
  Case "de"  strSql = "Select ID,menu_de AS sprog,link from menu"
  Case "no"  strSql = "Select ID,menu_no AS sprog,link from menu"
  Case "se"  strSql = "Select ID,menu_se AS sprog,link from menu"
  Case Else  strSql = "Select ID,menu_dk AS sprog,link from menu"
End Select

' Set RS skal komme efter SQL forespørgsel for at lukke tro jeg nok
Set RS = Conn.Execute(strSQL)

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
%>

busschou: Skal jeg ik oprette spørgsmål så du kan få point for den løsning som er langt mere optimal end udgangspunktet
Avatar billede busschou Praktikant
19. juli 2005 - 10:56 #16
ja det er rigtig som du skriver det der, dvs det må du jo også kunne se på din skærm jo :o)

Hvis det er at man gerne vil have koden samlet og overskuelig, så kan man jo putte det hele ind i en funktion som man så kalder
---
<%
sprog = request.querystring("language")
strSQL = getSql(sprog)

' Set RS skal komme efter SQL forespørgsel for at lukke tro jeg nok
Set RS = Conn.Execute(strSQL)

'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")

Function getSql(sprog)
  Select Case sprog
    Case "dk"  getSql = "Select ID,menu_dk AS sprog,link from menu"
    Case "uk"  getSql = "Select ID,menu_uk AS sprog,link from menu"
    Case "de"  getSql = "Select ID,menu_de AS sprog,link from menu"
    Case "no"  getSql = "Select ID,menu_no AS sprog,link from menu"
    Case "se"  getSql = "Select ID,menu_se AS sprog,link from menu"
    Case Else  getSql = "Select ID,menu_dk AS sprog,link from menu"
  End Select
End Function
%>
---
Funktionen kan man placere lige hvor man ønsker det i sit asp dokument
Man kan også gemme alle sine funktioner i en seperat fil som man så inkluderer på siden
Herved kan ens kode så blive det mere overskuelig hvis man ønsker det :o)
Det er jo alt sammen an på hvordan man selv bedst synes om det, så det var bare en tanke

Angående point, så tror jeg ikke du må oprette et spørgsmål du allerede har fået svar på, men du må vist gerne oprette en point spørgsmål hvor der blot er en reference til det her spørgsmål med en kommentar om "som svar på ekstra spørgsmål" eller noget, mere så ingen får ondt i bagen :o)
Avatar billede janomel Nybegynder
19. juli 2005 - 10:57 #17
Hvis der skulle være ændre der vil benytte dette her så ser min tabel så ledes ud:
ID - Nøglen
menu_dk - Dansk tekst
menu_uk - Engelsk tekst
menu_de - Tysk tekst
Link - selve link til siden. Være ops på det med mappe struktur (henvisninger)

Man kan meget nemt tiljøje flere sprog. Ved ikke mht flere funktioner etc
Avatar billede busschou Praktikant
19. juli 2005 - 11:00 #18
ok, altså du kan jo bare fjerne no og se , det var blot for at vise hvordan det kan gøres, så er det nemt at implementere nye sprog og fjerne forældede
Avatar billede janomel Nybegynder
19. juli 2005 - 11:03 #19
Ja det må siges, det er nemt og takker, for det. Nu skulle jeg bare bruge tysk, Men denne tråd, kan forhåbenlig hjælpe ændre der komme, i samme problemstilling. Da det er en overskuelig løsning og nem at arbejde med :)
Avatar billede janomel Nybegynder
19. juli 2005 - 11:41 #20
busschou: Har endnu et tillægs spørgsmål ang nye poster i db der ik vil skrives ud, Skaljeg oprette nyt spørgsmå bl.a. pga point
Avatar billede busschou Praktikant
19. juli 2005 - 11:42 #21
det bestemmer du selv - fordelen ved et nyt spørgsmål er nok at så er der flere som ser det :o)
Avatar billede janomel Nybegynder
19. juli 2005 - 11:56 #22
Ja det har du ret i, Men det var fordi at for at få koden til at udskrive næste post manglede jeg noget:

Do While Not rs.EOF
'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
rs.MoveNext 
Loop
%>

Så koden kommer til at se sådan ud

<%
'SQl udtræk fra databaseb via Case
sprog = request.querystring("language")
Select Case sprog
  Case "dk"  strSql = "Select ID,menu_dk AS sprog,link from menu"
  Case "uk"  strSql = "Select ID,menu_uk AS sprog,link from menu"
  Case "de"  strSql = "Select ID,menu_de AS sprog,link from menu"
  Case "no"  strSql = "Select ID,menu_no AS sprog,link from menu"
  Case "se"  strSql = "Select ID,menu_se AS sprog,link from menu"
  Case Else  strSql = "Select ID,menu_dk AS sprog,link from menu"
End Select

' Set RS skal komme efter SQL forespørgsel for at lukke tro jeg nok
Set RS = Conn.Execute(strSQL)

Do While Not rs.EOF
'Udskrivning til skærm
Response.Write("<A HREF=""" & RS("link") & """>" & RS("sprog") & "</A>")
rs.MoveNext 
Loop
%>

Så burde det vel være, fuldt endt, mht, at få en menu på flere sprog og hente en side.Men nu komme det store arbejde i det med at få noget entligt indehold ud.
Avatar billede busschou Praktikant
19. juli 2005 - 11:59 #23
jup jup så løber den det hele igennem ja
Avatar billede janomel Nybegynder
19. juli 2005 - 12:09 #24
*g* Ja smart ikke :) Der kan da være fordele ved at få resten af db med *g*
Avatar billede janomel Nybegynder
19. juli 2005 - 13:55 #25
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