[ACCESS/ASP] Max grootte memoveld

Pagina: 1
Acties:

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Ik probeer voor mijn forum een post op te slaan in een Access2000 database. Daarvoor heb ik een tabel gemaakt, waar de post zelf in een veld van het type memo wordt opgeslagen. Ik heb hier ergens gelezen dat daar maximaal 65.000 tekens in kunnen, dus dat moet genoeg zijn. :)

Het probleem is echter, dat als ik mijn data op probeer te slaan, de post wordt afgekapt op een bepaald aantal tekens, volgens mij 255 ofzo, ik heb ze niet geteld. Ik dacht dat ik misschien per ongeluk een limiet had ingesteld in Access, maar daar kon ik niets vinden dat mij vreemd oogde. Ik denk dus dat ik waarschijnlijk wat fout doe in ASP, maar ik zou bij God niet weten wat...

Het invoerformulier bevat gewoon een standaard textarea voor de post. Bij de verwerking heb ik het volgende:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  query = "SELECT * FROM bericht WHERE false"
  rs.Open query, conObj, 1, 2, 1

'knipknip

      With rs
        .AddNew
        .Fields("post") = Request.Form("post")
        .Fields("gebruiker_id") = objGebruiker.GebruikersID
        .Fields("onderwerp_id") = Request.Form("onderwerp")
        .Fields("plaatsingstijd") = now
        .Fields("ip") = objGebruiker.IP
        .Update
      End With
      
      rs.Close

Volgens mij doe ik hier toch echt niets geks.... Weet iemand waar mijn fout zit?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
En je weet zeker dat het type niet op Tekst staan i.p.v. memo? 255 is nl de maximum lengte van het type Tekst.

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Gert schreef op 21 april 2004 @ 11:09:
En je weet zeker dat het type niet op Tekst staan i.p.v. memo? 255 is nl de maximum lengte van het type Tekst.
Heel zeker:
Afbeeldingslocatie: http://www.nme.nu/memo.png

Hier zie je het type en de instellingen van het "post" veld.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • CrashOne
  • Registratie: Juli 2000
  • Niet online

CrashOne

oOoOoOoOoOoOoOoOoOo

doe eens een response.write "Lengte post: " & len(Request.Form("post"))

Huur mij in als freelance SEO consultant!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
CrashOne schreef op 21 april 2004 @ 11:21:
doe eens een response.write "Lengte post: " & len(Request.Form("post"))
Gedaan. Ik heb 50x de string 1234567890 achter elkaar in die box gezet, en kreeg op de volgende pagina netjes te zien dat de lengte van de post 500 tekens was. Vervolgens gaat ie terug naar het topic, en ineens is ie gehalveerd. Toen heb ik de tekst die dan WEL in de post zat geselecteerd, en die op zijn beurt weer gepost. Aantal tekens in de post: 255. :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Ik zie ineens dat het in de database zelf wel goed gaat... Ik dacht eerst dat dat niet zo was omdat de string daar ook afgekapt leek, maar dat is kennelijk alleen in het tekstveld, bij kopieren klopt de lengte wel. Ik krijg nu dus het donkerbruine vermoeden dat de fout in het weergeven zit.

ASP.NET Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
    query = "SELECT DISTINCT bericht.id AS bericht_id, bericht.post, bericht.plaatsingstijd, " &_
              "onderwerp.titel, onderwerp.id AS onderwerp_id, onderwerp.gesloten, " &_
              "bericht.gebruiker_id, bericht.ip " &_
            "FROM bericht, gebruiker, onderwerp " &_
            "WHERE onderwerp.id = " & Request("id") & " AND bericht.onderwerp_id = onderwerp.id " &_
            "ORDER BY plaatsingstijd"
    rs.Open query, conObj, 1, 2, 1
'knipknip
  str = str & CStr(rs("post")) & vbCrLf
'knipknip
  Response.Write str

