12. marts 2009 - 10:14Der 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">
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)...
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 ?
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...
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 ?
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) :-)
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)
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.
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.