[ACCESS][ASP] grote lappen tekst inserten gaat fout

Pagina: 1
Acties:

  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
Ik heb een simpele pagina waarbij de gebruiker een titel en een tekst kan invullen in een formulier. Bij een Submit wordt dit in de ACCESS97 database gestopt via een INSERT query met ASP.
Dit gaat bijna altijd goed. Bijna; want als ik nou een Word document pak van 9 pagina's, ik selecteer alles, plak dit in de text-area en druk op Submit, krijg ik een foutmelding
[Microsoft][ODBC Microsoft Access 97 Driver] Syntax error in INSERT INTO statement.
Maar er zit geen fout in de INSERT query. Ik heb zelfs een server.HTMLencode om het request("tekst") gezet, maar dat mocht niet baten.

Klinkt iemand dit bekend in de oren?

  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

Je weet dat een memo-veld in acccess maximaal 65.535 tekens kan bevatten?
Je zou voor de zekerheid dus eerst eens met de Len() functie kunnen controleren wat het aantal karakters is van de input. ;)

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • jitze
  • Registratie: Juni 2001
  • Laatst online: 30-08-2023
Kijk eens naar de gegevenstype van het veld in de access database.

Een tekst veld heeft een maximale lengte van 255. tekens.
Een Memo veld heeft een maximale lengte van 65.535 tekens.

Waarschijnlijk zit je probleem daar in....

specs


  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
Het aantal characters (inclusief spaties) is ongeveer 35.000 en het is een MEMO-field dus daar mag het niet aan liggen. Het stomme is, dat als ik een gedeelte van het word-document knip en plak, het wel gewoon werkt.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Zit er toevallig een ' in de tekst?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • DeverauX
  • Registratie: Februari 2002
  • Niet online

DeverauX

Focus is everything

gorgi_19 schreef op 02 december 2003 @ 08:50:
Zit er toevallig een ' in de tekst?
@TS: Omdat je ook al aangaf server.htmlEncode() te gebruiken was ik er eigenlijk vanuit gegaan dat je de single quotes er ook wel uit zou filteren.
Als dit niet het geval is is de kans groot dat dit de oorzaak van je probleem is.
ASP:
1
tekst = Replace(Request.form("tekst"), "'", "''")

Daarnaast is het ook een goede gewoonte de collectie te specificeren in je Request. (dus request.form) ;)

[ Voor 21% gewijzigd door DeverauX op 02-12-2003 09:02 ]

...whatever was distasteful or unpleasant or uncomfortable or painful - music could always soothe that.
All you have to do is reach out to beauty.
Quincy Jones


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Server.HTMLEncode is imho alleen handig ter voorkoming van Cross Site Scripting attacks, imho :P

(en het voorkomen van vernaggelen van je layout). Een database zou, zowel met als zonder SErver.HTMLEncode, de boel moeten slikken.... :P

Maar kijk anders ook eens naar parametrized queries.

[ Voor 26% gewijzigd door gorgi_19 op 02-12-2003 09:04 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
De Replace(Request.form("tekst"), "'", "''") gebruikte ik al en mocht niet baten.
En request.form weet ik wel, maar soms ben ik een beetje lui :P
DeverauX schreef op 02 december 2003 @ 09:02:
[...]

@TS: Omdat je ook al aangaf server.htmlEncode() te gebruiken was ik er eigenlijk vanuit gegaan dat je de single quotes er ook wel uit zou filteren.
Als dit niet het geval is is de kans groot dat dit de oorzaak van je probleem is.
ASP:
1
tekst = Replace(Request.form("tekst"), "'", "''")

Daarnaast is het ook een goede gewoonte de collectie te specificeren in je Request. (dus request.form) ;)

  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
Ik wou dat parametrized query wel gebruiken, maar het script bleef hangen op:
SqlCommand1.Parameters.Add ("@p_naam", SqlDbType.Varchar)

foutmelding: Cannot user parenthesis when calling a sub
gorgi_19 schreef op 02 december 2003 @ 09:03:
Server.HTMLEncode is imho alleen handig ter voorkoming van Cross Site Scripting attacks, imho :P

(en het voorkomen van vernaggelen van je layout). Een database zou, zowel met als zonder SErver.HTMLEncode, de boel moeten slikken.... :P

Maar kijk anders ook eens naar parametrized queries.

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. je moet hem wel aanpassen voor MS Access natuurlijk.. :P De methodiek volgens SQL Server werkt niet.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
Ok, om het nog wat leuker te maken. De foutmelding geeft ie alleen op de remote-server. Als ik hetzelfde lokaal uittest werkt het prima!! En dat terwijl ik precies dezelfde database hier en daar gebruik (en natuurlijk ook hetzelfde script). Het lijkt er dus op dat het aan een serverinstelling ligt.

ps.
De remote-server is een NT4-bak met een ACCESS97 database. De mijne is een 2000-bak ook met ACCESS97.

[ Voor 16% gewijzigd door Dr.Dokter op 02-12-2003 09:44 ]


  • Dr.Dokter
  • Registratie: Januari 2001
  • Laatst online: 26-05 13:28
