webForumDet fria alternativet

Access, Memo trots det begränsning vid 255 tecken!?

Databaser & SQL

14 svar · 422 visningar · startad av Rikard

Medlem sedan dec. 199917 055 inlägg
Frågan#1

http://dev.fridlyst.nu/fridlyst.asp?action=active&l=&word=Jajjenutt#Jajjenutt

Som synes är beskrivningen avbruten vid 255 tecken. Varför?

Response.Write "<div class=""scrollbox-word""><p style=""margin-top:0px; margin-left:0x"">"
WhoFiled
Response.Write "<b>" & server.htmlencode(objRS("word")) & "</b><br>" & _
"" & replace(server.htmlencode(objRS("description")),vbCrLf,"<br>")
Medlem sedan mars 2003970 inlägg
#2

Det har inget att göra med storleken på databastypen?
Jag har för mig att small slutar vid 255 tecken.

Medlem sedan dec. 199917 055 inlägg
#3

Jo, men det är det jag menar - det är Memo eller PM som jag tror att det heter i den svenska versionen. Varför bryts den då?

Medlem sedan mars 2003970 inlägg
#4

Den kanske är liten?

Jag visste ärligt talat inte ens att det fanns en databastyp vid namn PM eller dylikt. :OO

Jag tror någon smartare får hjälpa dig med denna, men jag skulle bytt databastyp till någon större.

Medlem sedan dec. 199917 055 inlägg
#5

Memos datatyp lär begränsas vid 64000 tecken så vitt jag vet... ;)

Medlem sedan mars 20007 896 inlägg
#6

Men man kan även manuellt ställa in hur många bytes för datatypen Memo som är tillåtet ( Även för Text, men det är ointressant just nu ), om jag inte minns fel. Du har ingenting som tyder på att felet ligger på kodsidan, så ta en extra titt i databasen. :)

Medlem sedan juni 200032 967 inlägg
#7

Rikard skrev:

Memos datatyp lär begränsas vid 64000 tecken så vitt jag vet... ;)

Då vet du fel. ;)

Det går (iaf fr.o.m. Access 2000) att klämma in 1 Gb i ett memofält, förutsatt att man trycker tillräckligt hårt och inte använder access-interfacet.

Medlem sedan feb. 20013 023 inlägg
#8

Rikard: Det är någon bugg, tror jag läste om detta på webforum (?). Borde finnas en knowledge base artikel...

Edit:http://support.microsoft.com/default.aspx?scid=kb;en-us;103998&Product=acc

Medlem sedan dec. 199917 055 inlägg
#9

SPiN skrev:

Men man kan även manuellt ställa in hur många bytes för datatypen Memo som är tillåtet ( Även för Text, men det är ointressant just nu ), om jag inte minns fel. Du har ingenting som tyder på att felet ligger på kodsidan, så ta en extra titt i databasen. :)

Det som är så spännande är att detta dök upp efter att jag bytte kod och SELECT-sats. Hmmm... är det kanske där roten är?

Så här SELECT-satsen ut:

SELECT 
word, description, reason, t1.userid 
FROM 
t_word t1 
INNER JOIN 
t_score t2 
ON 
t1.wordid = t2.wordid 
GROUP BY 
t1.wordid, t1.word, t1.description, t1.public, t1.reason, t1.userid
HAVING
t1.public >= " & strPublic & " AND t1.word = '" & strWord & "' AND ABS(SUM(t2.score))<=ABS((" & strScore & "-COUNT(t2.score))*2)
ORDER BY 
word
Medlem sedan dec. 20003 887 inlägg
#10

Om du kollar i databasen direkt i Access så ser du ju om problemet ligger i Access. D.v.s. om ditt Memo-fält lagrar all information eller inte.

Du kan ju även köra frågan i Access och se om den levererar önskat resultat.

Om dessa två ovan inte visar några problem bör kruxet ligga i en inställning i providern - antar jag.

Medlem sedan juni 20022 599 inlägg
#11

http://www.webforum.nu/showthread.php?s=&forumid=22&threadid=93144

Problemet är alltså att fältet används i GROUP BY-uttrycket.

Medlem sedan dec. 199917 055 inlägg
#12

*svär över min egen inkompetens*

Okej, men kan jag få en hint om hur man kan tänkas lösa det? :)
Som jag precis skrev till @nders via MSN... Just nu känns det som att jag lägger pussel med de få SQL-kommandon jag har hunnit snappa upp. Tyvärr består pusslet i stort sett enbart av enfärgat bruna bitar med ungefär samma form.

Skulle det ev. kunna gå att lösa med en sub-fråga?
SELECT blutten blä
FROM tabell
WHERE villkoret allan = (SELECT...) ?

Medlem sedan dec. 199917 055 inlägg
#13

Det ser ut att ha löst sig med följande kod, enligt strukturen i ovanstående inlägg.

SELECT wordid, word, description, public, reason, userid 
FROM t_word t1 
WHERE t1.wordid 
    IN (SELECT t2.wordid 
        FROM t_score t2 
        GROUP BY t2.wordid 
        HAVING ABS(SUM(t2.score))<=ABS((" & strScore & "-COUNT(t2.score))*2))
    AND public >= " & strPublic & " 
    AND word = '" & strWord & "' 
ORDER BY word

Tack Niko!
Och, ser ni något onödigt, klumpigt eller rent felaktigt tar jag tacksamt emot förbättringsförslag.

Medlem sedan juni 20022 599 inlägg
#14

Kan du inte bara ta bort t1.description från GROUP BY-uttrycket. Jag förstår inte riktigt varför du vill gruppera på nåt som är en godtycklig textmassa. För det är det väl?

/red: Såg alltså inte inlägget ovan.

Medlem sedan dec. 199917 055 inlägg
#15

Gör jag det får jag följande fel:

Microsoft JET Database Engine error '80040e21'

You tried to execute a query that does not include the specified expression 'wordid' as part of an aggregate function.

/fridlyst.asp, line 256

/red: Såg inte din redigering. ;)

266 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)