28. juli 2005 - 11:12Der er
28 kommentarer og 1 løsning
Har brug for hjælp til denne kode (case)
Hej alle....
Jeg har endnu engang brug for jeres hjælp. Jeg har forsøgt mig at lave koden sådan, at jeg alt efter "case" får forskellige overskrifter frem med tilhørende URl.....
Men kan ikke få det til at virke: Kode er:
<% 'Udvælg overskrift udfra sprog gemt i session Select Case Session("Sprog") Case "dk" strOver = "Overskrift_dk" Case "uk" strOver = "Overskrift_uk" Case "de" strOver = "Overskrift_de" Case else strOver = "Overskrift_dk" End Select
'sql sætning, CInt fordi id er et tal strSQL = "Select * From Historie Where KategoriId = "& CInt(Request.Querystring("id"))
'udføsel af sqlsætning - RS indeholder nu det som opfylder sql sætningen Set RS = Conn.Execute(strSQL)
' Det der skal skrives ud strNavn = RS(Session("sprog")) & "<p> "
' lav et link til historie_indhold.asp med Id-værdien i URL strLink = "<a href='historie_indhold.asp?id=" & rs("Id") & "'>" & strNavn & "</a>"
'Hvis RS indeholder noget (Not RS.EOF betyder "ikke er tom") If Not RS.EOF Then 'Udskrivning til skærm. Først overskriften der efter teksten Response.Write RS(strOver) Response.Write " " & rs("Pic") & " " & " " & strLink & " " End If
%>
den fejlmeddelse jeg får er: Fejltype: ADODB.Recordset (0x800A0CC1) Elementet kan ikke findes i den samling, der svarer til det anmodede navn eller ordenstal. /historie_kat.asp, line 28
hvor linje 28 er: strNavn = RS(Session("sprog")) & "<p> "
mon ikke det du mener er følgende? strNavn = RS(strOver) & "<p> " For session("sprog") er jo fx lig "dk" Men i din tabel så vidt jeg husker har du ikke "dk" men Overskift_dk
nej men der er flere forskellige sprog afhængig af den session ;o) -- Du må vide hvad feltet hedder i din tabel? strNavn = RS("????") <--- feltets navn skal stå ved ????
det er meget simpelt Hvad er det du ønsker strNavn skal være? Det skal stå i dit link kan jeg se, hvad hedder feltet i databasen som det er at du ønsker skal stå der?
Så vidt jeg husker har du det hele i een tabel ikke sandt? Hvis jeg var dig ville jeg måske overveje at lave strukturen om så du har een tabel for hvert sprog Så vil felterne i de forskellige tabeller hedde det samme Men du vil ud fra din session arbejde på forskellige tabeller Det tror jeg ville gøre det mere overskueligt for dig i længden Men bare en ide :o)
jeg ønsker at få hevet: Overskrift_dk, Overskrift_uk, Overskrift_de ud af db alt efter brugerens valg. Hvor disse "overskrifer" så skal danne link til historie_indhold.asp med efterfølgende dater
Jeg er "kun" i første omgang intersseret i at hive en overskrift ud... Altså ikke det vilde i det. Men svært at få til at gøre som jeg vil :)
Det med at splitte den ud på flere tabeller. Kan jeg ikke helt overskue, da jeg i så fald får utrolige mange tabeller. pt. kan jeg holde mig til under 10 tabeller med den opbygning jeg har. Hvis jeg splitter dem ud vil jeg jo få betydelig flere... Ved ikke så meget til access så jeg kan styre det
Det er også ok når det kun er overskriften :o) Jeg tænkte mere hvis der så også var andet tekst osv i tabellen -- Men så bør det altså også virke med strNavn = RS("Navn") Hvis det da er feltet "Navn" du ønsker skal stå i dit link
kan godt være at jeg har fået rodet noget rundt i det.... Men i tabellen har jeg ik en kolone "navn" Det jeg ønsker er at den pågældende overskrift Skal stå der i stedet.... Jeg brugte "navn" som en eller anden form for ((kald)) i selve koden
Men med - strNavn = RS("Navn") for jeg sammen fejlmeddelse
jeg har flere kolonner i min tabel, men det ønsker jeg ikke at bruge her.. Siden skal ""bare"" vise oversigts indehold fra tabellen via nogle overskrifter samt tilhørende billede
jeg tror du vil gøre dig selv en tjeneste ved at kalde ting som er det samme for det samme Det er forvirrende at en overskrift på en gang hedder overskrift og navn hvis du kan følge mig :o) Så jeg ville selv rette følgende: ----- ' Det der skal skrives ud strNavn = RS(Session("sprog")) & "<p> "
' lav et link til historie_indhold.asp med Id-værdien i URL strLink = "<a href='historie_indhold.asp?id=" & rs("Id") & "'>" & strNavn & "</a>" ------ til ------ ' lav et link til historie_indhold.asp med Id-værdien i URL strLink = "<a href='historie_indhold.asp?id=" & rs("Id") & "'>" & rs(strOver) & "</a>"
Men men men ;o) Du skal også have det hele ind i dit tjek for om den indeholder noget :o) ------ <% 'Udvælg overskrift udfra sprog gemt i session Select Case Session("Sprog") Case "dk" strOver = "Overskrift_dk" Case "uk" strOver = "Overskrift_uk" Case "de" strOver = "Overskrift_de" Case else strOver = "Overskrift_dk" End Select
'sql sætning, CInt fordi id er et tal strSQL = "Select * From Historie Where KategoriId = "& CInt(Request.Querystring("id"))
'udføsel af sqlsætning - RS indeholder nu det som opfylder sql sætningen Set RS = Conn.Execute(strSQL)
'Hvis RS indeholder noget (Not RS.EOF betyder "ikke er tom") If Not RS.EOF Then ' lav et link til historie_indhold.asp med Id-værdien i URL strLink = "<a href='historie_indhold.asp?id=" & rs("Id") & "'>" & rs(strOver) & "</a>" ' Udskrivning til skærm. Først overskriften der efter teksten Response.Write " " & rs("Pic") & " " & " " & strLink & " " End If %>
Men vil lige sige at "Navn" er noget jeg selv har fundet på i koden, ikke noget der findes i tabellerne... Men er mere eller mindre overbevist om at det er fuldstændig forkert at "opfinde" et ord til brug i kode... Jeg troede bare det er rigtig....
Jeg jeg forstår simpelhen bare ikke, hvordan "asp" hitte ud af det med den case.. For jeg "fortæller" jo ikke hveilken en af de case der skal "skrives til skærm"
Du har jo en side hvor du sætter en session indeholdende fx DK hvis det er dansk sprog Denne session huskes ligeså længe brugeren er på dit site og er aktiv! Select Case går ind og finder ud af om der står DK eller UK osv i din session Ud fra det laver den en variabel strOver som indeholder det navn i din tabel som svarer til overskriften på det i sessionen angivne sprog strOver har du til rådighed på hele den asp side du er på rs(strOver) indeholder overskriften i tabellen, idet at rs(strOver) fx så er rs("Overskrift_dk")
en case sætning svarer bare til en lang if else --- if x = a then a1 elseif x = b then b1 elseif x = c then c1 else d1 end if --- svarer til --- select case x case a a1 case b b1 case c c1 case else d1
det kommer nok stille og rolig, ellers spørger du bare :o)
Synes godt om
Ny brugerNybegynder
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.