Avatar billede kjaergaardanders Nybegynder
12. marts 2009 - 10:14 Der er 8 kommentarer og
1 løsning

Vis der er mere end 12 poster, så udskrives tekst fra DB ikke ????

hej, mit problem er, at når jeg når over tbartikel.aid unikid 12 så udskriver sql sætningen ikke <%=rsartikel("bartikel")%> og  <%=replace(rsartikel("brodtekst"),vbcrlf,"<br />")%> men den vil gerne udskrive <img src="upload/_<%=rsartikel2("bnavn")%>" />, så jeg får et billede i min artikel, men ingen tekst, når jeg udskriver alt over post nummer 12 ???



<%
CASE "visartikel"
    varVisAid = request.QueryString("visaid")
   
    if not isnumeric(varVisAid) then
    ' vis den modtaget værdi ikke er tal så response.write
    Response.Write "Ugyldig gruppe!"
    Response.End
  end if
 
    sqlartikel = "SELECT * FROM tbbilleder INNER JOIN tbartikel ON tbartikel.aid = tbbilleder.bid WHERE tbartikel.aid = " & varVisAid
      set rsartikel = conn.execute(sqlartikel) 
   
    sqlartikel2 = "SELECT * FROM tbbilleder INNER JOIN tbartikel ON tbartikel.aid = tbbilleder.bartikel WHERE tbartikel.aid = " & varVisAid
      set rsartikel2 = conn.execute(sqlartikel2) 
   
   
    sqlbilledegalleri = "SELECT * FROM tbbilleder WHERE tbbilleder.bartikel=" & varVisAid
    set rsbilledegalleri = conn.execute(sqlbilledegalleri)
   
    do until rsartikel.eof
    %>
    <div id="artikelGalleri">
    <div id="blaarammetilgalleri">
   
    <p class="overskrift">
    <%=rsartikel("overskrift")%>
    </p>
   
    </div>
    <div id="teksttilgalleri">
  <%=rsartikel("bartikel")%>
    <%=replace(rsartikel("brodtekst"),vbcrlf,"<br />")%>
   
    </div> 
    <div id="billedetilartikel">
   
    <img src="upload/_<%=rsartikel2("bnavn")%>" />
    </div>
    </div>           
   
   
    <%
    rsartikel.movenext
    loop
   
    %>
   
    <%do until rsbilledegalleri.eof%>
   
    <div id="billedetilgalleri">
    <a href="default.asp?case=visbillede&menuid=<%=varMenuId%>&vbid=<%=rsbilledegalleri("bid")%>"/>
 
    <img src="upload/_<%=rsbilledegalleri("bnavn")%>" style="border-style: none"/>
    </a>   
    </div>
    <%
    rsbilledegalleri.movenext
    loop
    rsbilledegalleri.close
      set rsbilledegalleri = nothing
      conn.close
      set conn = nothing
    %>
Avatar billede softspot Forsker
12. marts 2009 - 12:06 #1
Jeg vil gætte på at du har defineret felterne artikel og brodtekst som "text" (eller "memo"/"notat" i access) i databasen...? I så fald er du nok kommet i konflikt med en optimering i forbindelse med udtræk af blobfelter fra databaser. Såvidt jeg er informeret, kan man ikke regne med at alt i et blobfelt trækkes med ud, da blobfelter pr. definition kan indeholde uendeligt store mængder data (hvilket jo potentielt set kan give et ret stort resultat ;-))

Derfor skal du nok benytte getchunk for at hente disse felter fra dit resultat. Jeg har imidlertid ikke arbejdet med getchunk, så jeg kan ikke give dig et fiks og færdig eksempel, men det burde være muligt at finde nogle eksempler via Google...

Iflg. denne ADO API Reference: http://msdn.microsoft.com/en-us/library/ms681747(VS.85).aspx burde det være et spørgsmål om at kalde GetChunk iterativt, indtil du ikke får flere data tilbage fra kaldet...

