Avatar billede vagnk Juniormester
30. januar 2004 - 10:20 Der er 9 kommentarer og
3 løsninger

Lange text strenge

Jeg henter data fra et Notat-felt ind i en <textarea> for at brugeren kan rette. Derefter får jeg det rettede ind i en variabel 'txt' som jeg bygger en INSERT op omkring. Hvis teksten er mere end 511 bytes går det galt :

Error Type:
Microsoft JET Database Engine (0x80040E14)
Syntax error in INSERT INTO statement.
/net3/web/redigeropdat.asp, line 95

Hvis jeg laver en response.write med hele statementet og koiperer det over i Access query-generator går det osse galt. Men hvis jeg i query-generatoren bider strengen over i to med et '&' imellem går det godt.

Aha, tænkte jeg så snyder vi den s'gu da bare med :
    lgd = len(tekst)
    antchunk = int(lgd/500)
    rest = lgd - (antchunk*500)
    for i = 0 to antchunk - 1
        ins = ins & """" & mid(tekst, i*500+1,500) & """" & " & "
    next
    ins = ins & """" & right(tekst, rest) & """" & ", 1);"

Men nej - stadig fejl.

Er jeg helt i skoven?
Avatar billede trekkies Juniormester
30. januar 2004 - 10:37 #1
Hej vagnk

Jeg mener at at du kan gå ind i din access database og gå i Design visning, og ændre datatypen til Memo/Notat, den kan indeholde en del flere tegn end text kan

Med venlig hilsen
trekkies
Avatar billede fiskerendk Nybegynder
30. januar 2004 - 10:38 #2
Du skal ændre data feltet til at være et Notat så har du massere af plads.
Avatar billede vagnk Juniormester
30. januar 2004 - 11:18 #3
Det var måske lidt kryptisk, men i første linie bemærker jeg at det er et Notat-felt.
Avatar billede vagnk Juniormester
30. januar 2004 - 11:18 #4
Jeg har osse prøvet med et binært OLE-felt.
Avatar billede fynbohans Nybegynder
30. januar 2004 - 12:56 #5
Ved intet om ASP, men hvordan ser den SQL-sætning ud, som går galt i Access?
Avatar billede ulrikp Nybegynder
30. januar 2004 - 17:57 #6
Notat/memo kan indeholde 64K, så det må næsten være din INSERT, der er problemer med. Prøv at vis den.
Avatar billede vagnk Juniormester
30. januar 2004 - 21:14 #7
Tak for reaktionerne.

INSERT INTO redigering ( indl_id, forf_id, red_id, red_dato, indltype_id, kat_id, dato, avis_id, ca, avisdato, avisopt, oskr, komm, tekst, vis )
VALUES (54, 3, 32, '30-01-2004 08:27:47', 1, 1, '08-11-2003 21:13:00', 1, Null, "01-11-2003", 1, Null, Null, "en meget lang tekst på 500 bytes..." & "... og her kommer de sidste 49 tegn", 1);

Ovenstående er hvad der står i query-generatoren i SQL-visning. Hvis jeg går i designvisning får jeg de 15 felter med den automatiske "Udtryk99:" foran i alle felter. Hvis jeg så forsøger at gemme forespørgslen (fra design) får jeg : Syntax error in query expression '"en meget lang tekst ...'.

Hvis jeg gemmer forespørgslen uden at gå i design får jeg følgende når Access har forsøgt at lægge recorden ind: <b>Microsoft Access kan ikke tilføje alle posterne i tilføjelsesforespørgslen.</b> bla, bla 'og 1 fejl i valideringsregler.'

feltet 'tekst' er Notat de øvrige felter er tal, dato og tekst efter relevans.

Jeg har prøvet med INSERT ... space(600)... osv. Det gik fint.

Håber jeg har forklaret mig. Det er lidt svært at være den store forfatter når man kun har det lille vindue at skrive i.
Avatar billede vagnk Juniormester
30. januar 2004 - 21:18 #8
Lige en enkelt tilføjelse: Det er ligegyldigt om jeg laver det med to lange catenerede (med &) strenge eller som en lang tekst.
Avatar billede fynbohans Nybegynder
30. januar 2004 - 21:32 #9
Fejl i valideringsreglerne kan f.eks. være fordi Nulværdier ikke er tilladt for
det pågældende felt. Se Tabel/Design.
"Udtryk99:" er feltnavne, som kun eksisterer i Forespørgslen. De skal derfor være forskellige! Udtryk1:, Udtryk2: osv.
Avatar billede ulrikp Nybegynder
30. januar 2004 - 22:58 #10
Du er heller ikke helt konsekvent med ' og ". Brug ' i SQL ved indsættelse af tekststrenge i tekst- eller memofelter ('tekst'). Brug ikke ". Brug # ved indsættelse af datoer. Prøv lige om det hjælper først. Altså:

INSERT INTO redigering ( indl_id, forf_id, red_id, red_dato, indltype_id, kat_id, dato, avis_id, ca, avisdato, avisopt, oskr, komm, tekst, vis )
VALUES (54, 3, 32, #30-01-2004 08:27:47#, 1, 1, #08-11-2003 21:13:00#, 1, Null, #01-11-2003#, 1, Null, Null, 'tekst der fylder mere end 511 bytes', 1);
Avatar billede vagnk Juniormester
31. januar 2004 - 07:21 #11
fynbohans: Jeg kigger lidt nærmere på betingelserne på felterne.
ulrikp: Jeg laver det om og ser på det.

Men det bliver først i morgen. I dag skal jeg lave rigtigt menneskearbejde.
Avatar billede vagnk Juniormester
31. januar 2004 - 08:39 #12
fynbohans og ulrikp: Jeg kunne ikke dy mig. Og det er osse regnvejr. Jeg lavede de anvisninger I gav og en hel del mere. Nu virker det, men jeg aner ikke hvad fejlen var. Håber jeg har delt korrekt imellem jer?

Tusind tak - under alle omstændigheder - for hjælpen.
Vagn Kofoed
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester