Avatar billede janomel Nybegynder
28. juli 2005 - 11:12 Der 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> "


Hvad søren er det at jeg laver forkert.....

//jan
Avatar billede busschou Praktikant
28. juli 2005 - 11:14 #1
fejlen betyder helt simpelt at der i din tabel ikke findes et navn lig det navn som står i din Session("sprog")
Avatar billede busschou Praktikant
28. juli 2005 - 11:16 #2
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
Avatar billede inglenook Praktikant
28. juli 2005 - 11:17 #3
proev:  strNavn = RS("sprog") & "<p> "

udtraek fra DB har jo ikke noget med Session at goere.....
Avatar billede busschou Praktikant
28. juli 2005 - 11:18 #4
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 ????
Avatar billede janomel Nybegynder
28. juli 2005 - 11:19 #5
busschou >> hej....

Jeg har i min tabel de nævnte koloner Overskrift_dk, Overskrift_uk, Overskrift_de så jeg forstår ikke hvad det er jeg gøre forkert....

har læst på www.w3schools.com til at starte med, samt indlpæg her.. Men kan ikke hitte ud af det....

Har du evt en løsning
Avatar billede busschou Praktikant
28. juli 2005 - 11:20 #6
Du skriver jo overskriften og pic ud senere i en løkke?
Så jeg forstår slet ikke hvad du ønsker strNavn skal indeholde ??
Avatar billede busschou Praktikant
28. juli 2005 - 11:20 #7
mener du måske
strNavn = RS("Navn")  ?
Avatar billede janomel Nybegynder
28. juli 2005 - 11:21 #8
Men hvordan søren er det lige at jeg får "dk" ind i billedet. I mine øjne beder jeg jo asp koden om at hente bl.a. Overskift_dk
Avatar billede busschou Praktikant
28. juli 2005 - 11:23 #9
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?
Avatar billede janomel Nybegynder
28. juli 2005 - 11:23 #10
strNavn = RS("Navn")  ja, men hvordan søren skal jeg så få min session men ind i billedet
Avatar billede busschou Praktikant
28. juli 2005 - 11:24 #11
din session som jeg ser det benytter du kun til at vælge en overskrift med
Avatar billede busschou Praktikant
28. juli 2005 - 11:25 #12
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)
Avatar billede janomel Nybegynder
28. juli 2005 - 11:26 #13
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
Avatar billede busschou Praktikant
28. juli 2005 - 11:27 #14
ok så det er _kun_ overskriften som afhænger af sproget ?
Avatar billede busschou Praktikant
28. juli 2005 - 11:28 #15
for hvis det kun er overskriften der afhænger af sproget så har du jo taget højde for det
og så er
strNavn = RS("Navn")
vel godt nok?
Avatar billede janomel Nybegynder
28. juli 2005 - 11:30 #16
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
Avatar billede busschou Praktikant
28. juli 2005 - 11:32 #17
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
Avatar billede janomel Nybegynder
28. juli 2005 - 11:35 #18
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
Avatar billede janomel Nybegynder
28. juli 2005 - 11:39 #19
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
Avatar billede busschou Praktikant
28. juli 2005 - 11:39 #20
det er klart så skal det jo være
strNavn = RS(strOver)
Avatar billede busschou Praktikant
28. juli 2005 - 11:41 #21
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>"
Avatar billede busschou Praktikant
28. juli 2005 - 11:44 #22
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
%>
Avatar billede janomel Nybegynder
28. juli 2005 - 11:48 #23
takker,,, Det virkede efter hensigten...

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"

Håber at spørgsmålet er til at forstå
Avatar billede busschou Praktikant
28. juli 2005 - 11:56 #24
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")

håber det hjalp?
Avatar billede janomel Nybegynder
28. juli 2005 - 12:07 #25
ok på den måde, tror der er noget der er ved at fisse ind..
Avatar billede busschou Praktikant
28. juli 2005 - 12:08 #26
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
Avatar billede busschou Praktikant
28. juli 2005 - 12:09 #27
forhåbentlig ikke "fisse ind" men "fise ind" ;o)
Har du studeret html.dk også?
Det er også et rimelig ok begynder sted til at forstå småting :o)

Tak for poins
Avatar billede janomel Nybegynder
28. juli 2005 - 13:12 #28
*gggg* Næææ ik lige fi.... Men ok det var til at misforstå :)

Har kigge på html.dk... Men jeg er lidt langtid om at forstå det
Avatar billede busschou Praktikant
28. juli 2005 - 13:13 #29
det kommer nok stille og rolig, ellers spørger du bare :o)
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