Alternativt kan du nøjes med at udtrække en del af felternes tekst (hvis det er til en oversigt, vil man vel typisk ikke have hele teksten med tilbage, men bare en delmængde). Din SQL skal altså sørge for kun at returner f.eks. de første 300 tegn fra teksterne (dette kan typisk gøre med noget SQL á la "LEFT(brodtekst, 300) AS brodtekst"). Dette ville også være en mere effektiv måde at udtrække data på, hvis du udtrækker til lister/oversigter (frem for at udtrække ALLE data)...
Avatar billede kjaergaardanders Nybegynder
12. marts 2009 - 13:49 #2
ok hmmm, jeg har først en oversigt, hvor jeg vælger en artikel, detlan man ikke se i den her kode, så trykker jeg på en artikel for at få vist indholdet, vis artiklen så har et højrer ID end 12, får jeg ingen tekst, i min artikel når jeg loader den ?, men sjovt nok får jeg vist billedet. overskriften er varchar, og brødteksten er longtekst, databasen er mysql 5.0, jeg håber det gav lidt mere info ?
Avatar billede softspot Forsker
12. marts 2009 - 14:02 #3
Hmm... ja, jeg har desværre ikke nogen erfaring med MySQL, så jeg ved ikke hvordan den håndterer disse felttyper, men jeg har lidt på fornemmelsen at den "optimering" også ligger i ADO.

Prøv evt. eksplicit at specificere de felter du ønsker at udtrække fra tabellen i stedet for at benytte asterisk (*) og så placér longtekst-felterne til sidst i feltlisten. Eksempelvis:

SELECT id, overskrift, artikel, brodtekst FROM tabel

Jeg synes at kunne huske, at ADO i samspil med SQL Server havde et problem med at placere blobfelter midt i feltlisten - det kan være problemet også findes i ADO i samspil med MySQL...
Avatar billede kjaergaardanders Nybegynder
13. marts 2009 - 08:15 #4
ok jeg har specificere mine felter, i min select sætning, i stedet for *

sqlartikel = "SELECT aid, overskrift, brodtekst, gruppe, bnavn, blokation, bartikel FROM tbbilleder INNER JOIN tbartikel ON tbartikel.aid = tbbilleder.bid WHERE tbartikel.aid = " & varVisAid
      set rsartikel = conn.execute(sqlartikel)

problemet er overskrift og brodtekst, dem vil den ikke udskrive, vis artiklen har et id over 12, men billederne til artiklen, bliver vist, vis jeg fjerner feltet brodtekst i min select sætning, skriver den fejl, ved alle artikler, der har et id under 13, alle id'er over 12 viser stadig kun billede, men ingen fejl, det er som om der ingen forbindelse er mellem min rs sætning og min select sætning, når værdien er over 12 ?
Avatar billede softspot Forsker
13. marts 2009 - 12:59 #5
Har du prøvet at fjerne where-delen af din SQL?

Desuden var det jeg forsøgte at foreslå, at du flyttede felterne i feltlisten, så de stod til sidst, således:

sqlartikel = "SELECT aid, gruppe, bnavn, blokation, bartikel, overskrift, brodtekst FROM tbbilleder INNER JOIN tbartikel ON tbartikel.aid = tbbilleder.bid WHERE tbartikel.aid = " & varVisAid

Jeg ved ikke om det har noget at sige, men da det har været et problem for andre databasedrivere før, kan det nok også forekomme i andre drivere (lidt mistænksom har man vel lov at være) :-)
Avatar billede kjaergaardanders Nybegynder
14. marts 2009 - 01:16 #6
ok jeg fik det til at virke min sql ser sådan her ud nu, hey softspot, vis du vil havde point, så smide svar :-)

sqlartikel = "SELECT * FROM tbbilleder INNER JOIN tbartikel ON tbartikel.aid = tbbilleder.bartikel WHERE tbbilleder.bartikel = "&varVisAid&" GROUP BY aid"
    set rsartikel = conn.execute(sqlartikel)
Avatar billede softspot Forsker
14. marts 2009 - 01:24 #7
Øøøh, interessant at en GROUP BY kan løse det problem!?!

Anyway! Hvad med en point-deler...?
Avatar billede kjaergaardanders Nybegynder
14. marts 2009 - 17:45 #8
group by var en del af løsningen, jeg sammen køre tbartikel.aid = tbbilleder.bartikel, så udskriver siden, artiklen lige så mange gang der er billeder, jeg laver så en group by på aid som er artikels id, så lige meget hvor mange gang den gentager billede, vil artiklen, blive grupperet til en artikel.
Avatar billede softspot Forsker
14. marts 2009 - 20:32 #9
OK, på den måde.

Tak for point :-)
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