Doe ik hiermee iets verkeerds ofzo?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:32
Kan je ook niet het veldtype van die Fields in je recordset aanpassen? Misschien staat dat wel gewoon op 'tekst' ofzo.
Daarnaast vind ik het gewoon beter als je records insert mbhv een INSERT SQL statement.

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
whoami schreef op 21 april 2004 @ 11:37:
Kan je ook niet het veldtype van die Fields in je recordset aanpassen? Misschien staat dat wel gewoon op 'tekst' ofzo.
Hoe bedoel je? In ASP zelf?
edit:
Bij het afdrukken van rs("post").Type geeft ie 203 terug, wat volgens W3Schools overeen komt met adLongVarWChar, wat in Access weer gepresenteerd wordt als memo. Dus dat is het waarschijnlijk niet. ;(
whoami schreef op 21 april 2004 @ 11:37:
Daarnaast vind ik het gewoon beter als je records insert mbhv een INSERT SQL statement.
Vind ik ook, maar de kluns die onze webserver runt houdt niet echt van me. Hij heeft een of andere maffe beveiliging ingesteld waardoor een INSERT niet werkt, maar zo'n recordset insert wel... Dus tis een beetje tegen mijn zin dat ik zo werk. :)

edit:
Ik heb nog even gedacht dat het door het bewerken van de post door o.a. CStr kon komen, maar ook dat is het niet. Als ik de post gewoon afdruk middels Response.Write rs.Fields("post").Value, dan wordt ie ook afgekapt. En het kan, lijkt me, ook niet komen door de maximale lengte die een string kan hebben, want ik sla meer data op in de string waar ook de post in komt, en de rest gaat wel allemaal goed... :?

[ Voor 36% gewijzigd door NMe op 21-04-2004 12:06 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Doe je post of get in je form? :o

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Post uiteraard...Dat mag ook duidelijk zijn, de waardes worden gewoon opgeslagen in de database... :X

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • JJvG
  • Registratie: Juli 2003
  • Laatst online: 27-04 16:49
Even voor je gezocht en twee dingen gevonden:

Dit topic:
[rml][ ASP SQLServer] Textarea vullen[/rml]

en in dat topic stond een interessante link naar:
http://www.aspfaqs.com/aspfaqs/ShowFAQ.asp?FAQID=138

Voor degene die niet willen klikken of zoeken: Je memo-veld moet het laatste veld zijn in je query om te kunnen updaten.

Succes!

[ Voor 21% gewijzigd door JJvG op 21-04-2004 14:07 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Ik gebruik geen SQLServer, dus het zal wel niets uitmaken, maar ik zal het proberen...
edit:
Idd, het maakt geen verschil waar ik dat memo veld zet... ;(

[ Voor 32% gewijzigd door NMe op 21-04-2004 14:15 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Ik vond het wel een interessant probleem dus ik heb even lopen zoeken op internet en het blijkt een bekend probleem te zijn met diverse oorzaken.

In dit geval wordt het waarschijnlijk veroorzaakt door de DISTINCT. Vanwege de DISTINCT moet Access alle velden van de records vergelijken met elkaar en omdat het vergelijken van complete Memo-fields waarschijnlijk ondoenlijk is worden alleen de eerste 255 karakters vergeleken en krijg je ook alleen maar die 255 te zien.

Je kan het misschien oplossen door in een subquery zonder memo veld de distinct records te bepalen en die dan te joinen met het memo veld :?

Ik heb niet iets officieels van Microsoft kunnen vinden, maar deze informatie had ik hier vandaan:
http://groups.google.com/...26ie%3DUTF-8%26oe%3DUTF-8

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Lister schreef op 21 april 2004 @ 22:44:
Ik vond het wel een interessant probleem dus ik heb even lopen zoeken op internet en het blijkt een bekend probleem te zijn met diverse oorzaken.

In dit geval wordt het waarschijnlijk veroorzaakt door de DISTINCT. Vanwege de DISTINCT moet Access alle velden van de records vergelijken met elkaar en omdat het vergelijken van complete Memo-fields waarschijnlijk ondoenlijk is worden alleen de eerste 255 karakters vergeleken en krijg je ook alleen maar die 255 te zien.

Je kan het misschien oplossen door in een subquery zonder memo veld de distinct records te bepalen en die dan te joinen met het memo veld :?

Ik heb niet iets officieels van Microsoft kunnen vinden, maar deze informatie had ik hier vandaan:
http://groups.google.com/...26ie%3DUTF-8%26oe%3DUTF-8
Dank je! Dat was het inderdaad. :) Waarom ze zo een getruncte waarde terug geven is voor mij een raadsel, zo kost het me alleen maar extra queries. Maja MS zal wel zijn redenen hebben. :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22:23

NMe

Quia Ego Sic Dico.

Topicstarter
Ik heb nog eens zitten puzzelen op mijn query om uit te vinden waarom ik DISTINCT nodig had (zonder kwamen alle posts 3x terug). Ik kwam erachter dat ik selecteerde uit de tabel gebruiker, terwijl ik verder daaruit geen data ophaal, en ook geen vergelijkingen doe. M.a.w. hij gaf me voor elke gebruiker een keer hetzelfde record terug. Dus heb ik DISTINCT en die vermelding van de tabel gebruiker weggehaald, en nu werkt het perfect. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1