19. juli 2005 - 09:48Der 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
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
<% 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
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
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
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
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
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 :)
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
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
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)
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)
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)
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
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
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 :)
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.
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.