Zou het een beperking kunnen zijn van de IIS onder NT4?

  • 4of9
  • Registratie: Maart 2000
  • Laatst online: 15-04 15:52
heb je de Query al naar het scherm geprint?

Aspirant Got Pappa Lid | De toekomst is niet meer wat het geweest is...


  • Remco
  • Registratie: Januari 2001
  • Laatst online: 15:56
4of9 schreef op 03 december 2003 @ 09:13:
heb je de Query al naar het scherm geprint?
En insert hem dan even handmatig van de server.
Dan tackle je in ieder geval al een heel gedeelte.

The best thing about UDP jokes is that I don't care if you get them or not.


  • Hark_k
  • Registratie: September 2002
  • Laatst online: 14:36
Ik heb eigenlijk precies hetzelfde probleem met m'n database (Access 2000 en XP). Ik ben er al de hele middag mee bezig :( Ik kan een groot bericht wel toevoegen, als ik het dan later wil wijzigen kan dat ook, maar bij een volgende keer wordt de database corrupt. Het toevoegen en wijzigen van kleine dingen in de database lijkt wel goed te gaan.

Vevida zegt dat de data gewijzigd kan worden met:

DTBrs.fields("Nieuwsposter") = Request.Form("Nieuwsposter")
DTBrs.fields("Datum") = Request.Form("Datum")
enz.
DTBrs.Update
DTBrs.Close

Het heeft allemaal ook prima gewerkt. Ik krijg een 'unrecognizable database format' en bij het gebruiken van UPDATE nieuws SET Nieuwsposter = 'MK' enz. krijg ik dat de Search key niet gevonden kan worden, oftewel, de database ligt weer in puin ;( Ook is er geen ' of " aanwezig.

Enig idee wat dit kan zijn?

[ Voor 19% gewijzigd door Hark_k op 10-12-2003 17:29 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Doe eens een compact and repair database in MS Access.

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hark_k
  • Registratie: September 2002
  • Laatst online: 14:36
Het repareren van de database is geen probleem, maar dan kan ik weer maar 1x iets wijzigen. Dat schiet niet op. De onbekende oorzaak moet aangepakt worden :)

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Marco K schreef op 10 december 2003 @ 21:10:
Het repareren van de database is geen probleem, maar dan kan ik weer maar 1x iets wijzigen. Dat schiet niet op. De onbekende oorzaak moet aangepakt worden :)
Mja.. eerst kijken wat er precies gebeurd, daarna kijken naar de oorzaken..

Als ik je dus goed begrijp: Het stukje code zorgt er dus voor dat je database corrupted raakt? ALs je hem daarna repareert, doet hij het weer 1 keer, raakt corrupted en is die weer kapot?

[ Voor 10% gewijzigd door gorgi_19 op 10-12-2003 21:21 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hark_k
  • Registratie: September 2002
  • Laatst online: 14:36
Ja precies, na het repareren van de database kan ik 1 keer dat grote bericht (5180 tekens in een memo btw) succesvol wijzigen, maar als ik het nog een keer wijzig dan ontstaan er problemen.

Na de eerste keer wijzigen zie ik niets vreemds aan de database. Het vreemde is ook dat ik die problemen niet heb bij wat kleinere berichten. Erg raar.

Bedankt alvast iig :)

Edit: lama, n.v.t.

[ Voor 75% gewijzigd door Hark_k op 10-12-2003 21:33 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Doe eens een standaard SQL uitvoeren, ipv via een recordse, in de vorm van:

SQL:
1
Update Tabelnaam SET Niewposter = '" & Request.Form("Nieuwsposter") & "'

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hark_k
  • Registratie: September 2002
  • Laatst online: 14:36
Helaas werkt dit ook niet, zie ook m'n eerste bericht:

bij het gebruiken van UPDATE nieuws SET Nieuwsposter = 'MK' enz. krijg ik dat de Search key niet gevonden kan worden. De database ligt dan dus weer in puin.

Nog iets wat ik vergeten ben te zeggen, volgens mij heb ik vanmiddag nog wel geprobeerd om alleen nieuwsposter en datum te wijzigen, dus niet het grote bericht zelf. Dat werkte volgens mij wel, maar ik ga het nu direct even controleren.

Edit: yep, klopt. Als ik alles behalve het nieuwsbericht zelf update (d.m.v. DTBrs.fields("Nieuwsitem") = Request.Form("Nieuwsitem",.....") even weg te halen) dan werkt het goed.
Als ik de regel weer toevoeg en dus ook het nieuwsbericht > 1 keer wijzig dan krijg ik weer een unrecognizable database format.

[ Voor 32% gewijzigd door Hark_k op 10-12-2003 21:57 ]


  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 13:28

gorgi_19

Kruimeltjes zijn weer op :9

Al geprobeerd ook om de nieuwste versie van MDAC er op te zetten?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • Hark_k
  • Registratie: September 2002
  • Laatst online: 14:36
Probleem is dat m'n site gehost wordt bij Vevida, en ik dus helaas zelf geen MDAC kan installeren. Ik ga hen wel ff mailen of zij dit bekend voorkomt. Tnx iig! :)
Pagina: 1