/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Udtræk fra Access bliver skåret ved 200 te~
Fra : Thomas Voller


Dato : 29-01-03 22:55

Hej NG.


Underligt problem: Jeg trækker nogle indlæg ud af Access 2002 database.
Datatypen i Access på en af cellerne er 'Notat', da jeg oftest har mere end
255 tegn i det felt. Men når jeg trækker du af databasen og udskriver med
ASP, så er det kun de første 204-5 tegn der bliver vist. Lidt kode:

<%
Set objRS = Server.CreateObject("ADODB.Recordset")

objRS.Open "SELECT TOP 10 Count(comment.newsid) AS AntalKommentarer, log.Id,
log.Dag, log.Tid, log.Overskrift, log.Tekst FROM log LEFT OUTER JOIN comment
ON comment.newsid = log.Id GROUP BY comment.newsid, log.Id, log.Dag,
log.Tid, log.Overskrift, log.Tekst ORDER BY log.Id DESC",
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db.mdb") &
";Persist Security Info=False", adOpenForwardOnly, adLockReadOnly, adCmdText
'Konstanterne er defineret tidligere på siden

If objRS.BOF or objRS.EOF Then
Response.Write("<p>Der er ingen poster i databasen. Enten er der sket en
teknisk fejl eller ogs&aring; er der ved at blive arbejdet med databasen.
Vend snart tilbage.</p>")
Else
Do While Not objRS.EOF
Response.Write("<h1>" & FormatDateTime(objRS("Dag"), vbShortDate) &
" &laquo;&raquo; " & FormatDateTime(objRS("Tid"), vbShortTime) & "
&laquo;&raquo; " & objRS("Overskrift") & "</h1>")
Response.Write("<p>" & objRS("Tekst") & "</p>") ' Det er denne
udskrift der kikser. Jeg får kun vist 200 tegn, selv om der er mange flere
tegn i cellen.
Response.Write("<p><a href=""arkiv.asp?tekst=" & objRS("Id") &
""">Link</a> &laquo;&raquo; ")
If objRS("AntalKommentarer") = 1 Then
Response.Write("<a
href=""javascript:comment('comment.asp?nyhed=" & objRS("Id") &
"',350,450)"">1 kommentar</a></p>")
Else
Response.Write("<a
href=""javascript:comment('comment.asp?nyhed=" & objRS("Id") &
"',350,450)"">" & objRS("AntalKommentarer") & " kommentarer</a></p>")
End if
Response.Write("<p style=""text-align: center;""><img
src=""grafik/spacer_100_50.gif"" width=""100"" height=""50"" alt=""The Space
Between"" /></p>")
objRS.MoveNext
Loop
End if
objRS.Close
Set objRS = Nothing
%>

Jeg ved sq ikke lige... Det har jeg aldrig oplevet før. Hjælp modtages
gerne.


Mvh. Thomas.

voller@voller.dk
http://voller.dk/



 
 
Søren Kaastrup (30-01-2003)
Kommentar
Fra : Søren Kaastrup


Dato : 30-01-03 09:51

Hej

Tror du ikke det er fordi den ikke skifter linie i din tekst og der så bare
ikke kan stå mere?
Ville altid hvis det er et noatat felt skrive:

Replace(Server.HTMLEncode(objrs("Teksti")),vbCrLf,"<br>")
Således den får linie skiftet med

Soeren



Thomas Voller wrote in dk.edb.internet.webdesign.serverside.asp:
> Hej NG.
>
>
> Underligt problem: Jeg trækker nogle indlæg ud af Access 2002 database.
> Datatypen i Access på en af cellerne er 'Notat', da jeg oftest har mere end
> 255 tegn i det felt. Men når jeg trækker du af databasen og udskriver med
> ASP, så er det kun de første 204-5 tegn der bliver vist. Lidt kode:
>
> <%
&gt; Set objRS = Server.CreateObject("ADODB.Recordset")
&gt;
&gt; objRS.Open "SELECT TOP 10 Count(comment.newsid) AS AntalKommentarer,
log.Id,
&gt; log.Dag, log.Tid, log.Overskrift, log.Tekst FROM log LEFT OUTER JOIN
comment
&gt; ON comment.newsid = log.Id GROUP BY comment.newsid, log.Id, log.Dag,
&gt; log.Tid, log.Overskrift, log.Tekst ORDER BY log.Id DESC",
&gt; "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
Server.MapPath("db.mdb") &
&gt; ";Persist Security Info=False", adOpenForwardOnly, adLockReadOnly,
adCmdText
&gt; 'Konstanterne er defineret tidligere på siden
&gt;
&gt; If objRS.BOF or objRS.EOF Then
&gt; Response.Write("<p>Der er ingen poster i databasen. Enten er der sket
en
&gt; teknisk fejl eller ogs&aring; er der ved at blive arbejdet med databasen.
&gt; Vend snart tilbage.</p>")
&gt; Else
&gt; Do While Not objRS.EOF
&gt; Response.Write("<h1>" & FormatDateTime(objRS("Dag"), vbShortDate)
&
&gt; " &laquo;&raquo; " & FormatDateTime(objRS("Tid"), vbShortTime) & "
&gt; &laquo;&raquo; " & objRS("Overskrift") & "</h1>")
&gt; Response.Write("<p>" & objRS("Tekst") & "</p>") ' Det er denne
&gt; udskrift der kikser. Jeg får kun vist 200 tegn, selv om der er mange
flere
&gt; tegn i cellen.
&gt; Response.Write("<p><a href=""arkiv.asp?tekst=" & objRS("Id") &
&gt; """>Link</a> &laquo;&raquo; ")
&gt; If objRS("AntalKommentarer") = 1 Then
&gt; Response.Write("<a
&gt; href=""javascript:comment('comment.asp?nyhed=" & objRS("Id") &
&gt; "',350,450)"">1 kommentar</a></p>")
&gt; Else
&gt; Response.Write("<a
&gt; href=""javascript:comment('comment.asp?nyhed=" & objRS("Id") &
&gt; "',350,450)"">" & objRS("AntalKommentarer") & " kommentarer</a></p>")
&gt; End if
&gt; Response.Write("<p style=""text-align: center;""><img
&gt; src=""grafik/spacer_100_50.gif"" width=""100"" height=""50"" alt=""The
Space
&gt; Between"" /></p>")
&gt; objRS.MoveNext
&gt; Loop
&gt; End if
&gt; objRS.Close
&gt; Set objRS = Nothing
&gt; %>
>
> Jeg ved sq ikke lige... Det har jeg aldrig oplevet før. Hjælp modtages
> gerne.
>
>
> Mvh. Thomas.
>
> voller@voller.dk
> http://voller.dk/
>
>


--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Voller (30-01-2003)
Kommentar
Fra : Voller


Dato : 30-01-03 11:13

> Replace(Server.HTMLEncode(objrs("Teksti")),vbCrLf,"<br>")
> Således den får linie skiftet med

Før teksten bliver sat ind i notatfeltet kører den igennem en funktion der
fjerner scripts og HTML-tags, konverterer danske tegn til HTML entiteter og
netop konverterer vbCrLf med <br />. Så den skulle være god nok.


Mvh. Thomas.



Jens Gyldenkærne Cla~ (30-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-01-03 12:16

Voller skrev:

> Før teksten bliver sat ind i notatfeltet

Bliver teksten sat ind via en webside?
Har du tjekket at hele teksten findes i notatfeltet?

Umiddelbart er det (IMO) lettere at lave fejl når data lægges fra
en hjemmeside til en database end omvendt.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Voller (30-01-2003)
Kommentar
Fra : Voller


Dato : 30-01-03 12:26

> Bliver teksten sat ind via en webside?

Ja.


> Har du tjekket at hele teksten findes i notatfeltet?

Ja.


> Umiddelbart er det (IMO) lettere at lave fejl når data lægges fra
> en hjemmeside til en database end omvendt.

Helt enig. Jeg har checket flere gange, at teksten optræder korrekt med <br
/> de steder de skal være. Teksten er præcis som den skal være i databasen,
der kommer bare kun de første 200 tegn ud.

Jeg prøvede for sjov at lave et simpelt SQL statement (SELECT Tekst FROM log
ORDER BY Id DESC) og der optrådte hele teksten korrekt ved udskrift, så der
sikkert en fejl i mit SQL statement som jeg ikke kan finde. Nogen der kan
gennemskue det? Eller kan man "overbelaste" OLEDB Jet driveren? Lyder
usansynligt, eller?

Jeg er helt på bar bund.


Mvh. Thomas.



Torben Brandt (30-01-2003)
Kommentar
Fra : Torben Brandt


Dato : 30-01-03 15:39

Voller wrote in dk.edb.internet.webdesign.serverside.asp:
> Jeg prøvede for sjov at lave et simpelt SQL statement (SELECT Tekst FROM
> log
> ORDER BY Id DESC) og der optrådte hele teksten korrekt ved udskrift, så der
> sikkert en fejl i mit SQL statement som jeg ikke kan finde. Nogen der kan
> gennemskue det? Eller kan man "overbelaste" OLEDB Jet driveren? Lyder
> usansynligt, eller?

Jeg kommer lige med et gæt:
Kan man godt gruppere (GROUP BY) efter et Notat-felt?
Hvis svaret er nej, så kunne det være at databasen skærer i feltet, idet du jo
bruger det til at gruppere efter...

Hvad sker der hvis du åbner databasen i Access og laver forespørgelsen dér?
Hvor mange tegn kommer så med?

En anden ting:
Du grupperer efter "comment.newsid, log.Id, log.Dag, log.Tid, log.Overskrift,
log.Tekst" og laver så en COUNT(comment.newsid) på det.
Er det sandsynligt at der på _samme_ newsid og Id på _samme_ dag og tid laves
en log med _samme_ overskrift og tekst?
... Hvis det ikke ville ske, så kunne du jo lade være med at gruppere efter
dem, dvs dit SQL blev noget simplere.

mvh Torben

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP ???
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Thomas Voller (30-01-2003)
Kommentar
Fra : Thomas Voller


Dato : 30-01-03 19:20

> dit SQL blev noget simplere.

Øhm, jeg mistede lige overblikket. Jeg er vist bedre til ASP end jeg er til
SQL, hvilket i virkeligheden ikke siger så meget.
Jeg prøvede at lege lidt frem og tilbage med GROUP BY delen af
SQL-sætningen, men uanset hvad jeg ændrede blev siden ked af det. Fik en
fejl som f.eks.:

Microsoft JET Database Engine (0x80040E21)
Du har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk
"PostID" som en del af en aggregatfunktion.
Default.asp, line 20

Hvor linje tyve er objRS.Open ...

Kan jeg bede dig om at prøvede at sy sådan en SQL sætning sammen, som du
mener den skal se ud?


Mvh. Thomas.




Jens Gyldenkærne Cla~ (30-01-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 30-01-03 22:36

Torben Brandt skrev:

> Kan man godt gruppere (GROUP BY) efter et Notat-felt?
> Hvis svaret er nej, så kunne det være at databasen skærer i
> feltet, idet du jo bruger det til at gruppere efter...

Det er egentlig mærkeligt at databasen ikke kommer med en fejl -
men jeg tror også at det er notat-grupperingen der giver problemer.

Jeg fandt følgende fra MS:
<http://support.microsoft.com/default.aspx?scid=kb;en-us;Q88926>

Der er kun angivet gyldighed til og med Access 97 - men det kan jo
være fordi det er en gammel artikel. Til gengæld er der også
angivet en løsning - nemlig at bruge aggregatfunktionen First eller
Last til at hente Memofeltet uden at gruppere på det.

Prøv at fjerne log.Tekst fra GROUP BY-delsætningen og erstat
log.Tekst med First(log.Tekst) i SELECT-delen.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Voller (30-01-2003)
Kommentar
Fra : Thomas Voller


Dato : 30-01-03 23:17

> Prøv at fjerne log.Tekst fra GROUP BY-delsætningen og erstat
> log.Tekst med First(log.Tekst) i SELECT-delen.

Og det er jo der teknikken bliver smuk. Det virker perfekt. Jeg takker og
bukker, jeg var virkelig løbet tør for ideer.


Tak igen,
Voller.



Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408937
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste